From a89c1550d09341f54caa1bc83b69a2761c13ba3b Mon Sep 17 00:00:00 2001 From: bdc34 Date: Sat, 24 Jul 2010 21:37:23 +0000 Subject: [PATCH] Merge To trunk. Adding filtering of Positions in past. NIHVIVO-984 --- productMods/WEB-INF/web.xml | 1298 +++++++++++++++++ .../setup/VivoMergedListFilteringSetup.java | 116 ++ 2 files changed, 1414 insertions(+) create mode 100644 productMods/WEB-INF/web.xml create mode 100644 src/edu/cornell/mannlib/vitro/webapp/servlet/setup/VivoMergedListFilteringSetup.java diff --git a/productMods/WEB-INF/web.xml b/productMods/WEB-INF/web.xml new file mode 100644 index 00000000..9247fcc9 --- /dev/null +++ b/productMods/WEB-INF/web.xml @@ -0,0 +1,1298 @@ + + + + + + + + + + + + + + + jdbc/vitro/connectionType + + + java.lang.String + PROPERTIES_FILE_POOL + + + + + jdbc/vitro/namedDS + + java.lang.String + mySharedDBPool + + + + + + + + edu.cornell.mannlib.vitro.webapp.servlet.setup.DefaultThemeSetup + + + + + edu.cornell.mannlib.vitro.webapp.servlet.setup.VitroJenaModelMakerSetup + + + + + + edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaPersistentDataSourceSetup + + + + + + + + + + + + edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetup + + + + + + + edu.cornell.mannlib.vitro.webapp.servlet.setup.UpdateKnowledgeBase + + + + + edu.cornell.mannlib.vitro.webapp.filestorage.backend.FileStorageSetup + + + + + + + + + edu.cornell.mannlib.vitro.webapp.servlet.setup.UpdateUploadedFiles + + + + + + edu.cornell.mannlib.vitro.webapp.servlet.setup.AttachSubmodels + + + + + + + + + edu.cornell.mannlib.vitro.webapp.servlet.setup.PelletReasonerSetup + + + + + + + + + + + edu.cornell.mannlib.vitro.webapp.search.lucene.LuceneSetup + + + + + edu.cornell.mannlib.vitro.webapp.auth.policy.setup.VivoPolicySetup + + + + + + + edu.cornell.mannlib.vitro.webapp.auth.identifier.UserToIndIdentifierFactorySetup + + + + + edu.cornell.mannlib.vitro.webapp.auth.policy.setup.EditorEditingPolicySetup + + + + + edu.cornell.mannlib.vitro.webapp.auth.policy.setup.CuratorEditingPolicySetup + + + + + edu.cornell.mannlib.vitro.webapp.auth.policy.setup.DbAdminEditingPolicySetup + + + + + + edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreeMarkerSetup + + + + + + + org.apache.commons.fileupload.servlet.FileCleanerCleanup + + + + + + + + + + edu.cornell.mannlib.vitro.webapp.servlet.setup.VivoMergedListFilteringSetup + + + + + + + Character Set Encoding Filter + edu.cornell.mannlib.vitro.webapp.filters.CharsetEncodingFilter + + + Character Set Encoding Filter + /* + + + JSession Strip Filter + edu.cornell.mannlib.vitro.webapp.filters.JSessionStripFilter + + + JSession Strip Filter + /* + + + + URL Rewriter Filter + edu.cornell.mannlib.vitro.webapp.filters.URLRewriterFilter + + + URL Rewriter Filter + /* + + + Portal Picker Filter + edu.cornell.mannlib.vitro.webapp.filters.PortalPickerFilter + + + Portal Picker Filter + /* + + + + VitroRequestPrep + edu.cornell.mannlib.vitro.webapp.filters.VitroRequestPrep + + + VitroRequestPrep + /* + request + forward + + + + + + + + + + jsp + org.apache.jasper.servlet.JspServlet + + fork + false + + + xpoweredBy + false + + + trimSpaces + true + + 3 + + + + IndexController + edu.cornell.mannlib.vitro.webapp.search.controller.IndexController + + + IndexController + /SearchIndex + + + + + + TestController + edu.cornell.mannlib.vitro.webapp.controller.TestController + + + TestController + /test + + + + + fetch + edu.cornell.mannlib.vitro.webapp.QueryServlet + + + + + AboutController + edu.cornell.mannlib.vitro.webapp.controller.freemarker.AboutController + + + AboutController + /about + + + + FreeMarkerTestController + edu.cornell.mannlib.vitro.webapp.controller.freemarker.TestController + + + FreeMarkerTestController + /freemarkertest + + + + FakeSelfEditController + edu.cornell.mannlib.vitro.webapp.controller.FakeSelfEditController + + + FakeSelfEditController + /admin/fakeselfedit + + + + SiteAdminController + edu.cornell.mannlib.vitro.webapp.controller.edit.SiteAdminController + + + SiteAdminController + /siteAdmin + + + SiteAdminController + /siteAdmin.jsp + + + + ImageUploadController + edu.cornell.mannlib.vitro.webapp.controller.freemarker.ImageUploadController + + + ImageUploadController + /uploadImages + + + + FlagUpdateController + edu.cornell.mannlib.vitro.webapp.controller.edit.FlagUpdateController + + + FlagUpdateController + /flagUpdate + + + + SitemapIndexController + edu.cornell.mannlib.vitro.webapp.controller.SitemapIndexController + + + SitemapIndexController + /sitemap.xml + + + + RDFUploadFormController + edu.cornell.mannlib.vitro.webapp.controller.jena.RDFUploadFormController + + + RDFUploadFormController + /uploadRDFForm + + + + RDFUploadController + edu.cornell.mannlib.vitro.webapp.controller.jena.RDFUploadController + + + RDFUploadController + /uploadRDF + + + + JenaIngestController + edu.cornell.mannlib.vitro.webapp.controller.jena.JenaIngestController + + + JenaIngestController + /ingest + + + + JenaExportController + edu.cornell.mannlib.vitro.webapp.controller.jena.JenaExportController + + + JenaExportController + /export/* + + + + JenaXMLFileUpload + edu.cornell.mannlib.vitro.webapp.controller.jena.JenaXMLFileUpload + + + JenaXMLFileUpload + /jenaXmlFileUpload/* + + + + OwlImportController + edu.cornell.mannlib.vitro.webapp.owl.OwlImportController + + + OwlImportController + /owl + + + + OwlImportServlet + edu.cornell.mannlib.vitro.webapp.owl.ProtegeOwlImportServlet + + + OwlImportServlet + /importOwl + + + + JenaAdminServlet + edu.cornell.mannlib.vitro.webapp.controller.jena.JenaAdminActions + + + JenaAdminServlet + /jenaAdmin + + + + EditFrontController + edu.cornell.mannlib.vedit.controller.EditFrontController + + + EditFrontController + /editForm + + + + OperationController + edu.cornell.mannlib.vedit.controller.OperationController + + + OperationController + /doEdit + + + + EntityEditController + edu.cornell.mannlib.vitro.webapp.controller.edit.EntityEditController + + + EntityEditController + /entityEdit + + + + VclassEditController + edu.cornell.mannlib.vitro.webapp.controller.edit.VclassEditController + + + VclassEditController + /vclassEdit + + + + Classes2ClassesOperationController + edu.cornell.mannlib.vitro.webapp.controller.edit.Classes2ClassesOperationController + + + Classes2ClassesOperationController + /classes2ClassesOp + + + + Properties2PropertiesOperationController + edu.cornell.mannlib.vitro.webapp.controller.edit.Properties2PropertiesOperationController + + + Properties2PropertiesOperationController + /props2PropsOp + + + + NamespacePrefixOperationController + edu.cornell.mannlib.vitro.webapp.controller.edit.NamespacePrefixOperationController + + + NamespacePrefixOperationController + /namespacePrefixOp + + + + RefactorOperationController + edu.cornell.mannlib.vitro.webapp.controller.edit.RefactorOperationController + + + RefactorOperationController + /refactorOp + + + + IndividualTypeOperationController + edu.cornell.mannlib.vitro.webapp.controller.edit.IndividualTypeOperationController + + + IndividualTypeOperationController + /individualTypeOp + + + + Tabs2TypesOperationController + edu.cornell.mannlib.vitro.webapp.controller.edit.Tabs2TypesOperationController + + + Tabs2TypesOperationController + /tabs2TypesOp + + + + TabIndividualRelationOperationController + edu.cornell.mannlib.vitro.webapp.controller.edit.TabIndividualRelationOperationController + + + TabIndividualRelationOperationController + /tabIndividualRelationOp + + + + TabHierarchyOperationController + edu.cornell.mannlib.vitro.webapp.controller.edit.TabHierarchyOperationController + + + TabHierarchyOperationController + /doTabHierarchyOperation + + + + DatapropEditController + edu.cornell.mannlib.vitro.webapp.controller.edit.DatapropEditController + + + DatapropEditController + /datapropEdit + + + + + KeywordEditController + edu.cornell.mannlib.vitro.webapp.controller.edit.KeywordEditController + + + KeywordEditController + /keywordEdit + + + + TabEditController + edu.cornell.mannlib.vitro.webapp.controller.edit.TabEditController + + + TabEditController + /tabEdit + + + + UserEditController + edu.cornell.mannlib.vitro.webapp.controller.edit.UserEditController + + + UserEditController + /userEdit + + + + OntologyEditController + edu.cornell.mannlib.vitro.webapp.controller.edit.OntologyEditController + + + OntologyEditController + /ontologyEdit + + + + PropertyEditController + edu.cornell.mannlib.vitro.webapp.controller.edit.PropertyEditController + + + PropertyEditController + /propertyEdit + + + + PortalEditController + edu.cornell.mannlib.vitro.webapp.controller.edit.PortalEditController + + + PortalEditController + /portalEdit + + + + EntityRetryController + edu.cornell.mannlib.vitro.webapp.controller.edit.EntityRetryController + + + EntityRetryController + /entity_retry + + + + VclassRetryController + edu.cornell.mannlib.vitro.webapp.controller.edit.VclassRetryController + + + VclassRetryController + /vclass_retry + + + + DatatypeRetryController + edu.cornell.mannlib.vitro.webapp.controller.edit.DatatypeRetryController + + + DatatypeRetryController + /datatype_retry + + + + AllTabsForPortalListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.AllTabsForPortalListingController + + + AllTabsForPortalListingController + /listTabs + + + + AllClassGroupsListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.AllClassGroupsListingController + + + AllClassGroupsListingController + /listGroups + + + + PropertyGroupsListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.PropertyGroupsListingController + + + PropertyGroupsListingController + /listPropertyGroups + + + + OntologiesListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.OntologiesListingController + + + OntologiesListingController + /listOntologies + + + + NamespacesListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.jena.NamespacesListingController + + + NamespacesListingController + /listNamespaces + + + + RestrictionsListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.jena.RestrictionsListingController + + + RestrictionsListingController + /listRestrictions + + + + RestrictionOperationController + edu.cornell.mannlib.vitro.webapp.controller.edit.RestrictionOperationController + + + RestrictionOperationController + /addRestriction + + + + PortalsListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.PortalsListingController + + + PortalsListingController + /listPortals + + + + UsersListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.UsersListingController + + + UsersListingController + /listUsers + + + + StatementChangeListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.jena.StatementChangeListingController + + + StatementChangeListingController + /statementHistory + + + + WriteOutChangesController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.jena.WriteOutChangesController + + + WriteOutChangesController + /writeOutChanges + + + + VClassWebappsListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.VClassWebappsListingController + + + VClassWebappsListingController + /listVClassWebapps + + + + IndividualsListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.IndividualsListingController + + + IndividualsListingController + /listIndividuals + + + + + ClassHierarchyListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.ClassHierarchyListingController + + + ClassHierarchyListingController + /showClassHierarchy + + + + ObjectPropertyHierarchyListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.ObjectPropertyHierarchyListingController + + + ObjectPropertyHierarchyListingController + /showObjectPropertyHierarchy + + + + DataPropertyHierarchyListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.DataPropertyHierarchyListingController + + + DataPropertyHierarchyListingController + /showDataPropertyHierarchy + + + + PropertyWebappsListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.PropertyWebappsListingController + + + PropertyWebappsListingController + /listPropertyWebapps + + + + DatatypePropertiesListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.DatatypePropertiesListingController + + + DatatypePropertiesListingController + /listDatatypeProperties + + + + DataPropertyStatementListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.DataPropertyStatementListingController + + + DataPropertyStatementListingController + /listDataPropertyStatements + + + + ObjectPropertyStatementListingController + edu.cornell.mannlib.vitro.webapp.controller.edit.listing.ObjectPropertyStatementListingController + + + ObjectPropertyStatementListingController + /listObjectPropertyStatements + + + + EntityListController + edu.cornell.mannlib.vitro.webapp.controller.EntityListController + + + EntityListController + /entitylist + + + + IndividualListController + edu.cornell.mannlib.vitro.webapp.controller.freemarker.IndividualListController + + + IndividualListController + /individuallist + + + + SearchController + edu.cornell.mannlib.vitro.webapp.search.controller.PagedSearchController + + + SearchController + /search + + + + SearchController + /search.jsp + + + SearchController + /fedsearch + + + SearchController + /searchcontroller + + + + AutocompleteController + edu.cornell.mannlib.vitro.webapp.search.controller.AutocompleteController + + + AutocompleteController + /autocomplete + + + AutocompleteController + /populateselect + + + + AdminController + edu.cornell.mannlib.vitro.webapp.controller.AdminController + + + AdminController + /adminCon + + + + TermsOfUseController + edu.cornell.mannlib.vitro.webapp.controller.freemarker.TermsOfUseController + + + TermsOfUseController + /termsOfUse + + + + ContactFormController + edu.cornell.mannlib.vitro.webapp.controller.freemarker.ContactFormController + + + ContactFormController + /contact + + + + JSON Service + edu.cornell.mannlib.vitro.webapp.controller.JSONServlet + + + JSON Service + /dataservice + + + + TabEntitiesController + edu.cornell.mannlib.vitro.webapp.controller.TabEntitiesController + + + TabEntitiesController + /TabEntitiesController + + + + + TabController + edu.cornell.mannlib.vitro.webapp.controller.TabController + + + TabController + /index.jsp + + + + + + EntityMergedPropertyListController + edu.cornell.mannlib.vitro.webapp.controller.EntityMergedPropertyListController + + + EntityMergedPropertyListController + /entityMergedPropList + + + + DashboardPropertyListController + edu.cornell.mannlib.vitro.webapp.controller.DashboardPropertyListController + + + DashboardPropertyListController + /dashboardPropList + + + + dwr-invoker + uk.ltd.getahead.dwr.DWRServlet + + debug + true + + + logLevel + DEBUG + + + + dwr-invoker + /dwr/* + + + + + sendmail + edu.cornell.mannlib.vitro.webapp.controller.ContactMailServlet + 5 + + + sendmail + /sendmail + + + + + sendMail + edu.cornell.mannlib.vitro.webapp.controller.freemarker.ContactMailController + 5 + + + sendMail + /submitFeedback + + + + mailusers + edu.cornell.mannlib.vitro.webapp.controller.MailUsersServlet + 5 + + + + entity + edu.cornell.mannlib.vitro.webapp.controller.EntityController + + + + updateEntityFlags + edu.cornell.mannlib.vitro.webapp.UpdateEntityFlagServlet + + + + authenticate + edu.cornell.mannlib.vitro.webapp.controller.edit.Authenticate + + + + logout + edu.cornell.mannlib.vitro.webapp.controller.edit.Logout + + properties + WEB-INF/classes/formbeans/Login_forms.properties + + + + + + browsecontroller + edu.cornell.mannlib.vitro.webapp.controller.freemarker.BrowseController + 5 + + + browsecontroller + /browse + + + + pubsbyorg + edu.cornell.mannlib.vitro.webapp.controller.vclass.PubsByDepartmentServlet + + workspaceDir + /usr/local/services/vivo/logs + + + + + + coauthors + edu.cornell.mannlib.vitro.webapp.controller.vclass.CoAuthorServlet + + workspaceDir + /usr/local/services/vivo/logs + + + + + + generic_create + edu.cornell.mannlib.vitro.webapp.GenericDBCreate + + + + + serveFiles + edu.cornell.mannlib.vitro.webapp.filestorage.serving.FileServingServlet + + + serveFiles + /file/* + + + + generic_editprep + edu.cornell.mannlib.vitro.webapp.GenericDBEditPrep + + + + generic_update + edu.cornell.mannlib.vitro.webapp.GenericDBUpdate + + + + generic_delete + edu.cornell.mannlib.vitro.webapp.GenericDBDelete + + + + SparqlQuery + edu.cornell.mannlib.vitro.webapp.controller.SparqlQueryServlet + + + + SparqlQuery + /admin/sparqlquery + + + + + + VisualizationController + edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationController + + + + VisualizationController + /admin/visQuery + + + + authtest + edu.cornell.mannlib.vitro.webapp.auth.AuthTestController + + + authtest + /authtest + + + + primitiveRdfEdit + edu.cornell.mannlib.vitro.webapp.controller.edit.PrimitiveRdfEdit + + + primitiveRdfEdit + /edit/primitiveRdfEdit + + + + primitiveDelete + edu.cornell.mannlib.vitro.webapp.controller.edit.PrimitiveDelete + + + primitiveDelete + /edit/primitiveDelete + + + + + fetch + /fetch + + + mailusers + /mailusers + + + entity + /entity + + + entity + /entity/* + + + entity + /individual/* + + + entity + /display/* + + + updateEntityFlags + /updateEntityFlags + + + authenticate + /authenticate + + + logout + /logout + + + pubsbyorg + /pubsbyorg + + + coauthors + /coauthors + + + generic_create + /generic_create + + + generic_editprep + /generic_editprep + + + generic_update + /generic_update + + + generic_delete + /generic_delete + + + + + + /WEB-INF/tlds/database.tld + /WEB-INF/tlds/database.tld + + + + http://java.sun.com/jstl/core + /WEB-INF/tlds/c.tld + + + + http://java.sun.com/jstl/functions + /WEB-INF/tlds/fn.tld + + + + http://vitro.mannlib.cornell.edu/edit/tags + /WEB-INF/tlds/form.tld + + + + http://vitro.mannlib.cornell.edu/vitro/tags + /WEB-INF/tlds/vitroForm.tld + + + + http://vitro.mannlib.cornell.edu/vitro/tags/PropertyEditLink + /WEB-INF/tlds/PropertyEditLink.tld + + + + http://mannlib.cornell.edu/vitro/ListSparqlTag/0.1/ + /WEB-INF/tlds/ListSparqlTag.tld + + + + http://jakarta.apache.org/taglibs/string-1.1 + /WEB-INF/tlds/taglibs-string.tld + + + + + + + + + + + diff --git a/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/VivoMergedListFilteringSetup.java b/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/VivoMergedListFilteringSetup.java new file mode 100644 index 00000000..973d1f43 --- /dev/null +++ b/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/VivoMergedListFilteringSetup.java @@ -0,0 +1,116 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package edu.cornell.mannlib.vitro.webapp.servlet.setup; + +import javax.servlet.ServletContextEvent; + +import net.sf.jga.fn.UnaryFunctor; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.joda.time.DateTime; + +import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement; +import edu.cornell.mannlib.vitro.webapp.beans.Individual; +import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement; +import edu.cornell.mannlib.vitro.webapp.controller.EntityMergedPropertyListController; +import edu.cornell.mannlib.vitro.webapp.dao.filtering.IndividualFiltering; +import edu.cornell.mannlib.vitro.webapp.dao.filtering.filters.VitroFiltersImpl; + +/** + * This adds an object to the servlet context that will be used by + * EntityMergedPropertiesListController to convert the individual that + * is specified by the URI of the request to an individual that is filtered. + * The object is a function from an Individual to an Individual. The original + * Individual is wrapped in an object that will filter out any object property statements + * to Individuals of core:Position whos date is in the past. + * + * This is related to http://issues.library.cornell.edu/browse/NIHVIVO-984 + * + * @author bdc34 + * + */ +public class VivoMergedListFilteringSetup implements javax.servlet.ServletContextListener { + private static final Log log = LogFactory.getLog(VivoMergedListFilteringSetup.class); + + @Override + public void contextDestroyed(ServletContextEvent arg0) { + } + + @Override + public void contextInitialized(ServletContextEvent arg0) { + log.info("Setting up Vivo Merged List Filtering."); + + UnaryFunctor fn = new UnaryFunctor(){ + + @Override + public Individual fn(Individual subject) { + if( subject != null && subject.isVClass("http://xmlns.com/foaf/0.1/Organization")){ + return new IndividualFiltering(subject, new VitroFiltersImpl(){ + + // @Override + // public UnaryFunctor getIndividualFilter(){ + // return new UnaryFunctor(){ + // @Override + // public Boolean fn(Individual arg) { + // return ! isPast(arg); + // } + // }; + // } + + /** + * This returns true if we should keep the statement, false if we should get rid of the statement + */ + @Override + public UnaryFunctor getObjectPropertyStatementFilter(){ + return new UnaryFunctor(){ + @Override + public Boolean fn(ObjectPropertyStatement arg) { + if( "http://vivoweb.org/ontology/core#organizationForPosition".equals(arg.getPropertyURI())){ + return ! positionInPast(arg.getObject()); + }else{ + return true; + } + } + }; + } + + + }); + }else{ + return subject; + } + } + }; + + EntityMergedPropertyListController.setMergedPropertyListFilter(fn, arg0.getServletContext()); + } + + + private boolean positionInPast(Individual ind){ + + if( ind.isVClass( "http://vivoweb.org/ontology/core#Position" ) ){ + + //positionShortView.jsp does not check core:endDate +// for(DataPropertyStatement stmt : ind.getDataPropertyStatements("http://vivoweb.org/ontology/core#endDate")){ +// DateTime end = new DateTime( stmt.getData() ); +// if( end.isBeforeNow() ) +// return true; +// } + + for(DataPropertyStatement stmt : ind.getDataPropertyStatements("http://vivoweb.org/ontology/core#endYear")){ + int endYear = Integer.MAX_VALUE; + try{ + endYear = Integer.parseInt(stmt.getData()); + }catch(NumberFormatException nfe){ + log.warn("Could not parse year: " + stmt.getData()); + } + int nowYear = (new DateTime()).getYear(); + + //This should use the same logic as positionShortView.jsp + return nowYear > endYear; + } + } + return false; + } +}