From eea4681c60a7e2ff00fae768e63aa5a54b5dec8e Mon Sep 17 00:00:00 2001 From: hudajkhan Date: Fri, 16 Nov 2012 17:09:21 -0500 Subject: [PATCH] Updates to DateTimeValueGenerator to allow it to be extended into subclasses for other predicates --- .../DateTimeValueFormGenerator.java | 67 ++++++++++++------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DateTimeValueFormGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DateTimeValueFormGenerator.java index f6d97b2e6..ebb7b298e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DateTimeValueFormGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DateTimeValueFormGenerator.java @@ -27,7 +27,7 @@ public class DateTimeValueFormGenerator extends BaseEditConfigurationGenerator implements EditConfigurationGenerator { final static String vivoCore = "http://vivoweb.org/ontology/core#"; - final static String toDateTimeValue = vivoCore + "dateTimeValue"; + final String toDateTimeValue = vivoCore + "dateTimeValue"; final static String valueType = vivoCore + "DateTimeValue"; final static String dateTimeValue = vivoCore + "dateTime"; final static String dateTimePrecision = vivoCore + "dateTimePrecision"; @@ -41,23 +41,23 @@ public class DateTimeValueFormGenerator extends BaseEditConfigurationGenerator initPropertyParameters(vreq, session, conf); initObjectPropForm(conf, vreq); - conf.setTemplate("dateTimeValueForm.ftl"); + conf.setTemplate(this.getTemplate()); conf.setVarNameForSubject("subject"); conf.setVarNameForPredicate("toDateTimeValue"); conf.setVarNameForObject("valueNode"); - conf.setN3Optional(Arrays.asList(n3ForValue)); + conf.setN3Optional(Arrays.asList(getN3ForValue())); conf.addNewResource("valueNode", DEFAULT_NS_FOR_NEW_RESOURCE); conf.addSparqlForExistingLiteral( - "dateTimeField-value", existingDateTimeValueQuery); + "dateTimeField-value", getExistingDateTimeValueQuery()); conf.addSparqlForExistingUris( - "dateTimeField-precision", existingPrecisionQuery); - conf.addSparqlForExistingUris("valueNode", existingNodeQuery); + "dateTimeField-precision", getExistingPrecisionQuery()); + conf.addSparqlForExistingUris("valueNode", getExistingNodeQuery()); - FieldVTwo dateTimeField = new FieldVTwo().setName("dateTimeField"); + FieldVTwo dateTimeField = new FieldVTwo().setName(this.getDateTimeFieldName()); dateTimeField.setEditElement(new DateTimeWithPrecisionVTwo(dateTimeField, VitroVocabulary.Precision.SECOND.uri(), VitroVocabulary.Precision.NONE.uri())); @@ -67,34 +67,40 @@ public class DateTimeValueFormGenerator extends BaseEditConfigurationGenerator //Adding additional data, specifically edit mode addFormSpecificData(conf, vreq); //prepare - prepare(vreq, conf); - return conf; - } + prepare(vreq, conf); + return conf; + } - final static String n3ForValue = - "?subject <" + toDateTimeValue + "> ?valueNode . \n" + + + //Writing these as methods instead of static strings allows the method getToDateTimeValuePredicate + //to be called after the class has been initialized - this is important for subclasses of this generator + //that rely on vreq for predicate + protected String getN3ForValue() { + return "?subject <" + this.getToDateTimeValuePredicate() + "> ?valueNode . \n" + "?valueNode a <" + valueType + "> . \n" + "?valueNode <" + dateTimeValue + "> ?dateTimeField-value . \n" + - "?valueNode <" + dateTimePrecision + "> ?dateTimeField-precision ."; + "?valueNode <" + dateTimePrecision + "> ?dateTimeField-precision ."; + } - final static String existingDateTimeValueQuery = - "SELECT ?existingDateTimeValue WHERE { \n" + - "?subject <" + toDateTimeValue + "> ?existingValueNode . \n" + + protected String getExistingDateTimeValueQuery () { + return "SELECT ?existingDateTimeValue WHERE { \n" + + "?subject <" + this.getToDateTimeValuePredicate() + "> ?existingValueNode . \n" + "?existingValueNode a <" + valueType + "> . \n" + "?existingValueNode <" + dateTimeValue + "> ?existingDateTimeValue }"; + } - final static String existingPrecisionQuery = - "SELECT ?existingPrecision WHERE { \n" + - "?subject <" + toDateTimeValue + "> ?existingValueNode . \n" + + protected String getExistingPrecisionQuery() { + return "SELECT ?existingPrecision WHERE { \n" + + "?subject <" + this.getToDateTimeValuePredicate() + "> ?existingValueNode . \n" + "?existingValueNode a <" + valueType + "> . \n" + "?existingValueNode <" + dateTimePrecision + "> ?existingPrecision }"; - - final static String existingNodeQuery = - "SELECT ?existingNode WHERE { \n" + - "?subject <" + toDateTimeValue + "> ?existingNode . \n" + + } + protected String getExistingNodeQuery() { + return "SELECT ?existingNode WHERE { \n" + + "?subject <" + this.getToDateTimeValuePredicate() + "> ?existingNode . \n" + "?existingNode a <" + valueType + "> }"; - + } public static String getNodeVar() { return "valueNode"; } @@ -103,6 +109,19 @@ public class DateTimeValueFormGenerator extends BaseEditConfigurationGenerator return "?" + getNodeVar(); } + //isolating the predicate in this fashion allows this class to be subclassed for other date time value + //properties + protected String getToDateTimeValuePredicate() { + return this.toDateTimeValue; + } + + protected String getDateTimeFieldName() { + return "dateTimeField"; + } + + protected String getTemplate() { + return "dateTimeValueForm.ftl"; + } //Adding form specific data such as edit mode public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { HashMap formSpecificData = new HashMap();