[VIVO-1245] Cleanup of DefaultAddMissingIndividualFormGenerator

This commit is contained in:
Graham Triggs 2016-05-24 17:05:15 +01:00
parent 38836c15c9
commit b285e0d62b
4 changed files with 49 additions and 21 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.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",

View file

@ -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<String,String> defaultsForXSDtypes ;
static {
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
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<String, String> generateNewResources(VitroRequest vreq) {
protected Map<String, String> generateNewResources(VitroRequest vreq) {
HashMap<String, String> newResources = new HashMap<String, String>();
//Null triggers default namespace
newResources.put(objectVarName, null);
@ -210,14 +232,14 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
return n3ForEdit;
}
private List<String> getN3Prefixes() {
protected List<String> getN3Prefixes() {
List<String> prefixStrings = new ArrayList<String>();
prefixStrings.add("@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .");
prefixStrings.add("@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .");
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<String> generateN3Optional(VitroRequest vreq) {
protected List<String> generateN3Optional(VitroRequest vreq) {
//flag uri and asserted types need to be added here
List<String> n3Optional = new ArrayList<String>();
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<String> urisOnForm = new ArrayList<String>();
List<String> literalsOnForm = new ArrayList<String>();
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<String, FieldVTwo> fields = new HashMap<String, FieldVTwo>();
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;
}
}
}

View file

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

View file

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