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:
parent
654f5b6efb
commit
820cf314b5
3 changed files with 42 additions and 34 deletions
|
@ -4,6 +4,7 @@ package edu.cornell.mannlib.vitro.webapp.controller.edit;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
|
import java.io.StringWriter;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
@ -22,23 +23,22 @@ import com.hp.hpl.jena.shared.Lock;
|
||||||
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.policy.PolicyHelper;
|
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.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.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.ajax.VitroAjaxController;
|
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.DependentResourceDeleteJena;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.event.EditEvent;
|
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;
|
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.processEdit.EditN3Utils;
|
||||||
|
|
||||||
public class PrimitiveRdfEdit extends VitroAjaxController {
|
public class PrimitiveRdfEdit extends VitroAjaxController {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
/**
|
//Using the same setsup as primitive delete
|
||||||
* No need to restrict authorization here. doRequest() will return an error
|
|
||||||
* if the user is not authorized.
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
protected Actions requiredActions(VitroRequest vreq) {
|
protected Actions requiredActions(VitroRequest vreq) {
|
||||||
return Actions.AUTHORIZED;
|
return new Actions(new UseBasicAjaxControllers());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -93,12 +93,6 @@ public class PrimitiveRdfEdit extends VitroAjaxController {
|
||||||
.getDependentResourceDeleteForChange(toBeAdded,
|
.getDependentResourceDeleteForChange(toBeAdded,
|
||||||
toBeRetracted, getWriteModel(vreq));
|
toBeRetracted, getWriteModel(vreq));
|
||||||
toBeRetracted.add(depResRetractions);
|
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);
|
processChanges(editorUri, getWriteModel(vreq), toBeAdded, toBeRetracted);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
doError(response,e.getMessage(),HttpStatus.SC_INTERNAL_SERVER_ERROR);
|
doError(response,e.getMessage(),HttpStatus.SC_INTERNAL_SERVER_ERROR);
|
||||||
|
@ -106,16 +100,16 @@ public class PrimitiveRdfEdit extends VitroAjaxController {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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. */
|
/** Package access to allow for unit testing. */
|
||||||
void processChanges(String editorUri, OntModel writeModel,
|
void processChanges(String editorUri, OntModel writeModel,
|
||||||
Model toBeAdded, Model toBeRetracted) throws Exception {
|
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 {
|
try {
|
||||||
|
lock = writeModel.getLock();
|
||||||
lock.enterCriticalSection(Lock.WRITE);
|
lock.enterCriticalSection(Lock.WRITE);
|
||||||
writeModel.getBaseModel().notifyEvent(new EditEvent(editorUri, true));
|
writeModel.getBaseModel().notifyEvent(new EditEvent(editorUri, true));
|
||||||
writeModel.add(toBeAdded);
|
writeModel.add(toBeAdded);
|
||||||
|
@ -152,12 +146,8 @@ public class PrimitiveRdfEdit extends VitroAjaxController {
|
||||||
return models;
|
return models;
|
||||||
}
|
}
|
||||||
|
|
||||||
private OntModel getWriteModel(HttpServletRequest request){
|
private OntModel getWriteModel(VitroRequest vreq){
|
||||||
HttpSession session = request.getSession(false);
|
return StandardModelSelector.selector.getModel(vreq,getServletContext());
|
||||||
if( session == null || session.getAttribute("jenaOntModel") == null )
|
|
||||||
return (OntModel)getServletContext().getAttribute("jenaOntModel");
|
|
||||||
else
|
|
||||||
return (OntModel)session.getAttribute("jenaOntModel");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Package access to allow for unit testing. */
|
/** Package access to allow for unit testing. */
|
||||||
|
|
|
@ -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.controller.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
|
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.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.EditConfigurationVTwo;
|
||||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.FieldVTwo;
|
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.FrontEndEditingUtils.EditMode;
|
||||||
import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils;
|
import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils;
|
||||||
|
|
||||||
|
@ -78,7 +81,8 @@ public class DateTimeIntervalFormGenerator extends
|
||||||
|
|
||||||
conf.addField(startField);
|
conf.addField(startField);
|
||||||
conf.addField(endField);
|
conf.addField(endField);
|
||||||
|
//Need to add validators
|
||||||
|
conf.addValidator(new DateTimeIntervalValidationVTwo("startField","endField"));
|
||||||
//Adding additional data, specifically edit mode
|
//Adding additional data, specifically edit mode
|
||||||
addFormSpecificData(conf, vreq);
|
addFormSpecificData(conf, vreq);
|
||||||
//Prepare
|
//Prepare
|
||||||
|
@ -162,8 +166,14 @@ public class DateTimeIntervalFormGenerator extends
|
||||||
}
|
}
|
||||||
|
|
||||||
public EditMode getEditMode(VitroRequest vreq) {
|
public EditMode getEditMode(VitroRequest vreq) {
|
||||||
List<String> predicates = new ArrayList<String>();
|
//In this case, the original jsp didn't rely on FrontEndEditingUtils
|
||||||
predicates.add(toDateTimeInterval);
|
//but instead relied on whether or not the object Uri existed
|
||||||
return EditModeUtils.getEditMode(vreq, predicates);
|
String objectUri = EditConfigurationUtils.getObjectUri(vreq);
|
||||||
|
EditMode editMode = FrontEndEditingUtils.EditMode.ADD;
|
||||||
|
if(objectUri != null && !objectUri.isEmpty()) {
|
||||||
|
editMode = FrontEndEditingUtils.EditMode.EDIT;
|
||||||
|
|
||||||
|
}
|
||||||
|
return editMode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.controller.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
|
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.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.EditConfigurationVTwo;
|
||||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.FieldVTwo;
|
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.FrontEndEditingUtils.EditMode;
|
||||||
import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils;
|
import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils;
|
||||||
|
|
||||||
|
@ -101,8 +103,14 @@ public class DateTimeValueFormGenerator extends BaseEditConfigurationGenerator
|
||||||
}
|
}
|
||||||
|
|
||||||
public EditMode getEditMode(VitroRequest vreq) {
|
public EditMode getEditMode(VitroRequest vreq) {
|
||||||
List<String> predicates = new ArrayList<String>();
|
//In this case, the original jsp didn't rely on FrontEndEditingUtils
|
||||||
predicates.add(toDateTimeValue);
|
//but instead relied on whether or not the object Uri existed
|
||||||
return EditModeUtils.getEditMode(vreq, predicates);
|
String objectUri = EditConfigurationUtils.getObjectUri(vreq);
|
||||||
|
EditMode editMode = FrontEndEditingUtils.EditMode.ADD;
|
||||||
|
if(objectUri != null && !objectUri.isEmpty()) {
|
||||||
|
editMode = FrontEndEditingUtils.EditMode.EDIT;
|
||||||
|
|
||||||
|
}
|
||||||
|
return editMode;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue