Merge to trunk. Fixing tab flag 1 filtering when there is only one portal. NIHVIVO-987
This commit is contained in:
parent
ef3222d0d1
commit
5671656d5d
6 changed files with 24 additions and 14 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -31,13 +31,14 @@ import edu.cornell.mannlib.vitro.webapp.utils.FlagMathUtils;
|
|||
*/
|
||||
public class FiltersForTabs {
|
||||
public static final UnaryFunctor<Individual,String> firstLetterOfName = new FirstLetterOfEnt();
|
||||
public static UnaryFunctor<Individual,Boolean> getFilterForTab( final Tab tab, final Portal portalThatTabIsIn ){
|
||||
public static UnaryFunctor<Individual,Boolean> getFilterForTab( final Tab tab, final Portal portalThatTabIsIn, final boolean isFlag1Filtering ){
|
||||
|
||||
DateTime now = new DateTime();
|
||||
UnaryFunctor<Individual,Boolean> entFilter = getTimeFilter(tab, now);
|
||||
UnaryFunctor<Individual,Boolean> tabPortalFilter = getPortalFilter(tab);
|
||||
|
||||
if( tabPortalFilter != null &&
|
||||
|
||||
if( isFlag1Filtering &&
|
||||
tabPortalFilter != null &&
|
||||
portalThatTabIsIn != null &&
|
||||
portalThatTabIsIn.isFlag1Filtering() )
|
||||
entFilter = AdaptorFunctors.and( entFilter, tabPortalFilter );
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -59,7 +59,7 @@ public class FiltersForTabsTest {
|
|||
tab.setPortalId(7);
|
||||
|
||||
UnaryFunctor<Individual,Boolean> 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));
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue