diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyDao.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyDao.java index 9a966351b..dd6ffc6cd 100755 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyDao.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyDao.java @@ -54,5 +54,7 @@ public interface ObjectPropertyDao extends PropertyDao { public List getObjectPropertyList(Individual subject); - public List getObjectPropertyList(String subjectUri); + public List getObjectPropertyList(String subjectUri); + + public String getCustomShortView(); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyStatementDao.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyStatementDao.java index 0d6ad6d69..6964293f3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyStatementDao.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyStatementDao.java @@ -28,5 +28,6 @@ public interface ObjectPropertyStatementDao { Individual fillExistingObjectPropertyStatements( Individual entity ); int insertNewObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt ); - + + public List getObjectPropertyStatementsForIndividualByProperty(Individual subject, ObjectProperty property, String query); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java index 2851f8126..3e4a3bd64 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/VitroVocabulary.java @@ -102,6 +102,7 @@ public class VitroVocabulary { public static final String PROPERTY_CUSTOMENTRYFORMANNOT = vitroURI+"customEntryFormAnnot"; public static final String PROPERTY_CUSTOMDISPLAYVIEWANNOT = vitroURI+"customDisplayViewAnnot"; public static final String PROPERTY_CUSTOMSHORTVIEWANNOT = vitroURI+"customShortViewAnnot"; + public static final String PROPERTY_CUSTOM_LIST_VIEW_ANNOT = vitroURI + "customListViewAnnot"; public static final String PROPERTY_SELECTFROMEXISTINGANNOT = vitroURI+"selectFromExistingAnnot"; public static final String PROPERTY_OFFERCREATENEWOPTIONANNOT = vitroURI+"offerCreateNewOptionAnnot"; public static final String PROPERTY_INPROPERTYGROUPANNOT = vitroURI+"inPropertyGroupAnnot"; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyDaoFiltering.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyDaoFiltering.java index 2db06994f..4fedef1a1 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyDaoFiltering.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyDaoFiltering.java @@ -214,4 +214,9 @@ class ObjectPropertyDaoFiltering extends BaseFiltering implements ObjectProperty public List getObjectPropertyList(String subjectUri) { return innerObjectPropertyDao.getObjectPropertyList(subjectUri); } + + @Override + public String getCustomShortView() { + return innerObjectPropertyDao.getCustomShortView(); + } } 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 e81d3a7cf..ba7d758ef 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 @@ -81,4 +81,12 @@ class ObjectPropertyStatementDaoFiltering extends BaseFiltering implements Objec return innerObjectPropertyStatementDao.insertNewObjectPropertyStatement(objPropertyStmt); } + + @Override + // RY What about filtering? + public List getObjectPropertyStatementsForIndividualByProperty( + Individual subject, ObjectProperty property, String query) { + return innerObjectPropertyStatementDao.getObjectPropertyStatementsForIndividualByProperty(subject, property, query); + } + } \ No newline at end of file diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyStatementDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyStatementDaoJena.java index 83ba2c853..400392fb5 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyStatementDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyStatementDaoJena.java @@ -297,13 +297,13 @@ public class DataPropertyStatementDaoJena extends JenaBaseDao implements DataPro QueryExecution qexec = QueryExecutionFactory.create(dataPropertyValueQuery, getOntModelSelector().getFullModel(), bindings); ResultSet results = qexec.execSelect(); - List values = new ArrayList(); + List statements = new ArrayList(); while (results.hasNext()) { QuerySolution sol = results.next(); Literal value = sol.getLiteral("value"); DataPropertyStatement dps = new DataPropertyStatementImpl(subjectUri, propertyUri, value.getLexicalForm()); - values.add(dps); + statements.add(dps); } - return values; + return statements; } } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyStatementDaoSDB.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyStatementDaoSDB.java index 1d1d9b477..a8f208f50 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyStatementDaoSDB.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/DataPropertyStatementDaoSDB.java @@ -101,30 +101,4 @@ public class DataPropertyStatementDaoSDB extends DataPropertyStatementDaoJena } } } - - @Override - public List getDataPropertyStatementsForIndividualByProperty(Individual subject, DataProperty property) { - log.debug("dataPropertyValueQueryString:\n" + dataPropertyValueQueryString); - log.debug("dataPropertyValueQuery:\n" + dataPropertyValueQuery); - - String subjectUri = subject.getURI(); - String propertyUri = property.getURI(); - - QuerySolutionMap bindings = new QuerySolutionMap(); - bindings.add("subject", ResourceFactory.createResource(subjectUri)); - bindings.add("property", ResourceFactory.createResource(propertyUri)); - - // Run the SPARQL query to get the properties - QueryExecution qexec = QueryExecutionFactory.create(dataPropertyValueQuery, getOntModelSelector().getFullModel(), bindings); - ResultSet results = qexec.execSelect(); - - List values = new ArrayList(); - while (results.hasNext()) { - QuerySolution sol = results.next(); - Literal value = sol.getLiteral("value"); - DataPropertyStatement dps = new DataPropertyStatementImpl(subjectUri, propertyUri, value.getLexicalForm()); - values.add(dps); - } - return values; - } } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDaoCon.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDaoCon.java index a0ffb78f9..f48ba3d07 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDaoCon.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/JenaBaseDaoCon.java @@ -73,6 +73,7 @@ public class JenaBaseDaoCon { protected AnnotationProperty PROPERTY_CUSTOMENTRYFORMANNOT = _constModel.createAnnotationProperty(VitroVocabulary.PROPERTY_CUSTOMENTRYFORMANNOT); protected AnnotationProperty PROPERTY_CUSTOMDISPLAYVIEWANNOT = _constModel.createAnnotationProperty(VitroVocabulary.PROPERTY_CUSTOMDISPLAYVIEWANNOT); protected AnnotationProperty PROPERTY_CUSTOMSHORTVIEWANNOT = _constModel.createAnnotationProperty(VitroVocabulary.PROPERTY_CUSTOMSHORTVIEWANNOT); + protected AnnotationProperty PROPERTY_CUSTOM_LIST_VIEW_ANNOT = _constModel.createAnnotationProperty(VitroVocabulary.PROPERTY_CUSTOM_LIST_VIEW_ANNOT); protected AnnotationProperty PROPERTY_CUSTOMSEARCHVIEWANNOT = _constModel.createAnnotationProperty(VitroVocabulary.PROPERTY_CUSTOMSEARCHVIEWANNOT); //protected AnnotationProperty PROPERTY_FORCESTUBDELETIONANNOT = _constModel.createAnnotationProperty(VitroVocabulary.PROPERTY_FORCESTUBDELETIONANNOT); protected AnnotationProperty PROPERTY_SELECTFROMEXISTINGANNOT = _constModel.createAnnotationProperty(VitroVocabulary.PROPERTY_SELECTFROMEXISTINGANNOT); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyDaoJena.java index c0744511a..cff2ca184 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyDaoJena.java @@ -18,8 +18,11 @@ import com.hp.hpl.jena.ontology.OntProperty; import com.hp.hpl.jena.ontology.OntResource; import com.hp.hpl.jena.ontology.ProfileException; import com.hp.hpl.jena.query.Query; +import com.hp.hpl.jena.query.QueryExecution; +import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.query.QueryFactory; import com.hp.hpl.jena.query.QuerySolution; +import com.hp.hpl.jena.query.QuerySolutionMap; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.rdf.model.Literal; import com.hp.hpl.jena.rdf.model.Property; @@ -35,6 +38,9 @@ import com.hp.hpl.jena.vocabulary.RDF; import com.hp.hpl.jena.vocabulary.RDFS; import edu.cornell.mannlib.vitro.webapp.beans.BaseResourceBean; +import edu.cornell.mannlib.vitro.webapp.beans.DataProperty; +import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement; +import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatementImpl; import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty; import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement; @@ -851,6 +857,11 @@ public class ObjectPropertyDaoJena extends PropertyDaoJena implements ObjectProp } return properties; } - + + @Override + public String getCustomShortView() { + //return getPropertyStringValue(, PROPERTY_CUSTOM_LIST_VIEW_ANNOT); + return null; + } } 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 c3f7e752a..a122014f1 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 @@ -8,6 +8,13 @@ import java.util.List; import java.util.Map; import com.hp.hpl.jena.ontology.OntModel; +import com.hp.hpl.jena.query.Query; +import com.hp.hpl.jena.query.QueryExecution; +import com.hp.hpl.jena.query.QueryExecutionFactory; +import com.hp.hpl.jena.query.QueryFactory; +import com.hp.hpl.jena.query.QuerySolution; +import com.hp.hpl.jena.query.QuerySolutionMap; +import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.rdf.model.Property; import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.ResourceFactory; @@ -228,4 +235,40 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec return 0; } + @Override + /* + * SPARQL-based method for getting the individual's values for a single data property. + */ + public List getObjectPropertyStatementsForIndividualByProperty(Individual subject, ObjectProperty property, String queryString) { + + log.debug("Object property query string: " + queryString); + + Query query = null; + try { + query = QueryFactory.create(queryString); + } catch(Throwable th){ + log.error("could not create SPARQL query for query string " + th.getMessage()); + log.error(queryString); + } + + String subjectUri = subject.getURI(); + String propertyUri = property.getURI(); + + QuerySolutionMap bindings = new QuerySolutionMap(); + bindings.add("subject", ResourceFactory.createResource(subjectUri)); + bindings.add("property", ResourceFactory.createResource(propertyUri)); + + // Run the SPARQL query to get the properties + QueryExecution qexec = QueryExecutionFactory.create(query, getOntModelSelector().getFullModel(), bindings); + ResultSet results = qexec.execSelect(); + + List statements = new ArrayList(); + while (results.hasNext()) { + QuerySolution sol = results.next(); + Resource resource = sol.getResource("object"); + ObjectPropertyStatement ops = new ObjectPropertyStatementImpl(subjectUri, propertyUri, resource.getURI()); + statements.add(ops); + } + return statements; + } } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/CollatedObjectPropertyTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/CollatedObjectPropertyTemplateModel.java index c0301e8af..d6709cb93 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/CollatedObjectPropertyTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/CollatedObjectPropertyTemplateModel.java @@ -8,7 +8,9 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty; +import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; public class CollatedObjectPropertyTemplateModel extends ObjectPropertyTemplateModel { @@ -16,8 +18,8 @@ public class CollatedObjectPropertyTemplateModel extends ObjectPropertyTemplateM private List subclassList; - CollatedObjectPropertyTemplateModel(ObjectProperty property) { - super(property); + CollatedObjectPropertyTemplateModel(ObjectProperty property, Individual subject, WebappDaoFactory wdf) { + super(property, subject, wdf); subclassList = new ArrayList(); } 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 e386c35d5..653b8cc8b 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 @@ -2,42 +2,106 @@ package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual; -import java.util.ArrayList; -import java.util.List; +import java.io.File; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty; +import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; -public class ObjectPropertyTemplateModel extends PropertyTemplateModel { - - private static final Log log = LogFactory.getLog(ObjectPropertyTemplateModel.class); +public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel { + private static final Log log = LogFactory.getLog(ObjectPropertyTemplateModel.class); private static final String TYPE = "object"; - private List statements; - ObjectPropertyTemplateModel(ObjectProperty property) { - super(property); - statements = new ArrayList(); - - // get the statements from the db via sparql query + private PropertyListConfig config; + + ObjectPropertyTemplateModel(ObjectProperty op, Individual subject, WebappDaoFactory wdf) { + super(op); + + // Get the config for this object property + config = new PropertyListConfig(op); } - protected static ObjectPropertyTemplateModel getObjectPropertyTemplateModel(ObjectProperty op) { - return op.getCollateBySubclass() ? new CollatedObjectPropertyTemplateModel(op) - : new ObjectPropertyTemplateModel(op); + protected String getQueryString() { + return config.queryString; } + + protected static ObjectPropertyTemplateModel getObjectPropertyTemplateModel(ObjectProperty op, Individual subject, WebappDaoFactory wdf) { + return op.getCollateBySubclass() ? new CollatedObjectPropertyTemplateModel(op, subject, wdf) + : new UncollatedObjectPropertyTemplateModel(op, subject, wdf); + } + + private class PropertyListConfig { + private static final String DEFAULT_CONFIG_FILE = "objectPropertyList-default.xml"; + private static final String CONFIG_FILE_PATH = "/views/"; + private static final String NODE_NAME_QUERY = "query"; + private static final String NODE_NAME_TEMPLATE = "template"; + + private String queryString; + private String templateName; + + PropertyListConfig(ObjectProperty op) { + String filename = DEFAULT_CONFIG_FILE;; + + // Get the config filename from ObjectPropertyDaoJena by looking for the custom property list view annotation. + // If there is none, use the default config filename. + // do stuff here to get the custom config filename *** + + String configFilename = getConfigFilename(filename); + try { + File config = new File(configFilename); + if (configFilename != DEFAULT_CONFIG_FILE && ! config.exists()) { + log.warn("Can't find config file " + configFilename + " for object property " + op.getURI() + "\n" + + ". Using default config file instead."); + configFilename = getConfigFilename(DEFAULT_CONFIG_FILE); + // Should we test for the existence of the default, and throw an error if it doesn't exist? + } + + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + DocumentBuilder db = dbf.newDocumentBuilder(); + Document doc = db.parse(configFilename); + queryString = getConfigValue(doc, NODE_NAME_QUERY); + templateName = getConfigValue(doc, NODE_NAME_TEMPLATE); + } catch (Exception e) { + log.error("Error processing config file " + configFilename + " for object property " + op.getURI(), e); + // What should we do here? + } + } + + private String getConfigValue(Document doc, String nodeName) { + NodeList nodes = doc.getElementsByTagName(nodeName); + Element element = (Element) nodes.item(0); + String value = element.getChildNodes().item(0).getNodeValue(); + log.debug("Value of config parameter " + nodeName + " = " + value); + return value; + } + + private String getConfigFilename(String filename) { + return servletContext.getRealPath(CONFIG_FILE_PATH + filename); + } + } + /* Access methods for templates */ public String getType() { return TYPE; } - public boolean isCollatedBySubclass() { - return false; + public String getTemplate() { + return config.templateName; } + + public abstract boolean isCollatedBySubclass(); @Override public String getAddLink() { @@ -58,9 +122,4 @@ public class ObjectPropertyTemplateModel extends PropertyTemplateModel { // TODO Auto-generated method stub return null; } - - public List getStatements() { - // 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 cdccefa1b..15eab3462 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 @@ -31,7 +31,7 @@ public class PropertyGroupTemplateModel extends BaseTemplateModel { for (Property p : propertyList) { if (p instanceof ObjectProperty) { ObjectProperty op = (ObjectProperty)p; - properties.add(ObjectPropertyTemplateModel.getObjectPropertyTemplateModel(op)); + properties.add(ObjectPropertyTemplateModel.getObjectPropertyTemplateModel(op, subject, wdf)); } else { properties.add(new DataPropertyTemplateModel((DataProperty)p, subject, wdf)); } 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 2951e4ef9..332ecdaff 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 @@ -16,10 +16,12 @@ public abstract class PropertyTemplateModel extends BaseTemplateModel { private static final Log log = LogFactory.getLog(PropertyTemplateModel.class); private String name; - protected Property property; + private String uri; + protected Property property; // needed to get the edit links PropertyTemplateModel(Property property) { this.name = property.getLabel(); + this.uri = property.getURI(); this.property = property; } @@ -30,6 +32,10 @@ public abstract class PropertyTemplateModel extends BaseTemplateModel { public String getName() { return name; } + + public String getUri() { + return uri; + } public abstract String getAddLink(); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/UncollatedObjectPropertyTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/UncollatedObjectPropertyTemplateModel.java new file mode 100644 index 000000000..b7b2e6cbf --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/UncollatedObjectPropertyTemplateModel.java @@ -0,0 +1,47 @@ +/* $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.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import edu.cornell.mannlib.vitro.webapp.beans.Individual; +import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty; +import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement; +import edu.cornell.mannlib.vitro.webapp.dao.ObjectPropertyStatementDao; +import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; + +public class UncollatedObjectPropertyTemplateModel extends ObjectPropertyTemplateModel { + + private static final Log log = LogFactory.getLog(UncollatedObjectPropertyTemplateModel.class); + + private List statements; + + UncollatedObjectPropertyTemplateModel(ObjectProperty op, Individual subject, WebappDaoFactory wdf) { + super(op, subject, wdf); + ObjectPropertyStatementDao opDao = wdf.getObjectPropertyStatementDao(); + List opStatements = opDao.getObjectPropertyStatementsForIndividualByProperty(subject, op, getQueryString()); + statements = new ArrayList(); + for (ObjectPropertyStatement ops : opStatements) { + statements.add(new ObjectPropertyStatementTemplateModel(ops)); + } + } + + public List getStatements() { + return statements; + } + +// public List getStatements() { +// return subclassList; +// } + + /* Access methods for templates */ + + @Override + public boolean isCollatedBySubclass() { + return false; + } +} diff --git a/webapp/web/templates/freemarker/body/individual/individual-properties.ftl b/webapp/web/templates/freemarker/body/individual/individual-properties.ftl index 894f4d8a7..132246b59 100644 --- a/webapp/web/templates/freemarker/body/individual/individual-properties.ftl +++ b/webapp/web/templates/freemarker/body/individual/individual-properties.ftl @@ -36,13 +36,16 @@ <#-- List the statements for each property --> <#if property.type == "data"> <#-- data property --> <#list property.statements as statement> -
+
${statement.value} -
+
<#else> <#-- object property -->

Collated? ${property.collatedBySubclass?string("yes", "no")}

+ <#if ! property.collatedBySubclass> <#-- temporary, till we handle collated props --> + <#include "${property.template}"> + diff --git a/webapp/web/templates/freemarker/body/individual/objectPropertyList-default.ftl b/webapp/web/templates/freemarker/body/individual/objectPropertyList-default.ftl new file mode 100644 index 000000000..71fccfe2b --- /dev/null +++ b/webapp/web/templates/freemarker/body/individual/objectPropertyList-default.ftl @@ -0,0 +1,10 @@ +<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> + +<#-- Default object property list template --> + +<#list property.statements as statement> +
+ <#-- ${statement.object.name} --> + statement ${statement_index +1} +
+ \ No newline at end of file diff --git a/webapp/web/views/objectPropertyList-default.xml b/webapp/web/views/objectPropertyList-default.xml new file mode 100644 index 000000000..596f0e0ca --- /dev/null +++ b/webapp/web/views/objectPropertyList-default.xml @@ -0,0 +1,11 @@ + + + + + SELECT ?object WHERE { + ?subject ?property ?object . + } + + + + \ No newline at end of file