updates to forms to include prepare for update within generators instead of in edit request dispatch controller which was overriding default add new individual form's functionality in case of creating a new object to replace an existing one

This commit is contained in:
hjkhjk54 2011-12-01 21:08:14 +00:00
parent 5e89e6f4ff
commit 535f07ceaa
8 changed files with 46 additions and 34 deletions

View file

@ -6,6 +6,8 @@ import java.util.List;
import javax.servlet.http.HttpSession;
import com.hp.hpl.jena.rdf.model.Model;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo;
@ -48,6 +50,35 @@ public abstract class BaseEditConfigurationGenerator implements EditConfiguratio
editConfiguration.setObject( EditConfigurationUtils.getObjectUri(vreq) );
}
//Prepare for update or non-update
//Originally included in edit request dispatch controller but moved here due to
//exceptions such as default add missing individual form
void prepare(VitroRequest vreq, EditConfigurationVTwo editConfig) {
//This used to get the model from the servlet context
// Model model = (Model) getServletContext().getAttribute("jenaOntModel");
Model model = vreq.getJenaOntModel();
if( editConfig.getSubjectUri() == null)
editConfig.setSubjectUri( EditConfigurationUtils.getSubjectUri(vreq));
if( editConfig.getPredicateUri() == null )
editConfig.setPredicateUri( EditConfigurationUtils.getPredicateUri(vreq));
String objectUri = EditConfigurationUtils.getObjectUri(vreq);
Integer dataKey = EditConfigurationUtils.getDataHash(vreq);
if (objectUri != null && ! objectUri.trim().isEmpty()) {
// editing existing object
if( editConfig.getObject() == null)
editConfig.setObject( EditConfigurationUtils.getObjectUri(vreq));
editConfig.prepareForObjPropUpdate(model);
} else if( dataKey != null ) { // edit of a data prop statement
//do nothing since the data prop form generator must take care of it
editConfig.prepareForDataPropUpdate(model, vreq.getWebappDaoFactory().getDataPropertyDao());
} else{
//this might be a create new or a form
editConfig.prepareForNonUpdate(model);
}
}
/**
* Method to turn Strings or multiple List<String> to List<String>.
* Only accepts String and List<String> as multi args.

View file

@ -81,7 +81,8 @@ public class DateTimeIntervalFormGenerator extends
//Adding additional data, specifically edit mode
addFormSpecificData(conf, vreq);
//Prepare
prepare(vreq, conf);
return conf;
}

View file

@ -64,7 +64,8 @@ public class DateTimeValueFormGenerator extends BaseEditConfigurationGenerator
//Adding additional data, specifically edit mode
addFormSpecificData(conf, vreq);
//prepare
prepare(vreq, conf);
return conf;
}

View file

@ -116,8 +116,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
//default obj property form.populateTemplate or some such method
//Select from existing also set within template itself
setTemplate(editConfiguration, vreq);
//Set edit key
setEditKey(session, editConfiguration, vreq);
//edit key now set in the edit request dispatch controller
return editConfiguration;
}
@ -307,7 +306,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
private HashMap<String, String> generateSparqlForExistingLiterals() {
HashMap<String, String> map = new HashMap<String, String>();
String query = "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> ";
query += "SELECT ?existingName WHERE { ?" + objectVarName + " rdfs:label ?existingName }";
query += "SELECT ?existingName WHERE { ?" + objectVarName + " rdfs:label ?existingName . }";
map.put("name", query);
return map;
}
@ -374,9 +373,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
field.setRangeLang(null);
field.setLiteralOptions(new ArrayList<List<String>>());
List<String> assertions = new ArrayList<String>();
assertions.add(getN3ForName());
fields.put(field.getName(), field);
return fields;

View file

@ -93,7 +93,8 @@ public class DefaultDataPropertyFormGenerator extends BaseEditConfigurationGener
literalField.setValidators(list( "nonempty" ));
editConfiguration.setN3Required(Arrays.asList( dataPropN3 ));
}
//prepare
prepare(vreq, editConfiguration);
return editConfiguration;
}

View file

@ -43,7 +43,7 @@ import edu.cornell.mannlib.vitro.webapp.search.beans.ProhibitedFromSearch;
* This is the page to which the user is redirected if they select Delete on the default property form.
*
*/
public class DefaultDeleteGenerator implements EditConfigurationGenerator {
public class DefaultDeleteGenerator extends BaseEditConfigurationGenerator implements EditConfigurationGenerator {
private Log log = LogFactory.getLog(DefaultObjectPropertyFormGenerator.class);
private String subjectUri = null;
@ -74,6 +74,8 @@ public class DefaultDeleteGenerator implements EditConfigurationGenerator {
editConfiguration = setupEditConfiguration(vreq, session);
}
editConfiguration.setTemplate(template);
//prepare update?
prepare(vreq, editConfiguration);
return editConfiguration;
}

View file

@ -16,7 +16,7 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.Field;
*
*
*/
public class InstitutionalInternalClassForm implements EditConfigurationGenerator {
public class InstitutionalInternalClassForm extends BaseEditConfigurationGenerator implements EditConfigurationGenerator {
String INTERNAL_CLASS_ANNOTATION_URI= "<http://example.com/vivo#ChangeMeUniveristy>";
@ -47,6 +47,8 @@ public class InstitutionalInternalClassForm implements EditConfigurationGenerato
editConfig.setUrlPatternToReturnTo("/siteAdmin");
editConfig.setSubmitToUrl("/edit/process");
//prepare
prepare(vreq, editConfig);
return editConfig;
}

View file

@ -150,29 +150,6 @@ public class EditRequestDispatchController extends FreemarkerHttpServlet {
//put edit configuration in session so it can be accessed on form submit.
EditConfigurationVTwo.putConfigInSession(editConfig, session);
Model model = (Model) getServletContext().getAttribute("jenaOntModel");
if( editConfig.getSubjectUri() == null)
editConfig.setSubjectUri( EditConfigurationUtils.getSubjectUri(vreq));
if( editConfig.getPredicateUri() == null )
editConfig.setPredicateUri( EditConfigurationUtils.getPredicateUri(vreq));
String objectUri = EditConfigurationUtils.getObjectUri(vreq);
Integer dataKey = EditConfigurationUtils.getDataHash(vreq);
if (objectUri != null && ! objectUri.trim().isEmpty()) {
// editing existing object
if( editConfig.getObject() == null)
editConfig.setObject( EditConfigurationUtils.getObjectUri(vreq));
editConfig.prepareForObjPropUpdate(model);
} else if( dataKey != null ) { // edit of a data prop statement
//do nothing since the data prop form generator must take care of it
editConfig.prepareForDataPropUpdate(model, vreq.getWebappDaoFactory().getDataPropertyDao());
} else{
//this might be a create new or a form
editConfig.prepareForNonUpdate(model);
}
return editConfig;
}