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.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. */
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue