From bfd81d1327f23636bc269a212cd11edd7b20cdc0 Mon Sep 17 00:00:00 2001 From: rjy7 Date: Mon, 6 Dec 2010 16:47:41 +0000 Subject: [PATCH] NIHVIVO-1333 Continued work on ontology property display on individual profile page. --- .../individual/DataPropertyTemplateModel.java | 27 ++- .../individual/GroupedPropertyList.java | 180 ------------------ .../individual/IndividualTemplateModel.java | 3 +- .../ObjectPropertyTemplateModel.java | 19 ++ .../PropertyGroupTemplateModel.java | 27 ++- .../individual/PropertyListBuilder.java | 15 +- .../individual/PropertyTemplateModel.java | 26 ++- .../individual/SubclassList.java | 10 +- .../individual/UncollatedObjectProperty.java | 2 + .../body/individual/individual-properties.ftl | 2 +- 10 files changed, 106 insertions(+), 205 deletions(-) delete mode 100644 webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/DataPropertyTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/DataPropertyTemplateModel.java index 3632a8680..38e9f99ed 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/DataPropertyTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/DataPropertyTemplateModel.java @@ -8,8 +8,10 @@ public class DataPropertyTemplateModel extends PropertyTemplateModel { private static final String TYPE = "data"; - DataPropertyTemplateModel(DataProperty property) { - super(property); + DataPropertyTemplateModel(DataProperty dp) { + super(dp); + + // get the data property statements from the db via sparql query } @@ -19,4 +21,25 @@ public class DataPropertyTemplateModel extends PropertyTemplateModel { return TYPE; } + + @Override + public String addLink() { + // TODO Auto-generated method stub + return null; + } + + + @Override + public String editLink() { + // TODO Auto-generated method stub + return null; + } + + + @Override + public String deleteLink() { + // TODO Auto-generated method stub + return null; + } + } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java deleted file mode 100644 index 6c78e757d..000000000 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java +++ /dev/null @@ -1,180 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import edu.cornell.mannlib.vitro.webapp.beans.Property; -import edu.cornell.mannlib.vitro.webapp.beans.PropertyGroup; -import edu.cornell.mannlib.vitro.webapp.dao.PropertyGroupDao; -import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; -import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel; - -/** - * The entire grouped property list for the subject. - * If there are no groups defined or populated, use a dummy group so that the - * display logic in the templates is the same whether or not there are groups. - * @author rjy7 - * - */ -public class GroupedPropertyList extends BaseTemplateModel { - - private static final Log log = LogFactory.getLog(GroupedPropertyList.class); - private static final int MAX_GROUP_DISPLAY_RANK = 99; - - private List groups; - private DummyPropertyGroupTemplateModel ungroupedGroup; - - GroupedPropertyList(WebappDaoFactory wdf, PropertyList propertyList) { - - // Get the property groups - PropertyGroupDao pgDao = wdf.getPropertyGroupDao(); - List groupList = pgDao.getPublicGroups(false); // may be returned empty but not null - - List groups = new ArrayList(groupList.size()); - for (PropertyGroup g : groupList) { - groups.add(new PropertyGroupTemplateModel(g)); - // Properties unassigned to any group go in a dummy group with name an empty string. Templates - // must test for <#if ! group.name?has_content> or <#if group.name == ""> or <#if group.name?length == 0> - ungroupedGroup = new DummyPropertyGroupTemplateModel(""); - } - // If there are no groups, create a dummy group, so that the template display logic is the same - // in both cases. Name is null. Templates must test for <#if ! group.name??> - if (groups.isEmpty()) { - ungroupedGroup = new DummyPropertyGroupTemplateModel(null); - } - groups.add(ungroupedGroup); - - -// if (groupedMode) { -// int groupsCount=0; -// try { -// groupsCount = populateGroupListWithProperties(pgDao,groupList,propertyList); //,groupForUngroupedProperties); -// } catch (Exception ex) { -// log.error("Exception on trying to populate groups list with properties: "+ex.getMessage()); -// ex.printStackTrace(); -// } -// try { -// int removedCount = pgDao.removeUnpopulatedGroups(groupList); -// if (removedCount == 0) { -// log.warn("Of "+groupsCount+" groups, none removed by removeUnpopulatedGroups"); -// /* } else { -// log.warn("Of "+groupsCount+" groups, "+removedCount+" removed by removeUnpopulatedGroups"); */ -// } -// groupsCount -= removedCount; -// //req.setAttribute("groupsCount", new Integer(groupsCount)); -// if (groupsCount > 0) { //still -// for (PropertyGroup g : groupList) { -// int statementCount=0; -// if (g.getPropertyList()!=null && g.getPropertyList().size()>0) { -// for (Property p : g.getPropertyList()) { -// if (p instanceof ObjectProperty) { -// ObjectProperty op = (ObjectProperty)p; -// List opStmts = op.getObjectPropertyStatements(); -// if (op.getObjectPropertyStatements()!=null && opStmts.size()>0) { -// statementCount += opStmts.size(); -// -// // If not collated, we need to apply custom sorting now. -// //applyCustomSortToUncollatedProperty(op, opStmts); -// } -// -// -// } -// } -// } -// g.setStatementCount(statementCount); -// } -// } -// } catch (Exception ex) { -// log.error("Exception on trying to prune groups list with properties: "+ex.getMessage()); -// } -// propertyList.clear(); - -// } else { // ungrouped mode -// for (Property p : mergedPropertyList) { -// if (p instanceof ObjectProperty) { -// ObjectProperty op = (ObjectProperty)p; -// applyCustomSortToUncollatedProperty(op, op.getObjectPropertyStatements()); -// } -// } } - - - - } - -// private int populateGroupListWithProperties(PropertyGroupDao pgDao, List groupList, PropertyList propertyList) {//, String unassignedGroupName) { -// int count = groupList.size(); -// PropertyGroup tempGroup = null; -// String unassignedGroupName = ""; //temp, for compilation -// if (unassignedGroupName!=null) { -// tempGroup = pgDao.createTempPropertyGroup(unassignedGroupName,MAX_GROUP_DISPLAY_RANK); -// log.debug("creating temp property group "+unassignedGroupName+" for any unassigned properties"); -// } -// switch (count) { -// case 0: log.warn("groupsList has no groups on entering populateGroupsListWithProperties(); will create a new group \"other\""); -// break; -// case 1: break; -// default: try { -// Collections.sort(groupList); -// } catch (Exception ex) { -// log.error("Exception on sorting groupList in populateGroupListWithProperties()"); -// } -// } -// if (count==0 && unassignedGroupName!=null) { -// groupList.add(tempGroup); -// } -// for (PropertyGroup pg : groupList) { -// if (pg.getPropertyList().size()>0) { -// pg.getPropertyList().clear(); -// } -// List properties = propertyList.getProperties(); -// for (PropertyTemplateModel ptm : properties) { -// -// Property p = ptm.getProperty(); -// if (p.getURI() == null) { -// log.error("Property p has null URI in populateGroupsListWithProperties()"); -// } else if (p.getGroupURI()==null) { -// if (tempGroup!=null) { // not assigned any group yet and are creating a group for unassigned properties -// if (!alreadyOnPropertyList(tempGroup.getPropertyList(),p)) { -// tempGroup.getPropertyList().add(p); -// log.debug("adding property "+p.getEditLabel()+" to members of temp group "+unassignedGroupName); -// } -// } // otherwise don't put that property on the list -// } else if (p.getGroupURI().equals(pg.getURI())) { -// if (!alreadyOnPropertyList(pg.getPropertyList(),p)) { -// pg.getPropertyList().add(p); -// } -// } -// } -// if (pg.getPropertyList().size()>1) { -// try { -// Collections.sort(pg.getPropertyList(),new Property.DisplayComparatorIgnoringPropertyGroup()); -// } catch (Exception ex) { -// log.error("Exception sorting property group "+pg.getName()+" property list: "+ex.getMessage()); -// } -// } -// } -// if (count>0 && tempGroup!=null && tempGroup.getPropertyList().size()>0) { -// groupList.add(tempGroup); -// } -// count = groupList.size(); -// return count; -// } - - /* - * Public getters for templates - */ - - public List getGroups() { - return groups; - } - -} diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java index 202da4652..b36badd9e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java @@ -153,10 +153,9 @@ public class IndividualTemplateModel extends BaseTemplateModel { return models; } - public List getPropertyList() { + public List getPropertyList() { PropertyListBuilder propListBuilder = new PropertyListBuilder(individual, vreq); return propListBuilder.getPropertyList(); - //return new GroupedPropertyList(individual, vreq); } /* These methods simply forward to the methods of the wrapped individual. It would be desirable to 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 ca90c5738..78dbef847 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 @@ -21,4 +21,23 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel public abstract boolean getIsCollatedBySubtype(); + @Override + public String addLink() { + // TODO Auto-generated method stub + return null; + } + + + @Override + public String editLink() { + // TODO Auto-generated method stub + return null; + } + + + @Override + public String deleteLink() { + // TODO Auto-generated method stub + return null; + } } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyGroupTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyGroupTemplateModel.java index ba5205ca9..c6687040c 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyGroupTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyGroupTemplateModel.java @@ -2,24 +2,43 @@ package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual; +import java.util.ArrayList; import java.util.List; +import edu.cornell.mannlib.vitro.webapp.beans.DataProperty; +import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty; +import edu.cornell.mannlib.vitro.webapp.beans.Property; import edu.cornell.mannlib.vitro.webapp.beans.PropertyGroup; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel; public class PropertyGroupTemplateModel extends BaseTemplateModel { - protected PropertyGroup group; - protected List properties; + private String name; + private List properties; PropertyGroupTemplateModel() { } PropertyGroupTemplateModel(PropertyGroup group) { - this.group = group; + this.name = group.getName(); + + List propertyList = group.getPropertyList(); + properties = new ArrayList(propertyList.size()); + for (Property p : propertyList) { + if (p instanceof ObjectProperty) { + ObjectProperty op = (ObjectProperty)p; + if (op.getCollateBySubclass()) { + properties.add(new CollatedObjectProperty(op)); + } else { + properties.add(new UncollatedObjectProperty(op)); + } + } else { + properties.add(new DataPropertyTemplateModel((DataProperty)p)); + } + } } public String getName() { - return group.getName(); + return name; } public List getProperties() { diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyListBuilder.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyListBuilder.java index 3e84f580a..2c923ef73 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyListBuilder.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyListBuilder.java @@ -50,7 +50,7 @@ public class PropertyListBuilder { } // RY Create the list here first to get it working. Then consider moving to GroupedPropertyList constructor. - protected List getPropertyList() { + protected List getPropertyList() { // Determine whether we're editing or not. boolean userCanEditThisProfile = getEditingStatus(); @@ -93,14 +93,19 @@ public class PropertyListBuilder { } sort(propertyList); //*** Does this do data and obj props, or just obj props?? - + + // Put the list into groups + List groupList = addPropertiesToGroups(propertyList); + + // Build the template data model from the groupList + List groups = new ArrayList(groupList.size()); + for (PropertyGroup pg : groupList) { + groups.add(new PropertyGroupTemplateModel(pg)); + } // *** ADD collation and statements here *** // Don't include custom sorting, since that will be handled from custom short views // We'll populate each item in the property list with its statements or subclass lists - // Put the list into groups - //return new GroupedPropertyList(wdf, propertyList); - List groups = addPropertiesToGroups(propertyList); return groups; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyTemplateModel.java index a525773a7..ad50a5412 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyTemplateModel.java @@ -10,20 +10,14 @@ import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel; */ public abstract class PropertyTemplateModel extends BaseTemplateModel { + private String name; protected Property property; - PropertyTemplateModel(Property propertry) { + PropertyTemplateModel(Property property) { + this.name = property.getLabel(); this.property = property; } - protected Property getProperty() { - return property; - } - - protected String getUri() { - return property.getURI(); - } - /* Access methods for templates */ public String getAddLink() { @@ -31,5 +25,19 @@ public abstract class PropertyTemplateModel extends BaseTemplateModel { } public abstract String getType(); + + public String getName() { + return name; + } + +// protected String getUri() { +// return property.getURI(); +// } + + public abstract String addLink(); + + public abstract String editLink(); + + public abstract String deleteLink(); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/SubclassList.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/SubclassList.java index 89faed32f..a07d044ff 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/SubclassList.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/SubclassList.java @@ -2,6 +2,7 @@ package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual; +import java.util.ArrayList; import java.util.List; /** List of object property statements for an individual, where the objects belong to a single subclass **/ @@ -11,10 +12,15 @@ public class SubclassList { String name = null; List statements = null; - SubclassList(String name, List statements) { + SubclassList(String name) { this.name = name; - this.statements = statements; + this.statements = new ArrayList(); + + // get the obj property statements for this subclass from the db via sparql query + } + + /* Access methods for templates */ public String getName() { return name; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/UncollatedObjectProperty.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/UncollatedObjectProperty.java index ab596171c..7ac1aad5b 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/UncollatedObjectProperty.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/UncollatedObjectProperty.java @@ -14,6 +14,8 @@ public class UncollatedObjectProperty extends ObjectPropertyTemplateModel { UncollatedObjectProperty(ObjectProperty property) { super(property); statements = new ArrayList(); + + // get the statements from the db via sparql query } public List getStatements() { diff --git a/webapp/web/templates/freemarker/body/individual/individual-properties.ftl b/webapp/web/templates/freemarker/body/individual/individual-properties.ftl index 0b218ee63..31a1bb95c 100644 --- a/webapp/web/templates/freemarker/body/individual/individual-properties.ftl +++ b/webapp/web/templates/freemarker/body/individual/individual-properties.ftl @@ -19,7 +19,7 @@ <#-- Now list the properties in the group --> -

Number of properties in group: ${group.propertyList?size}

<#-- testing --> +

Number of properties in group: ${group.properties?size}

<#-- temporary --> <#-- <#list group.properties as property>