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:
parent
ceaf27a713
commit
9b30ecdcb1
8 changed files with 172 additions and 169 deletions
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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.");
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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, "desc" 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>
|
||||
|
||||
<tr class="editformcell">
|
||||
<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 />
|
||||
|
@ -246,19 +260,11 @@
|
|||
</c:otherwise>
|
||||
</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">
|
||||
</tr>
|
||||
|
||||
|
||||
<tr class="editformcell">
|
||||
<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>
|
||||
|
@ -266,9 +272,9 @@
|
|||
<span class="notice"><c:out value="${ExampleError}"/></span>
|
||||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
</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>
|
||||
|
@ -276,5 +282,5 @@
|
|||
<span class="notice"><c:out value="${DescriptionError}"/></span>
|
||||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
</tr>
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue