Changing entityMergedPropList so that it will look for customShortViews on all directly asserted classes before checking any super classes. NIHVIVO-629 NIHVIVO-630

This commit is contained in:
bdc34 2010-07-14 00:09:47 +00:00
parent 0e721dcb22
commit 418fc432e0

View file

@ -37,7 +37,9 @@
<%@ page import="org.apache.commons.logging.Log" %> <%@ page import="org.apache.commons.logging.Log" %>
<%@ page import="org.apache.commons.logging.LogFactory" %> <%@ page import="org.apache.commons.logging.LogFactory" %>
<jsp:useBean id="loginHandler" class="edu.cornell.mannlib.vedit.beans.LoginFormBean" scope="session" />
<%@page import="java.util.LinkedList"%>
<%@page import="java.util.Set"%><jsp:useBean id="loginHandler" class="edu.cornell.mannlib.vedit.beans.LoginFormBean" scope="session" />
<%! <%!
public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.templates.entity.entityMergedPropsList.jsp"); public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.templates.entity.entityMergedPropsList.jsp");
%> %>
@ -354,25 +356,32 @@ public static Log log = LogFactory.getLog("edu.cornell.mannlib.vitro.webapp.jsp.
private String getCustomShortView(HttpServletRequest request, VClassDao vcDao) { private String getCustomShortView(HttpServletRequest request, VClassDao vcDao) {
String customShortView = null; String customShortView = null;
Individual object = ((ObjectPropertyStatement)request.getAttribute("opStmt")).getObject(); Individual object = ((ObjectPropertyStatement)request.getAttribute("opStmt")).getObject();
List<VClass> vclasses = object.getVClasses(); List<VClass> vclasses = object.getVClasses(true); //get directly asserted vclasses
Set<String> superClasses = new HashSet<String>();
// First try directly asserted classes, there is no useful decision mechanism for
// the case where two directly asserted classes have a custom short view.
vclassLoop: for (VClass vclass : vclasses) { vclassLoop: for (VClass vclass : vclasses) {
// Use this class's custom short view, if there is one // Use this class's custom short view, if there is one
customShortView = vclass.getCustomShortView(); customShortView = vclass.getCustomShortView();
if (customShortView != null) { if (customShortView != null) {
break; return customShortView;
} }
// Otherwise, check for superclass custom short views // Otherwise, add superclass to list of vclasses to check for custom short views
String vclassUri = vclass.getURI(); String vclassUri = vclass.getURI();
List<String> superClassUris = vcDao.getAllSuperClassURIs(vclassUri); superClasses.addAll( vcDao.getAllSuperClassURIs(vclassUri) );
for (String superClassUri : superClassUris) {
VClass vc = vcDao.getVClassByURI(superClassUri);
customShortView = vc.getCustomShortView();
if (customShortView != null) {
break vclassLoop;
}
}
} }
return customShortView;
// Next try super classes. There is no useful decision mechanism for
// the case where two super classes have a custom short view.
for (String superClassUri : superClasses) {
VClass vc = vcDao.getVClassByURI(superClassUri);
customShortView = vc.getCustomShortView();
if (customShortView != null) {
return customShortView;
}
}
return null;
} }
%> %>