From 820cf314b5dcdf117ba70769b52d9d6e22e5e017 Mon Sep 17 00:00:00 2001 From: hjkhjk54 Date: Mon, 5 Dec 2011 19:21:38 +0000 Subject: [PATCH] updates to date time interval forms to get edit mode based not on front end editing utils but whether or not object uri present, also updated primitive rdf edit to enable concept page to remove relationships inspite of vivo policy's restriction on "delete" actions on those properties --- .../controller/edit/PrimitiveRdfEdit.java | 44 +++++++------------ .../DateTimeIntervalFormGenerator.java | 18 ++++++-- .../DateTimeValueFormGenerator.java | 14 ++++-- 3 files changed, 42 insertions(+), 34 deletions(-) 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