NIHVIVO-1332 Refactored common code from DataPropertyStatementTemplateModel and ObjectPropertyStatementTemplateModel into a common superclass PropertyStatementTemplateModel
This commit is contained in:
parent
3ba7346ac4
commit
ff7ccf573c
3 changed files with 67 additions and 35 deletions
|
@ -20,50 +20,39 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMa
|
|||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.RdfLiteralHash;
|
||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel;
|
||||
|
||||
public class DataPropertyStatementTemplateModel extends BaseTemplateModel {
|
||||
public class DataPropertyStatementTemplateModel extends PropertyStatementTemplateModel {
|
||||
|
||||
private static final Log log = LogFactory.getLog(DataPropertyStatementTemplateModel.class);
|
||||
private static final String EDIT_PATH = "edit/editDatapropStmtRequestDispatch.jsp";
|
||||
|
||||
private static enum EditAccess {
|
||||
EDIT, DELETE;
|
||||
}
|
||||
|
||||
private Literal value;
|
||||
|
||||
// Used for editing
|
||||
private String subjectUri = null;
|
||||
private String propertyUri = null;
|
||||
private List<EditAccess> editAccessList = null;
|
||||
private String dataPropHash = null;
|
||||
|
||||
DataPropertyStatementTemplateModel(String subjectUri, String propertyUri,
|
||||
Literal value, EditingPolicyHelper policyHelper) {
|
||||
super(subjectUri, propertyUri, policyHelper);
|
||||
|
||||
this.value = value;
|
||||
|
||||
if (policyHelper != null) {
|
||||
this.subjectUri = subjectUri;
|
||||
this.propertyUri = propertyUri;
|
||||
|
||||
if (policyHelper != null) { // we're editing
|
||||
DataPropertyStatement dps = new DataPropertyStatementImpl(subjectUri, propertyUri, value.getLexicalForm());
|
||||
// Language and datatype are needed to get the correct hash value
|
||||
dps.setLanguage(value.getLanguage());
|
||||
dps.setDatatypeURI(value.getDatatypeURI());
|
||||
this.dataPropHash = String.valueOf(RdfLiteralHash.makeRdfLiteralHash(dps));
|
||||
|
||||
editAccessList = new ArrayList<EditAccess>();
|
||||
|
||||
// Determine whether the statement can be edited
|
||||
RequestedAction action = new EditDataPropStmt(dps);
|
||||
if (policyHelper.isAuthorizedAction(action)) {
|
||||
editAccessList.add(EditAccess.EDIT);
|
||||
markEditable();
|
||||
}
|
||||
|
||||
// Determine whether the statement can be deleted
|
||||
action = new DropDataPropStmt(dps);
|
||||
if (policyHelper.isAuthorizedAction(action)) {
|
||||
editAccessList.add(EditAccess.DELETE);
|
||||
markDeletable();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -76,12 +65,12 @@ public class DataPropertyStatementTemplateModel extends BaseTemplateModel {
|
|||
|
||||
public String getEditUrl() {
|
||||
String editUrl = "";
|
||||
if (editAccessList.contains(EditAccess.EDIT)) {
|
||||
if (isEditable()) {
|
||||
ParamMap params = new ParamMap(
|
||||
"subjectUri", subjectUri,
|
||||
"predicateUri", propertyUri,
|
||||
"datapropKey", dataPropHash);
|
||||
if (! editAccessList.contains(EditAccess.DELETE)) {
|
||||
if (! isDeletable()) {
|
||||
params.put("deleteProhibited", "prohibited");
|
||||
}
|
||||
editUrl = UrlBuilder.getUrl(EDIT_PATH, params);
|
||||
|
@ -91,7 +80,7 @@ public class DataPropertyStatementTemplateModel extends BaseTemplateModel {
|
|||
|
||||
public String getDeleteUrl() {
|
||||
String deleteUrl = "";
|
||||
if (editAccessList.contains(EditAccess.DELETE)) {
|
||||
if (isDeletable()) {
|
||||
ParamMap params = new ParamMap(
|
||||
"subjectUri", subjectUri,
|
||||
"predicateUri", propertyUri,
|
||||
|
|
|
@ -18,49 +18,42 @@ import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
|
|||
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap;
|
||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel;
|
||||
|
||||
public class ObjectPropertyStatementTemplateModel extends BaseTemplateModel {
|
||||
public class ObjectPropertyStatementTemplateModel extends PropertyStatementTemplateModel {
|
||||
|
||||
private static final Log log = LogFactory.getLog(ObjectPropertyStatementTemplateModel.class);
|
||||
|
||||
private static final String EDIT_PATH = "edit/editRequestDispatch.jsp";
|
||||
|
||||
private static enum EditAccess {
|
||||
EDIT, DELETE;
|
||||
}
|
||||
|
||||
|
||||
private Map<String, String> data;
|
||||
|
||||
// Used for editing
|
||||
private String subjectUri = null;
|
||||
private String propertyUri = null;
|
||||
private String objectUri = null;
|
||||
private List<EditAccess> editAccessList;
|
||||
|
||||
ObjectPropertyStatementTemplateModel(String subjectUri, String propertyUri,
|
||||
String objectKey, Map<String, String> data, EditingPolicyHelper policyHelper) {
|
||||
|
||||
super(subjectUri, propertyUri, policyHelper);
|
||||
|
||||
this.data = data;
|
||||
|
||||
// If the policyHelper is non-null, we are in edit mode, so create the list of editing permissions.
|
||||
// We do this now rather than in getEditUrl() and getDeleteUrl(), because getEditUrl() also needs to know
|
||||
// whether a delete is allowed.
|
||||
if (policyHelper != null) {
|
||||
this.subjectUri = subjectUri;
|
||||
this.propertyUri = propertyUri;
|
||||
objectUri = data.get(objectKey);
|
||||
editAccessList = new ArrayList<EditAccess>();
|
||||
ObjectPropertyStatement objectPropertyStatement = new ObjectPropertyStatementImpl(subjectUri, propertyUri, objectUri);
|
||||
|
||||
// Determine whether the statement can be edited
|
||||
RequestedAction action = new EditObjPropStmt(objectPropertyStatement);
|
||||
if (policyHelper.isAuthorizedAction(action)) {
|
||||
editAccessList.add(EditAccess.EDIT);
|
||||
markEditable();
|
||||
}
|
||||
|
||||
// Determine whether the statement can be deleted
|
||||
action = new DropObjectPropStmt(subjectUri, propertyUri, objectUri);
|
||||
if (policyHelper.isAuthorizedAction(action)) {
|
||||
editAccessList.add(EditAccess.DELETE);
|
||||
markDeletable();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -74,12 +67,12 @@ public class ObjectPropertyStatementTemplateModel extends BaseTemplateModel {
|
|||
|
||||
public String getEditUrl() {
|
||||
String editUrl = "";
|
||||
if (editAccessList.contains(EditAccess.EDIT)) {
|
||||
if (isEditable()) {
|
||||
ParamMap params = new ParamMap(
|
||||
"subjectUri", subjectUri,
|
||||
"predicateUri", propertyUri,
|
||||
"objectUri", objectUri);
|
||||
if (! editAccessList.contains(EditAccess.DELETE)) {
|
||||
if (! isDeletable()) {
|
||||
params.put("deleteProhibited", "prohibited");
|
||||
}
|
||||
editUrl = UrlBuilder.getUrl(EDIT_PATH, params);
|
||||
|
@ -90,7 +83,7 @@ public class ObjectPropertyStatementTemplateModel extends BaseTemplateModel {
|
|||
|
||||
public String getDeleteUrl() {
|
||||
String deleteUrl = "";
|
||||
if (editAccessList.contains(EditAccess.DELETE)) {
|
||||
if (isDeletable()) {
|
||||
ParamMap params = new ParamMap(
|
||||
"subjectUri", subjectUri,
|
||||
"predicateUri", propertyUri,
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
package edu.cornell.mannlib.vitro.webapp.web.templatemodels.individual;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.web.templatemodels.BaseTemplateModel;
|
||||
|
||||
public abstract class PropertyStatementTemplateModel extends BaseTemplateModel {
|
||||
|
||||
private static final Log log = LogFactory.getLog(PropertyStatementTemplateModel.class);
|
||||
|
||||
private static enum EditAccess {
|
||||
EDIT, DELETE;
|
||||
}
|
||||
|
||||
// Used for editing
|
||||
protected String subjectUri = null;
|
||||
protected String propertyUri = null;
|
||||
private List<EditAccess> editAccessList = null;
|
||||
|
||||
PropertyStatementTemplateModel(String subjectUri, String propertyUri, EditingPolicyHelper policyHelper) {
|
||||
|
||||
if (policyHelper != null) { // we're editing
|
||||
this.subjectUri = subjectUri;
|
||||
this.propertyUri = propertyUri;
|
||||
editAccessList = new ArrayList<EditAccess>();
|
||||
}
|
||||
}
|
||||
|
||||
protected void markEditable() {
|
||||
editAccessList.add(EditAccess.EDIT);
|
||||
}
|
||||
|
||||
protected void markDeletable() {
|
||||
editAccessList.add(EditAccess.DELETE);
|
||||
}
|
||||
|
||||
protected boolean isEditable() {
|
||||
return editAccessList.contains(EditAccess.EDIT);
|
||||
}
|
||||
|
||||
protected boolean isDeletable() {
|
||||
return editAccessList.contains(EditAccess.DELETE);
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue