diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/DataPropertyStatementTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/DataPropertyStatementTemplateModel.java index 147692c50..5417b9b69 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/DataPropertyStatementTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/DataPropertyStatementTemplateModel.java @@ -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 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(); - // 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, diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/ObjectPropertyStatementTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/ObjectPropertyStatementTemplateModel.java index 515181890..02dd45955 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/ObjectPropertyStatementTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/ObjectPropertyStatementTemplateModel.java @@ -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 data; // Used for editing - private String subjectUri = null; - private String propertyUri = null; private String objectUri = null; - private List editAccessList; ObjectPropertyStatementTemplateModel(String subjectUri, String propertyUri, String objectKey, Map 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(); 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, diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyStatementTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyStatementTemplateModel.java new file mode 100644 index 000000000..0d4a1603d --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyStatementTemplateModel.java @@ -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 editAccessList = null; + + PropertyStatementTemplateModel(String subjectUri, String propertyUri, EditingPolicyHelper policyHelper) { + + if (policyHelper != null) { // we're editing + this.subjectUri = subjectUri; + this.propertyUri = propertyUri; + editAccessList = new ArrayList(); + } + } + + 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); + } +}