From d6906af33b18092d08b53b45e46192e30c550917 Mon Sep 17 00:00:00 2001 From: rjy7 Date: Mon, 13 Dec 2010 20:39:56 +0000 Subject: [PATCH] NIHVIVO-1510 Provide for display of collated properties as uncollated if the config doesn't specify a collation target. --- .../CollatedObjectPropertyTemplateModel.java | 13 ++++++- .../ObjectPropertyTemplateModel.java | 39 ++++++++++++++----- 2 files changed, 41 insertions(+), 11 deletions(-) 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 bffe01d3c..17ebe61ca 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 @@ -22,8 +22,17 @@ public class CollatedObjectPropertyTemplateModel extends ObjectPropertyTemplateM private Map> collatedStatements; //private List subclassList; - CollatedObjectPropertyTemplateModel(ObjectProperty op, Individual subject, WebappDaoFactory wdf) { - super(op, subject, wdf); + CollatedObjectPropertyTemplateModel(ObjectProperty op, Individual subject, WebappDaoFactory wdf) throws Exception { + super(op, subject, wdf); + + /* RY Temporarily throw an error because collation hasn't been implemented yet. We'll then use an uncollated one instead. + * In final version, throw an error if config doesn't contain collation-target element. We'll use an uncollated one instead. + */ + boolean error = true; + if (error) { + throw new Exception("No collation target specified for collated object property " + op.getLabel()); + } + ObjectPropertyStatementDao opDao = wdf.getObjectPropertyStatementDao(); String subjectUri = subject.getURI(); String propertyUri = op.getURI(); 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 126fc49e3..dee3ad91e 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 @@ -31,7 +31,11 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel super(op); // Get the config for this object property - config = new PropertyListConfig(op); + try { + config = new PropertyListConfig(op); + } catch (Exception e) { + log.error(e, e); + } } protected String getQueryString() { @@ -43,10 +47,15 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel } protected static ObjectPropertyTemplateModel getObjectPropertyTemplateModel(ObjectProperty op, Individual subject, WebappDaoFactory wdf) { -// Temporarily comment out, since collation not working. Display as uncollated for now. -// return op.getCollateBySubclass() ? new CollatedObjectPropertyTemplateModel(op, subject, wdf) -// : new UncollatedObjectPropertyTemplateModel(op, subject, wdf); - return new UncollatedObjectPropertyTemplateModel(op, subject, wdf); + if (op.getCollateBySubclass()) { + try { + return new CollatedObjectPropertyTemplateModel(op, subject, wdf); + } catch (Exception e) { + return new UncollatedObjectPropertyTemplateModel(op, subject, wdf); + } + } else { + return new UncollatedObjectPropertyTemplateModel(op, subject, wdf); + } } private class PropertyListConfig { @@ -61,7 +70,7 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel private String templateName; private String collationTarget; - PropertyListConfig(ObjectProperty op) { + PropertyListConfig(ObjectProperty op) throws Exception { String filename = DEFAULT_CONFIG_FILE;; // Get the config filename from ObjectPropertyDaoJena by looking for the custom property list view annotation. @@ -88,14 +97,26 @@ public abstract class ObjectPropertyTemplateModel extends PropertyTemplateModel log.error("Error processing config file " + configFilename + " for object property " + op.getURI(), e); // What should we do here? } + + if (queryString == null) { + throw new Exception("Invalid custom view configuration: query string not defined."); + } + if (templateName == null) { + throw new Exception("Invalid custom view configuration: template name not defined."); + } } 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; + String value = null; + if (element != null) { + value = element.getChildNodes().item(0).getNodeValue(); + log.debug("Value of config parameter " + nodeName + " = " + value); + } else { + log.warn("No value for config parameter " + nodeName); + } + return value; } private String getConfigFilename(String filename) {