diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/PrimitiveRdfEdit.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/PrimitiveRdfEdit.java index 40f434739..8976e369d 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/PrimitiveRdfEdit.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/PrimitiveRdfEdit.java @@ -4,6 +4,7 @@ package edu.cornell.mannlib.vitro.webapp.controller.edit; import java.io.IOException; import java.io.StringReader; +import java.io.StringWriter; import java.util.HashSet; import java.util.Set; @@ -22,24 +23,23 @@ import com.hp.hpl.jena.shared.Lock; import edu.cornell.mannlib.vitro.webapp.auth.policy.PolicyHelper; import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; +import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseBasicAjaxControllers; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.ajax.VitroAjaxController; import edu.cornell.mannlib.vitro.webapp.dao.jena.DependentResourceDeleteJena; import edu.cornell.mannlib.vitro.webapp.dao.jena.event.EditEvent; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.StandardModelSelector; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.processEdit.EditN3Utils; public class PrimitiveRdfEdit extends VitroAjaxController { private static final long serialVersionUID = 1L; - /** - * No need to restrict authorization here. doRequest() will return an error - * if the user is not authorized. - */ - @Override - protected Actions requiredActions(VitroRequest vreq) { - return Actions.AUTHORIZED; - } + //Using the same setsup as primitive delete + @Override + protected Actions requiredActions(VitroRequest vreq) { + return new Actions(new UseBasicAjaxControllers()); + } @Override protected void doRequest(VitroRequest vreq, @@ -93,29 +93,23 @@ public class PrimitiveRdfEdit extends VitroAjaxController { .getDependentResourceDeleteForChange(toBeAdded, toBeRetracted, getWriteModel(vreq)); toBeRetracted.add(depResRetractions); - - if (!isAuthorized(vreq, toBeAdded, toBeRetracted)) { - doError(response, "Not authorized for these RDF edits", HttpStatus.SC_UNAUTHORIZED); - return; - } - processChanges(editorUri, getWriteModel(vreq), toBeAdded, toBeRetracted); } catch (Exception e) { doError(response,e.getMessage(),HttpStatus.SC_INTERNAL_SERVER_ERROR); } } - - private boolean isAuthorized(VitroRequest vreq, Model toBeAdded, Model toBeRetracted) { - return PolicyHelper.isAuthorizedToAdd(vreq, toBeAdded) - && PolicyHelper.isAuthorizedToDrop(vreq, toBeRetracted); - } - + /** Package access to allow for unit testing. */ void processChanges(String editorUri, OntModel writeModel, Model toBeAdded, Model toBeRetracted) throws Exception { - Lock lock = writeModel.getLock(); + Lock lock = null; + log.debug("Model to be retracted is"); + StringWriter sw = new StringWriter(); + toBeRetracted.write(sw, "N3"); + log.debug(sw.toString()); try { + lock = writeModel.getLock(); lock.enterCriticalSection(Lock.WRITE); writeModel.getBaseModel().notifyEvent(new EditEvent(editorUri, true)); writeModel.add(toBeAdded); @@ -152,12 +146,8 @@ public class PrimitiveRdfEdit extends VitroAjaxController { return models; } - private OntModel getWriteModel(HttpServletRequest request){ - HttpSession session = request.getSession(false); - if( session == null || session.getAttribute("jenaOntModel") == null ) - return (OntModel)getServletContext().getAttribute("jenaOntModel"); - else - return (OntModel)session.getAttribute("jenaOntModel"); + private OntModel getWriteModel(VitroRequest vreq){ + return StandardModelSelector.selector.getModel(vreq,getServletContext()); } /** Package access to allow for unit testing. */ diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DateTimeIntervalFormGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DateTimeIntervalFormGenerator.java index 952979e85..e6f7d3b63 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DateTimeIntervalFormGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DateTimeIntervalFormGenerator.java @@ -14,9 +14,12 @@ import com.hp.hpl.jena.vocabulary.XSD; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeIntervalValidationVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeWithPrecisionVTwo; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.FieldVTwo; +import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils; import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode; import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils; @@ -78,7 +81,8 @@ public class DateTimeIntervalFormGenerator extends conf.addField(startField); conf.addField(endField); - + //Need to add validators + conf.addValidator(new DateTimeIntervalValidationVTwo("startField","endField")); //Adding additional data, specifically edit mode addFormSpecificData(conf, vreq); //Prepare @@ -162,8 +166,14 @@ public class DateTimeIntervalFormGenerator extends } public EditMode getEditMode(VitroRequest vreq) { - List predicates = new ArrayList(); - predicates.add(toDateTimeInterval); - return EditModeUtils.getEditMode(vreq, predicates); + //In this case, the original jsp didn't rely on FrontEndEditingUtils + //but instead relied on whether or not the object Uri existed + String objectUri = EditConfigurationUtils.getObjectUri(vreq); + EditMode editMode = FrontEndEditingUtils.EditMode.ADD; + if(objectUri != null && !objectUri.isEmpty()) { + editMode = FrontEndEditingUtils.EditMode.EDIT; + + } + return editMode; } } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DateTimeValueFormGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DateTimeValueFormGenerator.java index b5b3fc4e8..b6e2677eb 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DateTimeValueFormGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DateTimeValueFormGenerator.java @@ -15,8 +15,10 @@ import com.hp.hpl.jena.vocabulary.XSD; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeWithPrecisionVTwo; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.FieldVTwo; +import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils; import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode; import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils; @@ -101,8 +103,14 @@ public class DateTimeValueFormGenerator extends BaseEditConfigurationGenerator } public EditMode getEditMode(VitroRequest vreq) { - List predicates = new ArrayList(); - predicates.add(toDateTimeValue); - return EditModeUtils.getEditMode(vreq, predicates); + //In this case, the original jsp didn't rely on FrontEndEditingUtils + //but instead relied on whether or not the object Uri existed + String objectUri = EditConfigurationUtils.getObjectUri(vreq); + EditMode editMode = FrontEndEditingUtils.EditMode.ADD; + if(objectUri != null && !objectUri.isEmpty()) { + editMode = FrontEndEditingUtils.EditMode.EDIT; + + } + return editMode; } } \ No newline at end of file