From fbeed01a94916da277aacec6071ce25b32acff66 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Wed, 25 May 2016 17:06:21 +0100 Subject: [PATCH] [VIVO-1245] Cleanup of NewIndividualFormGenerator, simplify configuration of generators and improve means of configuring in Freemarker --- .../n3editing/VTwo/JspToGeneratorMapping.java | 16 ++++++++++- ...aultAddMissingIndividualFormGenerator.java | 27 +------------------ .../DefaultObjectPropertyFormGenerator.java | 3 ++- .../NewIndividualFormGenerator.java | 4 +-- .../body/menupage/page-pageList.ftl | 4 ++- .../body/pagemanagement/page-pageList.ftl | 4 ++- .../body/siteAdmin/siteAdmin-dataInput.ftl | 3 ++- .../freemarker/lib/lib-generator-classes.ftl | 4 +++ .../freemarker/lib/lib-properties-classes.ftl | 5 ---- .../freemarker/lib/lib-properties.ftl | 4 +-- 10 files changed, 34 insertions(+), 40 deletions(-) create mode 100644 webapp/src/main/webapp/templates/freemarker/lib/lib-generator-classes.ftl delete mode 100644 webapp/src/main/webapp/templates/freemarker/lib/lib-properties-classes.ftl diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/JspToGeneratorMapping.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/JspToGeneratorMapping.java index 7d860c146..6a59b161a 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/JspToGeneratorMapping.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/JspToGeneratorMapping.java @@ -30,7 +30,7 @@ public class JspToGeneratorMapping { map.put("dateTimeValueForm.jsp", edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimeValueFormGenerator.class.getName()); map.put("defaultAddMissingIndividualForm.jsp", - edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DefaultAddMissingIndividualFormGenerator.getImplementationName()); + edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DefaultAddMissingIndividualFormGenerator.class.getName()); map.put("defaultDatapropForm.jsp", edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DefaultDataPropertyFormGenerator.class.getName()); map.put("defaultObjPropForm.jsp", @@ -56,4 +56,18 @@ public class JspToGeneratorMapping { log.error( "could not load VIVO jsp mappings",th ); } } + + public static T createFor(String jsp, Class clazz) { + try { + if (jspsToGenerators.containsKey(jsp)) { + Class classDefinition = Class.forName(jspsToGenerators.get(jsp)); + if (clazz.isAssignableFrom(classDefinition)) { + return (T) classDefinition.newInstance(); + } + } + } catch (Throwable th) { + } + + return null; + } } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultAddMissingIndividualFormGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultAddMissingIndividualFormGenerator.java index ab6380235..9404ce6e4 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultAddMissingIndividualFormGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultAddMissingIndividualFormGenerator.java @@ -46,31 +46,13 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati protected static String objectVarName = "newIndividual"; private static HashMap defaultsForXSDtypes ; - private static Class defaultGeneratorClass = DefaultAddMissingIndividualFormGenerator.class; - static { defaultsForXSDtypes = new HashMap(); //defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","2001-01-01T12:00:00"); defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","#Unparseable datetime defaults to now"); } - protected DefaultAddMissingIndividualFormGenerator() { } - - public static final DefaultAddMissingIndividualFormGenerator create() { - try { - return (DefaultAddMissingIndividualFormGenerator) defaultGeneratorClass.newInstance(); - } catch (InstantiationException e) { - throw new IllegalStateException("Unable to create DefaultAddMissingIndividualFormGenerator", e); - } catch (IllegalAccessException e) { - throw new IllegalStateException("Unable to create DefaultAddMissingIndividualFormGenerator", e); - } - } - - public static final String getImplementationName() { - return defaultGeneratorClass.getName(); - } - - //Method which checks whether this particular generator should be employed + //Method which checks whether this particular generator should be employed public static final boolean isCreateNewIndividual(VitroRequest vreq, HttpSession session) { String command = vreq.getParameter("cmd"); String predicateUri = EditConfigurationUtils.getPredicateUri(vreq); @@ -480,11 +462,4 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { } - - - protected static void registerGeneratorClass(Class clazz) { - if (DefaultAddMissingIndividualFormGenerator.class.isAssignableFrom(clazz)) { - defaultGeneratorClass = clazz; - } - } } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultObjectPropertyFormGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultObjectPropertyFormGenerator.java index 7d1e06763..60fd889d8 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultObjectPropertyFormGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultObjectPropertyFormGenerator.java @@ -12,6 +12,7 @@ import java.util.Map; import javax.servlet.http.HttpSession; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.JspToGeneratorMapping; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -98,7 +99,7 @@ public class DefaultObjectPropertyFormGenerator implements EditConfigurationGene //Check if create new and return specific edit configuration from that generator. if(DefaultAddMissingIndividualFormGenerator.isCreateNewIndividual(vreq, session)) { - DefaultAddMissingIndividualFormGenerator generator = DefaultAddMissingIndividualFormGenerator.create(); + EditConfigurationGenerator generator = JspToGeneratorMapping.createFor("defaultAddMissingIndividualForm.jsp", DefaultAddMissingIndividualFormGenerator.class); return generator.getEditConfiguration(vreq, session); } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/NewIndividualFormGenerator.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/NewIndividualFormGenerator.java index f46d60022..98440ba14 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/NewIndividualFormGenerator.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/NewIndividualFormGenerator.java @@ -37,11 +37,11 @@ public class NewIndividualFormGenerator implements EditConfigurationGenerator { private String template = "newIndividualForm.ftl"; private static HashMap defaultsForXSDtypes ; - static { + static { defaultsForXSDtypes = new HashMap(); //defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","2001-01-01T12:00:00"); defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","#Unparseable datetime defaults to now"); - } + } @Override public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) { diff --git a/webapp/src/main/webapp/templates/freemarker/body/menupage/page-pageList.ftl b/webapp/src/main/webapp/templates/freemarker/body/menupage/page-pageList.ftl index 80cef6ac6..eb587e880 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/menupage/page-pageList.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/menupage/page-pageList.ftl @@ -1,5 +1,7 @@ <#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> +<#import "lib-generator-classes.ftl" as generators /> +
<#if pages?has_content > @@ -25,7 +27,7 @@
- +
diff --git a/webapp/src/main/webapp/templates/freemarker/body/pagemanagement/page-pageList.ftl b/webapp/src/main/webapp/templates/freemarker/body/pagemanagement/page-pageList.ftl index 2884d8b09..628a284b7 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/pagemanagement/page-pageList.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/pagemanagement/page-pageList.ftl @@ -1,5 +1,7 @@ <#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> +<#import "lib-generator-classes.ftl" as generators /> +
<#if pages?has_content > @@ -25,7 +27,7 @@
- +
diff --git a/webapp/src/main/webapp/templates/freemarker/body/siteAdmin/siteAdmin-dataInput.ftl b/webapp/src/main/webapp/templates/freemarker/body/siteAdmin/siteAdmin-dataInput.ftl index f3092db01..c79a7c90b 100644 --- a/webapp/src/main/webapp/templates/freemarker/body/siteAdmin/siteAdmin-dataInput.ftl +++ b/webapp/src/main/webapp/templates/freemarker/body/siteAdmin/siteAdmin-dataInput.ftl @@ -3,6 +3,7 @@ <#-- Template for Site Administration data input panel --> <#import "lib-form.ftl" as form> +<#import "lib-generator-classes.ftl" as generators /> <#if dataInput?has_content>
@@ -12,7 +13,7 @@ - + diff --git a/webapp/src/main/webapp/templates/freemarker/lib/lib-generator-classes.ftl b/webapp/src/main/webapp/templates/freemarker/lib/lib-generator-classes.ftl new file mode 100644 index 000000000..d88ae03b5 --- /dev/null +++ b/webapp/src/main/webapp/templates/freemarker/lib/lib-generator-classes.ftl @@ -0,0 +1,4 @@ +<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> + +<#assign ManageLabelsGenerator = "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.ManageLabelsGenerator" /> +<#assign NewIndividualFormGenerator = "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.NewIndividualFormGenerator" /> diff --git a/webapp/src/main/webapp/templates/freemarker/lib/lib-properties-classes.ftl b/webapp/src/main/webapp/templates/freemarker/lib/lib-properties-classes.ftl deleted file mode 100644 index 0a8ee084a..000000000 --- a/webapp/src/main/webapp/templates/freemarker/lib/lib-properties-classes.ftl +++ /dev/null @@ -1,5 +0,0 @@ -<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> - -<#function class_ManageLabelsGenerator> - <#return "edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.VIVOManageLabelsGenerator" /> - \ No newline at end of file diff --git a/webapp/src/main/webapp/templates/freemarker/lib/lib-properties.ftl b/webapp/src/main/webapp/templates/freemarker/lib/lib-properties.ftl index 7b6f86805..881e7e412 100644 --- a/webapp/src/main/webapp/templates/freemarker/lib/lib-properties.ftl +++ b/webapp/src/main/webapp/templates/freemarker/lib/lib-properties.ftl @@ -4,7 +4,7 @@ Macros and functions for working with properties and property lists ------------------------------------------------------------------------------> -<#include "lib-properties-classes.ftl" /> +<#import "lib-generator-classes.ftl" as generators /> <#-- Return true iff there are statements for this property --> <#function hasStatements propertyGroups propertyName> @@ -304,7 +304,7 @@ name will be used as the label. --> <#if editable> <#assign imageAlt = "${i18n().manage}" /> <#assign linkTitle = "${i18n().manage_list_of_labels}"> - <#assign labelLink= "${urls.base}/editRequestDispatch?subjectUri=${individualUri}&editForm=${class_ManageLabelsGenerator}&predicateUri=${labelPropertyUri}${extraParameters}"> + <#assign labelLink= "${urls.base}/editRequestDispatch?subjectUri=${individualUri}&editForm=${generators.ManageLabelsGenerator}&predicateUri=${labelPropertyUri}${extraParameters}"> <#else> <#assign linkTitle = "${i18n().view_list_of_labels}"> <#assign imageAlt = "${i18n().view}" />