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

This commit is contained in:
hjkhjk54 2011-12-05 19:21:38 +00:00
parent 654f5b6efb
commit 820cf314b5
3 changed files with 42 additions and 34 deletions

View file

@ -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. */

View file

@ -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<String> predicates = new ArrayList<String>();
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;
}
}

View file

@ -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<String> predicates = new ArrayList<String>();
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;
}
}