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 c6f2e1029..7d860c146 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.class.getName()); + edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DefaultAddMissingIndividualFormGenerator.getImplementationName()); map.put("defaultDatapropForm.jsp", edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DefaultDataPropertyFormGenerator.class.getName()); map.put("defaultObjPropForm.jsp", 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 dc9ef5acf..ab6380235 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 @@ -10,6 +10,7 @@ import java.util.Map; import javax.servlet.http.HttpSession; +import edu.cornell.mannlib.vitro.webapp.web.templatemodels.searchresult.IndividualSearchResult; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -34,8 +35,7 @@ import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess; * */ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurationGenerator { - - private Log log = LogFactory.getLog(DefaultAddMissingIndividualFormGenerator.class); + private static final Log log = LogFactory.getLog(DefaultAddMissingIndividualFormGenerator.class); private boolean isObjectPropForm = false; private String subjectUri = null; private String predicateUri = null; @@ -43,16 +43,35 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati private String template = "defaultAddMissingIndividualForm.ftl"; private static String createCommand = "create"; - private static String objectVarName = "newIndividual"; + protected static String objectVarName = "newIndividual"; private static HashMap defaultsForXSDtypes ; - static { + + 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 - public static boolean isCreateNewIndividual(VitroRequest vreq, HttpSession session) { + public static final boolean isCreateNewIndividual(VitroRequest vreq, HttpSession session) { String command = vreq.getParameter("cmd"); String predicateUri = EditConfigurationUtils.getPredicateUri(vreq); //This method also looks at domain and range uris and so is different than just getting the @@ -97,7 +116,10 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati //set fields setFields(editConfiguration, vreq, EditConfigurationUtils.getPredicateUri(vreq)); - + + //form specific data + addFormSpecificData(editConfiguration, vreq); + //add preprocesoors addPreprocessors(vreq, editConfiguration); @@ -116,7 +138,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati return editConfiguration; } - private Map generateNewResources(VitroRequest vreq) { + protected Map generateNewResources(VitroRequest vreq) { HashMap newResources = new HashMap(); //Null triggers default namespace newResources.put(objectVarName, null); @@ -210,14 +232,14 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati return n3ForEdit; } - private List getN3Prefixes() { + protected List getN3Prefixes() { List prefixStrings = new ArrayList(); prefixStrings.add("@prefix rdf: ."); prefixStrings.add("@prefix rdfs: ."); return prefixStrings; } - private String getN3PrefixesAsString() { + protected String getN3PrefixesAsString() { String prefixes = StringUtils.join(getN3Prefixes(), "\n"); return prefixes; } @@ -226,7 +248,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati return "?" + objectVarName + " rdfs:label ?name ."; } - private List generateN3Optional(VitroRequest vreq) { + protected List generateN3Optional(VitroRequest vreq) { //flag uri and asserted types need to be added here List n3Optional = new ArrayList(); n3Optional.add("?" + objectVarName + " ?inverseProp ?subject ."); @@ -268,7 +290,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati //n3 should look as follows //?subject ?predicate ?objectVar - private void setUrisAndLiteralsOnForm(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { + protected void setUrisAndLiteralsOnForm(EditConfigurationVTwo editConfiguration, VitroRequest vreq) { List urisOnForm = new ArrayList(); List literalsOnForm = new ArrayList(); literalsOnForm.add("name"); @@ -308,7 +330,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati } - private void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq, String predicateUri) { + protected void setFields(EditConfigurationVTwo editConfiguration, VitroRequest vreq, String predicateUri) { Map fields = new HashMap(); if(EditConfigurationUtils.isObjectProperty(EditConfigurationUtils.getPredicateUri(vreq), vreq)) { @@ -391,7 +413,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati return (typeOfNew != null && !typeOfNew.isEmpty()); } - private String getTypeOfNew(VitroRequest vreq) { + protected String getTypeOfNew(VitroRequest vreq) { return vreq.getParameter("typeOfNew"); } // The default object proepty form offers the option to create a new item @@ -456,7 +478,13 @@ 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 d2528fb2f..7d1e06763 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 @@ -98,7 +98,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 = new DefaultAddMissingIndividualFormGenerator(); + DefaultAddMissingIndividualFormGenerator generator = DefaultAddMissingIndividualFormGenerator.create(); return generator.getEditConfiguration(vreq, session); } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/searchresult/IndividualSearchResult.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/searchresult/IndividualSearchResult.java index 9c72e2d71..b477c9cd3 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/searchresult/IndividualSearchResult.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/web/templatemodels/searchresult/IndividualSearchResult.java @@ -47,13 +47,13 @@ public class IndividualSearchResult extends BaseTemplateModel { Constructor ctor = resultClass.getDeclaredConstructor(Individual.class, VitroRequest.class); models.add((IndividualSearchResult)ctor.newInstance(individual, vreq)); } catch (NoSuchMethodException e) { - e.printStackTrace(); + log.error("Unable to create IndividualSearchResult", e); } catch (InstantiationException e) { - e.printStackTrace(); + log.error("Unable to create IndividualSearchResult", e); } catch (IllegalAccessException e) { - e.printStackTrace(); + log.error("Unable to create IndividualSearchResult", e); } catch (InvocationTargetException e) { - e.printStackTrace(); + log.error("Unable to create IndividualSearchResult", e); } } return models;