[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",
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> 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";
private static HashMap<String,String> defaultsForXSDtypes ;
private static Class defaultGeneratorClass = DefaultAddMissingIndividualFormGenerator.class;
static {
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","#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;
}
}
}

View file

@ -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);
}

View file

@ -37,11 +37,11 @@ public class NewIndividualFormGenerator implements EditConfigurationGenerator {
private String template = "newIndividualForm.ftl";
private static HashMap<String,String> defaultsForXSDtypes ;
static {
static {
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","#Unparseable datetime defaults to now");
}
}
@Override
public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) {