[VIVO-1245] Cleanup of NewIndividualFormGenerator, simplify configuration of generators and improve means of configuring in Freemarker

This commit is contained in:
Graham Triggs 2016-05-25 17:06:21 +01:00
parent 5cbcab5bcc
commit fbeed01a94
10 changed files with 34 additions and 40 deletions

View file

@ -30,7 +30,7 @@ public class JspToGeneratorMapping {
map.put("dateTimeValueForm.jsp", map.put("dateTimeValueForm.jsp",
edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimeValueFormGenerator.class.getName()); edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DateTimeValueFormGenerator.class.getName());
map.put("defaultAddMissingIndividualForm.jsp", 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", map.put("defaultDatapropForm.jsp",
edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DefaultDataPropertyFormGenerator.class.getName()); edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DefaultDataPropertyFormGenerator.class.getName());
map.put("defaultObjPropForm.jsp", map.put("defaultObjPropForm.jsp",
@ -56,4 +56,18 @@ public class JspToGeneratorMapping {
log.error( "could not load VIVO jsp mappings",th ); log.error( "could not load VIVO jsp mappings",th );
} }
} }
public static <T> T createFor(String jsp, Class<T> 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;
}
} }

View file

@ -46,31 +46,13 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
protected static String objectVarName = "newIndividual"; protected static String objectVarName = "newIndividual";
private static HashMap<String,String> defaultsForXSDtypes ; private static HashMap<String,String> defaultsForXSDtypes ;
private static Class defaultGeneratorClass = DefaultAddMissingIndividualFormGenerator.class;
static { static {
defaultsForXSDtypes = new HashMap<String,String>(); defaultsForXSDtypes = new HashMap<String,String>();
//defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","2001-01-01T12:00:00"); //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"); defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","#Unparseable datetime defaults to now");
} }
protected DefaultAddMissingIndividualFormGenerator() { } //Method which checks whether this particular generator should be employed
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
public static final boolean isCreateNewIndividual(VitroRequest vreq, HttpSession session) { public static final boolean isCreateNewIndividual(VitroRequest vreq, HttpSession session) {
String command = vreq.getParameter("cmd"); String command = vreq.getParameter("cmd");
String predicateUri = EditConfigurationUtils.getPredicateUri(vreq); String predicateUri = EditConfigurationUtils.getPredicateUri(vreq);
@ -480,11 +462,4 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
} }
protected static void registerGeneratorClass(Class clazz) {
if (DefaultAddMissingIndividualFormGenerator.class.isAssignableFrom(clazz)) {
defaultGeneratorClass = clazz;
}
}
} }

View file

@ -12,6 +12,7 @@ import java.util.Map;
import javax.servlet.http.HttpSession; 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.Log;
import org.apache.commons.logging.LogFactory; 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. //Check if create new and return specific edit configuration from that generator.
if(DefaultAddMissingIndividualFormGenerator.isCreateNewIndividual(vreq, session)) { if(DefaultAddMissingIndividualFormGenerator.isCreateNewIndividual(vreq, session)) {
DefaultAddMissingIndividualFormGenerator generator = DefaultAddMissingIndividualFormGenerator.create(); EditConfigurationGenerator generator = JspToGeneratorMapping.createFor("defaultAddMissingIndividualForm.jsp", DefaultAddMissingIndividualFormGenerator.class);
return generator.getEditConfiguration(vreq, session); return generator.getEditConfiguration(vreq, session);
} }

View file

@ -37,11 +37,11 @@ public class NewIndividualFormGenerator implements EditConfigurationGenerator {
private String template = "newIndividualForm.ftl"; private String template = "newIndividualForm.ftl";
private static HashMap<String,String> defaultsForXSDtypes ; private static HashMap<String,String> defaultsForXSDtypes ;
static { static {
defaultsForXSDtypes = new HashMap<String,String>(); defaultsForXSDtypes = new HashMap<String,String>();
//defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","2001-01-01T12:00:00"); //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"); defaultsForXSDtypes.put("http://www.w3.org/2001/XMLSchema#dateTime","#Unparseable datetime defaults to now");
} }
@Override @Override
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) { public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) {

View file

@ -1,5 +1,7 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#import "lib-generator-classes.ftl" as generators />
<div> <div>
<#if pages?has_content > <#if pages?has_content >
@ -25,7 +27,7 @@
<form id="addIndividualClass" action="${urls.base}/editRequestDispatch" method="get"> <form id="addIndividualClass" action="${urls.base}/editRequestDispatch" method="get">
<input type="hidden" name="typeOfNew" value="http://vitro.mannlib.cornell.edu/ontologies/display/1.1#Page"> <input type="hidden" name="typeOfNew" value="http://vitro.mannlib.cornell.edu/ontologies/display/1.1#Page">
<input type="hidden" name="switchToDisplayModel" value="1"> <input type="hidden" name="switchToDisplayModel" value="1">
<input type="hidden" name="editForm" value="edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.NewIndividualFormGenerator" role="input"> <input type="hidden" name="editForm" value="${generators.NewIndividualFormGenerator}" role="input">
<input type="submit" id="submit" value="${i18n().add_page}" role="button"> <input type="submit" id="submit" value="${i18n().add_page}" role="button">
</form> </form>

View file

@ -1,5 +1,7 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> <#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#import "lib-generator-classes.ftl" as generators />
<div> <div>
<#if pages?has_content > <#if pages?has_content >
@ -25,7 +27,7 @@
<form id="addIndividualClass" action="${urls.base}/editRequestDispatch" method="get"> <form id="addIndividualClass" action="${urls.base}/editRequestDispatch" method="get">
<input type="hidden" name="typeOfNew" value="http://vitro.mannlib.cornell.edu/ontologies/display/1.1#Page"> <input type="hidden" name="typeOfNew" value="http://vitro.mannlib.cornell.edu/ontologies/display/1.1#Page">
<input type="hidden" name="switchToDisplayModel" value="1"> <input type="hidden" name="switchToDisplayModel" value="1">
<input type="hidden" name="editForm" value="edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.NewIndividualFormGenerator" role="input"> <input type="hidden" name="editForm" value="${generators.NewIndividualFormGenerator}" role="input">
<input type="submit" id="submit" value="${i18n().Add_page}" role="button"> <input type="submit" id="submit" value="${i18n().Add_page}" role="button">
</form> </form>

View file

@ -3,6 +3,7 @@
<#-- Template for Site Administration data input panel --> <#-- Template for Site Administration data input panel -->
<#import "lib-form.ftl" as form> <#import "lib-form.ftl" as form>
<#import "lib-generator-classes.ftl" as generators />
<#if dataInput?has_content> <#if dataInput?has_content>
<section class="pageBodyGroup" role="region"> <section class="pageBodyGroup" role="region">
@ -12,7 +13,7 @@
<select id="VClassURI" name="typeOfNew" class="form-item long-options" role="select"> <select id="VClassURI" name="typeOfNew" class="form-item long-options" role="select">
<@form.optionGroups groups=dataInput.groupedClassOptions /> <@form.optionGroups groups=dataInput.groupedClassOptions />
</select> </select>
<input type="hidden" name="editForm" value="edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.NewIndividualFormGenerator" role="input" /> <input type="hidden" name="editForm" value="${generators.NewIndividualFormGenerator}" role="input" />
<input type="submit" id="submit" value="${i18n().add_individual_of_class}" role="button" /> <input type="submit" id="submit" value="${i18n().add_individual_of_class}" role="button" />
</form> </form>

View file

@ -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" />

View file

@ -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" />
</#function>

View file

@ -4,7 +4,7 @@
Macros and functions for working with properties and property lists 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 --> <#-- Return true iff there are statements for this property -->
<#function hasStatements propertyGroups propertyName> <#function hasStatements propertyGroups propertyName>
@ -304,7 +304,7 @@ name will be used as the label. -->
<#if editable> <#if editable>
<#assign imageAlt = "${i18n().manage}" /> <#assign imageAlt = "${i18n().manage}" />
<#assign linkTitle = "${i18n().manage_list_of_labels}"> <#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> <#else>
<#assign linkTitle = "${i18n().view_list_of_labels}"> <#assign linkTitle = "${i18n().view_list_of_labels}">
<#assign imageAlt = "${i18n().view}" /> <#assign imageAlt = "${i18n().view}" />