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.
This commit is contained in:
briancaruso 2012-06-21 17:10:14 +00:00
parent ceaf27a713
commit 9b30ecdcb1
8 changed files with 172 additions and 169 deletions

View file

@ -52,14 +52,12 @@ public class ObjectProperty extends Property implements Comparable<ObjectPropert
private String namespaceInverse = null;
private String localNameInverse = null;
private String domainEntitySortField = null;
private String domainEntitySortDirection = null;
private Integer domainDisplayTier = null;
private Integer domainDisplayLimit = 5;
private String objectIndividualSortPropertyURI = null;
private String rangeEntitySortField = null;
private String rangeEntitySortDirection = null;
private Integer rangeDisplayTier = null;
private Integer rangeDisplayLimit = 5;

View file

@ -31,10 +31,20 @@ public interface ObjectPropertyStatementDao {
int insertNewObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt );
public List<Map<String, String>> getObjectPropertyStatementsForIndividualByProperty(String subjectUri, String propertyUri, String objectKey, String query);
public List<Map<String, String>> getObjectPropertyStatementsForIndividualByProperty(String subjectUri, String propertyUri, String objectKey, String query, Set<String> constructQueries);
// public List<Map<String, String>> getObjectPropertyStatementsForIndividualByProperty(
// String subjectUri,
// String propertyUri,
// String objectKey,
// String queryString,
// Set<String> constructQueryStrings);
public Map<String, String> getMostSpecificTypesInClassgroupsForIndividual(String subjectUri);
List<Map<String, String>> getObjectPropertyStatementsForIndividualByProperty(
String subjectUri, String propertyUri, String objectKey,
String queryString, Set<String> constructQueryStrings,
String sortDirection);
}

View file

@ -86,16 +86,12 @@ class ObjectPropertyStatementDaoFiltering extends BaseFiltering implements Objec
@Override
public List<Map<String, String>> getObjectPropertyStatementsForIndividualByProperty(
String subjectUri, String propertyUri, String objectKey, String query) {
return getObjectPropertyStatementsForIndividualByProperty(subjectUri, propertyUri, objectKey, query, null);
}
String subjectUri, String propertyUri, String objectKey, String query,
Set<String> queryStrings, String sortDirection) {
@Override
public List<Map<String, String>> getObjectPropertyStatementsForIndividualByProperty(
String subjectUri, String propertyUri, String objectKey, String query, Set<String> queryStrings) {
List<Map<String, String>> data = innerObjectPropertyStatementDao.
getObjectPropertyStatementsForIndividualByProperty(subjectUri, propertyUri, objectKey, query, queryStrings);
List<Map<String, String>> data =
innerObjectPropertyStatementDao.getObjectPropertyStatementsForIndividualByProperty(
subjectUri, propertyUri, objectKey, query, queryStrings,sortDirection);
/* Filter the data
*
@ -137,4 +133,6 @@ class ObjectPropertyStatementDaoFiltering extends BaseFiltering implements Objec
}
}

View file

@ -266,27 +266,22 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec
* However, we do need to get the object of the statement so that we have it to create editing links.
*/
@Override
public List<Map<String, String>> getObjectPropertyStatementsForIndividualByProperty(
String subjectUri,
String propertyUri,
String objectKey, String queryString) {
return getObjectPropertyStatementsForIndividualByProperty(
subjectUri, propertyUri, objectKey, objectKey, null);
}
@Override
public List<Map<String, String>> getObjectPropertyStatementsForIndividualByProperty(
String subjectUri,
String propertyUri,
String objectKey,
String queryString, Set<String> constructQueryStrings ) {
String queryString,
Set<String> 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;

View file

@ -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<Map<String, String>> 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();

View file

@ -217,15 +217,7 @@ public class ObjectPropertyStatementDaoStub implements
@Override
public List<Map<String, String>> getObjectPropertyStatementsForIndividualByProperty(
String subjectUri, String propertyUri, String objectKey,
String query) {
throw new RuntimeException(
"ObjectPropertyStatementDaoStub.getObjectPropertyStatementsForIndividualByProperty() not implemented.");
}
@Override
public List<Map<String, String>> getObjectPropertyStatementsForIndividualByProperty(
String subjectUri, String propertyUri, String objectKey,
String query, Set<String> constructQueries) {
String query, Set<String> constructQueries, String sortDir) {
throw new RuntimeException(
"ObjectPropertyStatementDaoStub.getObjectPropertyStatementsForIndividualByProperty() not implemented.");
}

View file

@ -32,7 +32,7 @@
FILTER ( afn:namespace(?subclass) != "http://vitro.mannlib.cornell.edu/ns/vitro/0.7#" )
</collated>
} ORDER BY <collated> ?subclass </collated> ?label ?label ?localName
} ORDER BY <collated> ?subclass </collated> ASC( ?label ) ASC( ?label ) ASC( ?localName )
</query-select>
<query-construct>

View file

@ -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 --%>
<tr class="editformcell">
<td valign="top" colspan="1">
<td valign="top" colspan="2">
<b>Parent property</b><br/><br/>
<select name="ParentURI"><form:option name="ParentURI"/></select>
</td>
@ -36,7 +36,7 @@
</c:otherwise>
</c:choose>
</td>
<td style="vertical-align:bottom;" valign="bottom" colspan="1">
<td style="vertical-align:bottom;" valign="bottom" colspan="2">
<b>Local name for property*</b>
<c:choose>
<c:when test="${_action eq 'update'}">
@ -75,7 +75,7 @@
</c:otherwise>
</c:choose>
</td>
<td style="vertical-align:bottom;" valign="bottom" colspan="1">
<td style="vertical-align:bottom;" valign="bottom" colspan="2">
<b>Optional: Inverse property local name</b>
<c:choose>
<c:when test="${_action eq 'update'}">
@ -106,14 +106,14 @@
<b>Domain class</b><br />
<select name="DomainVClassURI"><form:option name="DomainVClassURI"/></select>
</td>
<td valign="top" colspan="2">
<td valign="top" colspan="3">
<b>Range class</b><br />
<select name="RangeVClassURI" ><form:option name="RangeVClassURI"/></select>
</td>
</tr>
<tr class="editformcell">
<td valign="top" colspan="4">
<td valign="top" colspan="5">
<b>Public Description</b> for front-end users, as it will appear on editing forms<br/>
<textarea name="PublicDescription"><form:value name="PublicDescription"/></textarea>
<c:set var="PublicDescriptionError"><form:error name="PublicDescription"/></c:set>
@ -122,6 +122,59 @@
</c:if>
</td>
</tr>
<tr class="editformcell">
<td valign="bottom" colspan="1">
<em>Optional: display tier for this property<br />
(<strong>lower</strong> numbers display first)</em><br/>
<input name="DomainDisplayTier" value="<form:value name="DomainDisplayTier"/>" style="width:15%;" />
<c:set var="DomainDisplayTierError"><form:error name="DomainDisplayTier"/></c:set>
<c:if test="${!empty DomainDisplayTierError}">
<span class="notice"><c:out value="${DomainDisplayTierError}"/></span>
</c:if>
</td>
<td valign="bottom" colspan="2">
<em>Optional: display tier for this property's inverse<br />
(<strong>lower</strong> numbers display first)</em><br/>
<input name="RangeDisplayTier" value="<form:value name="RangeDisplayTier"/>" style="width:15%;" />
<c:set var="RangeDisplayTierError"><form:error name="RangeDisplayTier"/></c:set>
<c:if test="${!empty RangeDisplayTierError}">
<span class="notice"><c:out value="${RangeDisplayTierError}"/></span>
</c:if>
</td>
<td valign="bottom" colspan="2">
<em>Related <strong>object individuals</strong> to display without collapsing<br />
(<strong>lower</strong> numbers display first)</em><br/>
<input name="DomainDisplayLimit" value="<form:value name="DomainDisplayLimit"/>" style="width:15%;" />
<c:set var="DomainDisplayLimitError"><form:error name="DomainDisplayLimit"/></c:set>
<c:if test="${!empty DomainDisplayLimitError}">
<span class="notice"><c:out value="${DomainDisplayLimitError}"/></span>
</c:if>
</td>
</tr>
<tr class="editformcell">
<td valign="bottom" colspan="2">
<em>Optional: <strong>sort direction</strong><br />
(blank for ascending, &quot;desc&quot; for descending)</em><br/>
<input name="DomainEntitySortDirection" value="<form:value name="DomainEntitySortDirection"/>" />
<c:set var="DomainEntitySortDirectionError"><form:error name="DomainEntitySortDirection"/></c:set>
<c:if test="${!empty DomainEntitySortDirectionError}">
<span class="notice"><c:out value="${DomainEntitySortDirectionError}"/></span>
</c:if>
</td>
</tr>
<tr class="editformcell">
<td valign="bottom" colspan="5">
<c:choose>
<c:when test="${collateBySubclass}">
<input name="CollateBySubclass" type="checkbox" value="TRUE" checked="checked"/>collate by subclass
</c:when>
<c:otherwise>
<input name="CollateBySubclass" type="checkbox" value="TRUE"/>collate by subclass
</c:otherwise>
</c:choose>
</td>
</tr>
<tr class="editformcell">
<td valign="bottom" colspan="1">
<c:choose>
@ -133,7 +186,7 @@
</c:otherwise>
</c:choose>
</td>
<td valign="bottom" colspan="1">
<td valign="bottom" colspan="2">
<c:choose>
<c:when test="${symmetric}">
<input name="Symmetric" type="checkbox" value="TRUE" checked="checked"/> symmetric
@ -164,54 +217,15 @@
</c:choose>
</td>
</tr>
<tr class="editformcell">
<td valign="bottom" colspan="1">
<em>Optional: display tier for this property<br />
(<strong>lower</strong> numbers display first)</em><br/>
<input name="DomainDisplayTier" value="<form:value name="DomainDisplayTier"/>" style="width:15%;" />
<c:set var="DomainDisplayTierError"><form:error name="DomainDisplayTier"/></c:set>
<c:if test="${!empty DomainDisplayTierError}">
<span class="notice"><c:out value="${DomainDisplayTierError}"/></span>
<td valign="bottom" colspan="2">
<em>custom entry form</em><br />
<input name="CustomEntryForm" size="30" value="<form:value name="CustomEntryForm"/>" />
<c:set var="CustomEntryFormError"><form:error name="CustomEntryForm"/></c:set>
<c:if test="${!empty CustomEntryFormError}">
<span class="notice"><c:out value="${CustomEntryFormError}"/></span>
</c:if>
</td>
<td valign="bottom" colspan="1">
<em>Optional: display tier for this property's inverse<br />
(<strong>lower</strong> numbers display first)</em><br/>
<input name="RangeDisplayTier" value="<form:value name="RangeDisplayTier"/>" style="width:15%;" />
<c:set var="RangeDisplayTierError"><form:error name="RangeDisplayTier"/></c:set>
<c:if test="${!empty RangeDisplayTierError}">
<span class="notice"><c:out value="${RangeDisplayTierError}"/></span>
</c:if>
</td>
<td valign="bottom" colspan="1">
<em>Related <strong>object individuals</strong> to display without collapsing<br />
(<strong>lower</strong> numbers display first)</em><br/>
<input name="DomainDisplayLimit" value="<form:value name="DomainDisplayLimit"/>" style="width:15%;" />
<c:set var="DomainDisplayLimitError"><form:error name="DomainDisplayLimit"/></c:set>
<c:if test="${!empty DomainDisplayLimitError}">
<span class="notice"><c:out value="${DomainDisplayLimitError}"/></span>
</c:if>
</td>
<td valign="bottom" colspan="1">
<em>Related <strong>object individuals of inverse property</strong> to display without collapsing</em><br />
(<strong>lower</strong> numbers display first)<br/>
<input name="RangeDisplayLimit" value="<form:value name="RangeDisplayLimit"/>" style="width:15%;" />
<c:set var="RangeDisplayLimitError"><form:error name="RangeDisplayLimit"/></c:set>
<c:if test="${!empty RangeDisplayLimitError}">
<span class="notice"><c:out value="${RangeDisplayLimitError}"/></span>
</c:if>
</td>
</tr>
<tr class="editformcell">
<td valign="bottom" colspan="1">
<c:choose>
<c:when test="${collateBySubclass}">
<input name="CollateBySubclass" type="checkbox" value="TRUE" checked="checked"/>collate by subclass
</c:when>
<c:otherwise>
<input name="CollateBySubclass" type="checkbox" value="TRUE"/>collate by subclass
</c:otherwise>
</c:choose>
</td>
<td valign="bottom" colspan="1">
<em><strong>Caution:</strong>delete object when statement deleted?</em><br />
@ -247,18 +261,10 @@
</c:choose>
</td>
</tr>
<tr class="editformcell">
<td valign="bottom" colspan="4">
<em>custom entry form</em><br />
<input name="CustomEntryForm" size="30" value="<form:value name="CustomEntryForm"/>" />
<c:set var="CustomEntryFormError"><form:error name="CustomEntryForm"/></c:set>
<c:if test="${!empty CustomEntryFormError}">
<span class="notice"><c:out value="${CustomEntryFormError}"/></span>
</c:if>
</td>
</tr>
<tr class="editformcell">
<td valign="bottom" colspan="4">
<td valign="bottom" colspan="5">
<b>Example</b><br />
<input name="Example" style="width:90%;" value="<form:value name="Example"/>" />
<c:set var="ExampleError"><form:error name="Example"/></c:set>
@ -268,7 +274,7 @@
</td>
</tr>
<tr class="editformcell">
<td valign="bottom" colspan="4">
<td valign="bottom" colspan="5">
<b>Description</b> for ontology editors<br />
<textarea name="Description" style="width:90%;"><form:value name="Description"/></textarea>
<c:set var="DescriptionError"><form:error name="Description"/></c:set>