diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/TabDaoFiltering.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/TabDaoFiltering.java index 35b0750f1..b18aebcd6 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/TabDaoFiltering.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/TabDaoFiltering.java @@ -10,6 +10,7 @@ import java.util.Set; import edu.cornell.mannlib.vitro.webapp.beans.ApplicationBean; import edu.cornell.mannlib.vitro.webapp.beans.Tab; +import edu.cornell.mannlib.vitro.webapp.dao.ApplicationDao; import edu.cornell.mannlib.vitro.webapp.dao.PortalDao; import edu.cornell.mannlib.vitro.webapp.dao.TabDao; import edu.cornell.mannlib.vitro.webapp.dao.filtering.filters.FiltersForTabs; @@ -22,10 +23,12 @@ public class TabDaoFiltering extends BaseFiltering implements TabDao{ final TabDao innerDao; final VitroFilters filters; private PortalDao innerPortalDao; - - public TabDaoFiltering(TabDao tabDao, PortalDao portalDao, VitroFilters filters) { + private ApplicationDao applicationDao; + + public TabDaoFiltering(TabDao tabDao, PortalDao portalDao, ApplicationDao applicationDao, VitroFilters filters) { this.innerPortalDao = portalDao; this.innerDao = tabDao; + this.applicationDao = applicationDao; this.filters = filters; } @@ -195,13 +198,15 @@ public class TabDaoFiltering extends BaseFiltering implements TabDao{ if( in.grabEntityFactory() == null ) return in; else{ + boolean flag1Filtering = applicationDao.isFlag1Active(); //( !applicationDao.isFlag1Active() || innerPortalDao.getAllPortals().size() == 1 ); + /* NOTICE: this does not use the individualFilter that was passed in the constructor it uses one based on the parameters of the tab. */ boolean ascendingSort = !"desc".equalsIgnoreCase(in.getEntitySortDirection()); TabEntityFactoryFiltering filteringFact = new TabEntityFactoryFiltering( in.grabEntityFactory(), - FiltersForTabs.getFilterForTab( in, innerPortalDao.getPortal(in.getPortalId())), + FiltersForTabs.getFilterForTab( in, innerPortalDao.getPortal(in.getPortalId()), flag1Filtering ), new VitroFilterUtils.EntitySortTransform( in.getEntitySortField(),ascendingSort)); in.placeEntityFactory(filteringFact); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/WebappDaoFactoryFiltering.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/WebappDaoFactoryFiltering.java index 4b158e4be..22144b3a3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/WebappDaoFactoryFiltering.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/WebappDaoFactoryFiltering.java @@ -131,7 +131,7 @@ public class WebappDaoFactoryFiltering implements WebappDaoFactory { public TabDao getTabDao() { if( filteringTabDao == null) filteringTabDao = - new TabDaoFiltering(innerWebappDaoFactory.getTabDao(),innerWebappDaoFactory.getPortalDao(),filters); + new TabDaoFiltering(innerWebappDaoFactory.getTabDao(),innerWebappDaoFactory.getPortalDao(),innerWebappDaoFactory.getApplicationDao(),filters); return filteringTabDao; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/filters/FiltersForTabs.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/filters/FiltersForTabs.java index fdbb2bbf3..e92ae905c 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/filters/FiltersForTabs.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/filters/FiltersForTabs.java @@ -31,13 +31,14 @@ import edu.cornell.mannlib.vitro.webapp.utils.FlagMathUtils; */ public class FiltersForTabs { public static final UnaryFunctor firstLetterOfName = new FirstLetterOfEnt(); - public static UnaryFunctor getFilterForTab( final Tab tab, final Portal portalThatTabIsIn ){ + public static UnaryFunctor getFilterForTab( final Tab tab, final Portal portalThatTabIsIn, final boolean isFlag1Filtering ){ DateTime now = new DateTime(); UnaryFunctor entFilter = getTimeFilter(tab, now); UnaryFunctor tabPortalFilter = getPortalFilter(tab); - - if( tabPortalFilter != null && + + if( isFlag1Filtering && + tabPortalFilter != null && portalThatTabIsIn != null && portalThatTabIsIn.isFlag1Filtering() ) entFilter = AdaptorFunctors.and( entFilter, tabPortalFilter ); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ApplicationDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ApplicationDaoJena.java index c55871d44..8b2a018f0 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ApplicationDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ApplicationDaoJena.java @@ -22,15 +22,16 @@ public class ApplicationDaoJena extends JenaBaseDao implements ApplicationDao { public boolean isFlag1Active() { + boolean somePortalIsFiltering=false; if (portalCount == null) { boolean active = false; for (Portal p : getWebappDaoFactory().getPortalDao().getAllPortals()) { if (p.isFlag1Filtering()) { - return true; + somePortalIsFiltering = true; } } - } - return false; + } + return somePortalIsFiltering && getWebappDaoFactory().getPortalDao().getAllPortals().size() > 1; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/JenaDataSourceSetup.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/JenaDataSourceSetup.java index d8c57845e..637ec7809 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/JenaDataSourceSetup.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/JenaDataSourceSetup.java @@ -76,7 +76,7 @@ public class JenaDataSourceSetup extends JenaDataSourceSetupBase implements java WebappDaoFactory wadf = new WebappDaoFactoryJena(unionOms, defaultNamespace, null, null); sce.getServletContext().setAttribute("webappDaoFactory",wadf); - ApplicationBean appBean = getApplicationBeanFromOntModel(memModel); + ApplicationBean appBean = getApplicationBeanFromOntModel(memModel,wadf); if (appBean != null) { sce.getServletContext().setAttribute("applicationBean", appBean); } @@ -114,7 +114,7 @@ public class JenaDataSourceSetup extends JenaDataSourceSetupBase implements java public void contextDestroyed(ServletContextEvent sce) { } - private ApplicationBean getApplicationBeanFromOntModel(OntModel ontModel) { + private ApplicationBean getApplicationBeanFromOntModel(OntModel ontModel,WebappDaoFactory wadf) { ClosableIterator appIt = ontModel.listIndividuals(ResourceFactory.createResource(VitroVocabulary.APPLICATION)); try { if (appIt.hasNext()) { @@ -129,6 +129,9 @@ public class JenaDataSourceSetup extends JenaDataSourceSetupBase implements java try { appBean.setMaxSharedPortalId(Integer.decode( ((Literal)appInd.getPropertyValue(ResourceFactory.createProperty(VitroVocabulary.APPLICATION_MAXSHAREDPORTALID))).getLexicalForm())); } catch (Exception e) { /* ignore bad value */} + if( ! wadf.getApplicationDao().isFlag1Active() ){ + appBean.setMaxPortalId(1); + } return appBean; } else { return null; diff --git a/webapp/test/edu/cornell/mannlib/vitro/webapp/utils/FiltersForTabsTest.java b/webapp/test/edu/cornell/mannlib/vitro/webapp/utils/FiltersForTabsTest.java index d7a7904d2..30ffc49e0 100644 --- a/webapp/test/edu/cornell/mannlib/vitro/webapp/utils/FiltersForTabsTest.java +++ b/webapp/test/edu/cornell/mannlib/vitro/webapp/utils/FiltersForTabsTest.java @@ -59,7 +59,7 @@ public class FiltersForTabsTest { tab.setPortalId(7); UnaryFunctor testFn = - FiltersForTabs.getFilterForTab(tab, new Portal()); + FiltersForTabs.getFilterForTab(tab, new Portal(), false); Assert.assertTrue ( testFn!=null); @@ -75,7 +75,7 @@ public class FiltersForTabsTest { Assert.assertTrue( testFn.fn( ind)); tab.setFlag2Mode("OMIT"); - testFn = FiltersForTabs.getFilterForTab(tab, new Portal()); + testFn = FiltersForTabs.getFilterForTab(tab, new Portal(), false); Assert.assertFalse( testFn.fn(ind));