From 9b30ecdcb12145869166103737410245575a62d6 Mon Sep 17 00:00:00 2001 From: briancaruso Date: Thu, 21 Jun 2012 17:10:14 +0000 Subject: [PATCH] Fixed object property sorting on individual page for default list view. NIHVIVO-3415 Removed unused domainEntitySortField and rangeEntitySortField from ObjectProperty. Added rangeEntitySortField back to property_retry.jsp. --- .../vitro/webapp/beans/ObjectProperty.java | 2 - .../dao/ObjectPropertyStatementDao.java | 20 +- .../ObjectPropertyStatementDaoFiltering.java | 20 +- .../jena/ObjectPropertyStatementDaoJena.java | 33 +-- .../ObjectPropertyTemplateModel.java | 6 +- .../dao/ObjectPropertyStatementDaoStub.java | 10 +- webapp/web/config/listViewConfig-default.xml | 2 +- .../edit/specific/property_retry.jsp | 248 +++++++++--------- 8 files changed, 172 insertions(+), 169 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/ObjectProperty.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/ObjectProperty.java index 1dd7d86e4..be5609495 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/ObjectProperty.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/ObjectProperty.java @@ -52,14 +52,12 @@ public class ObjectProperty extends Property implements Comparable> getObjectPropertyStatementsForIndividualByProperty(String subjectUri, String propertyUri, String objectKey, String query); - - public List> getObjectPropertyStatementsForIndividualByProperty(String subjectUri, String propertyUri, String objectKey, String query, Set constructQueries); + int insertNewObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt ); +// public List> getObjectPropertyStatementsForIndividualByProperty( +// String subjectUri, +// String propertyUri, +// String objectKey, +// String queryString, +// Set constructQueryStrings); + public Map getMostSpecificTypesInClassgroupsForIndividual(String subjectUri); + + List> getObjectPropertyStatementsForIndividualByProperty( + String subjectUri, String propertyUri, String objectKey, + String queryString, Set constructQueryStrings, + String sortDirection); + + } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyStatementDaoFiltering.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyStatementDaoFiltering.java index 5b30acbde..5f09c5188 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyStatementDaoFiltering.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyStatementDaoFiltering.java @@ -82,20 +82,16 @@ class ObjectPropertyStatementDaoFiltering extends BaseFiltering implements Objec @Override public int insertNewObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt) { return innerObjectPropertyStatementDao.insertNewObjectPropertyStatement(objPropertyStmt); - } - + } + @Override public List> getObjectPropertyStatementsForIndividualByProperty( - String subjectUri, String propertyUri, String objectKey, String query) { - return getObjectPropertyStatementsForIndividualByProperty(subjectUri, propertyUri, objectKey, query, null); - } - - @Override - public List> getObjectPropertyStatementsForIndividualByProperty( - String subjectUri, String propertyUri, String objectKey, String query, Set queryStrings) { + String subjectUri, String propertyUri, String objectKey, String query, + Set queryStrings, String sortDirection) { - List> data = innerObjectPropertyStatementDao. - getObjectPropertyStatementsForIndividualByProperty(subjectUri, propertyUri, objectKey, query, queryStrings); + List> data = + innerObjectPropertyStatementDao.getObjectPropertyStatementsForIndividualByProperty( + subjectUri, propertyUri, objectKey, query, queryStrings,sortDirection); /* Filter the data * @@ -135,6 +131,8 @@ class ObjectPropertyStatementDaoFiltering extends BaseFiltering implements Objec public Map getMostSpecificTypesInClassgroupsForIndividual(String subjectUri) { return innerObjectPropertyStatementDao.getMostSpecificTypesInClassgroupsForIndividual(subjectUri); } + + } \ No newline at end of file diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java index 7775fbac1..1d205f9dc 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java @@ -264,29 +264,24 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec * DataPropertyStatementDaoJena returns a List. We need to accomodate * custom queries that could request any data in addition to just the object of the statement. * However, we do need to get the object of the statement so that we have it to create editing links. - */ - - @Override - public List> getObjectPropertyStatementsForIndividualByProperty( - String subjectUri, - String propertyUri, - String objectKey, String queryString) { - - return getObjectPropertyStatementsForIndividualByProperty( - subjectUri, propertyUri, objectKey, objectKey, null); - - } + */ @Override public List> getObjectPropertyStatementsForIndividualByProperty( String subjectUri, - String propertyUri, + String propertyUri, String objectKey, - String queryString, Set constructQueryStrings ) { - + String queryString, + Set constructQueryStrings, + String sortDirection) { + Model constructedModel = constructModelForSelectQueries( subjectUri, propertyUri, constructQueryStrings); - + + if("desc".equalsIgnoreCase( sortDirection ) ){ + queryString = queryString.replaceAll(" ASC\\(", " DESC("); + } + log.debug("Query string for object property " + propertyUri + ": " + queryString); Query query = null; @@ -301,7 +296,7 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec QuerySolutionMap initialBindings = new QuerySolutionMap(); initialBindings.add("subject", ResourceFactory.createResource(subjectUri)); initialBindings.add("property", ResourceFactory.createResource(propertyUri)); - + // Run the SPARQL query to get the properties List> list = new ArrayList>(); DatasetWrapper w = dwf.getDatasetWrapper(); @@ -341,7 +336,7 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec } private Model constructModelForSelectQueries(String subjectUri, - String propertyUri, + String propertyUri, Set constructQueries) { if (constructQueries == null) { @@ -357,7 +352,7 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec queryString = queryString.replace("?subject", "<" + subjectUri + ">"); queryString = queryString.replace("?property", "<" + propertyUri + ">"); - + // we no longer need this query object, but we might want to do this // query parse step to improve debugging, depending on the error returned // through the RDF API diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/ObjectPropertyTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/ObjectPropertyTemplateModel.java index b181ae505..9d6bec0f0 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/ObjectPropertyTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/ObjectPropertyTemplateModel.java @@ -79,6 +79,7 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel private PropertyListConfig config; private String objectKey; + private String sortDirection; ObjectPropertyTemplateModel(ObjectProperty op, Individual subject, VitroRequest vreq, boolean editing) @@ -87,6 +88,8 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel super(op, subject, vreq); setName(op.getDomainPublic()); + sortDirection = op.getDomainEntitySortDirection(); + // Get the config for this object property try { config = new PropertyListConfig(this, getFreemarkerTemplateLoader(), vreq, op, editing); @@ -144,7 +147,8 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel protected List> getStatementData() { ObjectPropertyStatementDao opDao = vreq.getWebappDaoFactory().getObjectPropertyStatementDao(); - return opDao.getObjectPropertyStatementsForIndividualByProperty(subjectUri, propertyUri, objectKey, getSelectQuery(), getConstructQueries()); + + return opDao.getObjectPropertyStatementsForIndividualByProperty(subjectUri, propertyUri, objectKey, getSelectQuery(), getConstructQueries(), sortDirection); } protected abstract boolean isEmpty(); diff --git a/webapp/test/stubs/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyStatementDaoStub.java b/webapp/test/stubs/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyStatementDaoStub.java index cd24fcc47..aebcd0fb1 100644 --- a/webapp/test/stubs/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyStatementDaoStub.java +++ b/webapp/test/stubs/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyStatementDaoStub.java @@ -217,15 +217,7 @@ public class ObjectPropertyStatementDaoStub implements @Override public List> getObjectPropertyStatementsForIndividualByProperty( String subjectUri, String propertyUri, String objectKey, - String query) { - throw new RuntimeException( - "ObjectPropertyStatementDaoStub.getObjectPropertyStatementsForIndividualByProperty() not implemented."); - } - - @Override - public List> getObjectPropertyStatementsForIndividualByProperty( - String subjectUri, String propertyUri, String objectKey, - String query, Set constructQueries) { + String query, Set constructQueries, String sortDir) { throw new RuntimeException( "ObjectPropertyStatementDaoStub.getObjectPropertyStatementsForIndividualByProperty() not implemented."); } diff --git a/webapp/web/config/listViewConfig-default.xml b/webapp/web/config/listViewConfig-default.xml index 7168fc8e3..252852a09 100644 --- a/webapp/web/config/listViewConfig-default.xml +++ b/webapp/web/config/listViewConfig-default.xml @@ -32,7 +32,7 @@ FILTER ( afn:namespace(?subclass) != "http://vitro.mannlib.cornell.edu/ns/vitro/0.7#" ) - } ORDER BY ?subclass ?label ?label ?localName + } ORDER BY ?subclass ASC( ?label ) ASC( ?label ) ASC( ?localName ) diff --git a/webapp/web/templates/edit/specific/property_retry.jsp b/webapp/web/templates/edit/specific/property_retry.jsp index 3bfb8b009..f1bc223e7 100644 --- a/webapp/web/templates/edit/specific/property_retry.jsp +++ b/webapp/web/templates/edit/specific/property_retry.jsp @@ -3,9 +3,9 @@ <%@ taglib prefix="form" uri="http://vitro.mannlib.cornell.edu/edit/tags" %> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> -<%-- colspan set to 4 in PropertyRetryController.java --%> +<%-- colspan set to 5 in PropertyRetryController.java --%> - + Parent property

@@ -36,7 +36,7 @@ - + Local name for property* @@ -75,7 +75,7 @@ - + Optional: Inverse property local name @@ -106,14 +106,14 @@ Domain class
- + Range class
- + Public Description for front-end users, as it will appear on editing forms
@@ -122,48 +122,6 @@ - - - - - transitive - - - transitive - - - - - - - symmetric - - - symmetric - - - - - - - functional - - - functional - - - - - - - inverse functional - - - inverse functional - - - - Optional: display tier for this property
@@ -174,7 +132,7 @@ - + Optional: display tier for this property's inverse
(lower numbers display first)

" style="width:15%;" /> @@ -183,7 +141,7 @@ - + Related object individuals to display without collapsing
(lower numbers display first)

" style="width:15%;" /> @@ -192,89 +150,137 @@ - - Related object individuals of inverse property to display without collapsing
- (lower numbers display first)
- " style="width:15%;" /> - - - - - - + + Optional: sort direction
+ (blank for ascending, "desc" for descending)

+ " /> + + + + + + + + + - collate by subclass + collate by subclass collate by subclass - - - Caution:delete object when statement deleted?
- - - stub object relation with force delete - - - stub object relation with force delete - - - - - select from existing choices when adding statements?
- - - provide selection - - - provide selection - - - - - when adding a new statement, also offer option to create new individual?
- - - offer create option - - - offer create option - - - - - - - custom entry form
- " /> - - - - - + - - Example
- " /> - - - - + + + + transitive + + + transitive + + + + + + + symmetric + + + symmetric + + + + + + + functional + + + functional + + + + + + + inverse functional + + + inverse functional + + + - - Description for ontology editors
- - - - - - - + + custom entry form
+ " /> + + + + + + + Caution:delete object when statement deleted?
+ + + stub object relation with force delete + + + stub object relation with force delete + + + + + select from existing choices when adding statements?
+ + + provide selection + + + provide selection + + + + + when adding a new statement, also offer option to create new individual?
+ + + offer create option + + + offer create option + + + + + + + + + Example
+ " /> + + + + + + + + + Description for ontology editors
+ + + + + + +