NIHVIVO-144 Add edit/delete links to primary and additional links on front end individual page. (These links generate errors when clicked, though.)

This commit is contained in:
rjy7 2010-03-25 19:01:03 +00:00
parent 7f3ba68290
commit 53ac7a2587
5 changed files with 140 additions and 141 deletions

View file

@ -8,8 +8,6 @@ import java.util.Comparator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import edu.cornell.mannlib.vitro.webapp.controller.EntityController;
/**
* a class representing a particular instance of an object property
*
@ -38,9 +36,17 @@ propertyId
sunrise
sunset
qualifier
*/
*/
public ObjectPropertyStatementImpl() { }
/* (non-Javadoc)
public ObjectPropertyStatementImpl(String subjectUri, String propertyUri, String objectUri) {
subjectURI = subjectUri;
propertyURI = propertyUri;
objectURI = objectUri;
}
/* (non-Javadoc)
* @see edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement#toString()
*/
public String toString(){

View file

@ -12,7 +12,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
public class FrontEndEditingUtils {
public static final List<String> VITRO_NS_DATAPROPS = Arrays.asList(VitroVocabulary.BLURB,
public static final List<String> VITRO_NS_DATA_PROPS = Arrays.asList(VitroVocabulary.BLURB,
VitroVocabulary.CITATION,
VitroVocabulary.DESCRIPTION,
VitroVocabulary.IMAGETHUMB,

View file

@ -41,9 +41,11 @@ import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatementImpl;
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty;
import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement;
import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatementImpl;
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.RdfLiteralHash;
import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils;
import edu.cornell.mannlib.vitro.webapp.utils.StringUtils;
/**
* JSP tag to generate the HTML of links for edit, delete or
@ -117,16 +119,20 @@ public class PropertyEditLinks extends TagSupport{
if( item instanceof ObjectPropertyStatement ){
ObjectPropertyStatement prop = (ObjectPropertyStatement)item;
links = doObjPropStmt( prop, policyToAccess(ids, policy, prop), contextPath );
links = doObjPropStmt( prop, policyToAccess(ids, policy, prop), contextPath );
} else if( item instanceof DataPropertyStatement ){
DataPropertyStatement prop = (DataPropertyStatement)item;
links = doDataPropStmt( prop, policyToAccess(ids, policy, prop), contextPath );
} else if (entity == null) {
log.error("unable to find an Individual in request using var name 'entity'");
return SKIP_BODY;
return SKIP_BODY;
} else if( item instanceof ObjectProperty ){
ObjectProperty prop = (ObjectProperty)item;
links = doObjProp( prop, entity, policyToAccess(ids, policy, entity.getURI(), prop), contextPath );
links = doObjProp( prop, entity, policyToAccess(ids, policy, entity.getURI(), prop), contextPath );
} else if( item instanceof DataProperty ){
DataProperty prop = (DataProperty)item; // a DataProperty populated for this subject individual
links = doDataProp( prop, entity, policyToAccess(ids, policy, entity.getURI(), prop),contextPath );
@ -142,12 +148,15 @@ public class PropertyEditLinks extends TagSupport{
DataPropertyStatement dps = (DataPropertyStatement) new DataPropertyStatementImpl(subjectUri, predicateUri, data);
links = doVitroNsDataPropStmt( dps, entity, policyToAccess(ids, policy, dps), contextPath );
}
} else if (isVitroNsObjectProp(predicateUri)) {
} else if (isVitroNsObjProp(predicateUri)) {
if (data == null) { // link to add a new value
links = doObjProp( subjectUri, predicateUri, policyToAccess(ids, policy, subjectUri, predicateUri), contextPath );
} else { // links to edit or delete an existing value
DataPropertyStatement dps = (DataPropertyStatement) new DataPropertyStatementImpl(subjectUri, predicateUri, data);
//links = doVitroNsObjPropStmt( dps, entity, policyToAccess(ids, policy, dps), contextPath );
} else { // links to edit or delete an existing value
// RY **** May need new policyToAccess which gets the specific obj prop statement using the data as well as subject and predicate
// This is NOT the correct object property statement - we need the link individual uri in data, instead of the link URL
// Then we can combine this with doObjPropStmt
ObjectPropertyStatement prop = new ObjectPropertyStatementImpl(subjectUri, predicateUri, data);
links = doVitroNsObjPropStmt( subjectUri, predicateUri, data, policyToAccess(ids, policy, prop), contextPath );
}
}
else {
@ -246,7 +255,6 @@ public class PropertyEditLinks extends TagSupport{
return links;
}
// Used for ontology object properties
protected LinkStruct[] doObjProp(ObjectProperty oprop, Individual entity, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
if( allowedAccessTypeArray == null || oprop == null || allowedAccessTypeArray.length == 0 ) {
log.debug("null or empty access type array in doObjProp for oprop "+oprop.getDomainPublic()+"; most likely just a property prohibited from editing");
@ -256,7 +264,6 @@ public class PropertyEditLinks extends TagSupport{
return doObjProp(entity.getURI(), oprop.getURI(), allowedAccessTypeArray, contextPath);
}
// Used for Vitro namespace object properties
protected LinkStruct[] doObjProp(String subjectUri, String predicateUri, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
if( allowedAccessTypeArray == null || subjectUri == null || allowedAccessTypeArray.length == 0 ) {
log.debug("null or empty access type array in doObjProp for oprop "+ predicateUri +"; most likely just a property prohibited from editing");
@ -264,15 +271,14 @@ public class PropertyEditLinks extends TagSupport{
}
LinkStruct[] links = new LinkStruct[1];
if( contains( allowedAccessTypeArray, EditLinkAccess.ADDNEW )){
if( contains( allowedAccessTypeArray, EditLinkAccess.ADDNEW )){
String url= makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
"subjectUri", subjectUri,
"predicateUri", predicateUri);
LinkStruct ls = new LinkStruct();
ls.setHref( url );
ls.setType("add");
ls.setMouseoverText("add relationship");
ls.setMouseoverText("add " + getObjPropMouseoverLabel(predicateUri));
links[0]=ls;
}
return links;
@ -416,98 +422,72 @@ public class PropertyEditLinks extends TagSupport{
log.info("null or empty access type array in doObjPropStmt for "+opropStmt.getPropertyURI());
return empty_array;
}
String subjectUri = opropStmt.getSubjectURI();
String predicateUri = opropStmt.getPropertyURI();
String objectUri = opropStmt.getObjectURI();
String mouseoverLabel = "relationship";
return doObjPropStmt(subjectUri, predicateUri, objectUri, allowedAccessTypeArray, contextPath, mouseoverLabel);
}
protected LinkStruct[] doVitroNsObjPropStmt(String subjectUri, String predicateUri, String objectUri, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
if( allowedAccessTypeArray == null || subjectUri == null || allowedAccessTypeArray.length == 0 ) {
log.info("null or empty access type array in doObjPropStmt for " + predicateUri);
return empty_array;
}
Model model = (Model)pageContext.getServletContext().getAttribute("jenaOntModel");
String mouseoverLabel = getObjPropMouseoverLabel(predicateUri);
return doObjPropStmt(subjectUri, predicateUri, objectUri, allowedAccessTypeArray, contextPath, mouseoverLabel);
}
protected LinkStruct[] doObjPropStmt(String subjectUri, String predicateUri, String objectUri, EditLinkAccess[] allowedAccessTypeArray, String contextPath, String mouseoverLabel) {
LinkStruct[] links = new LinkStruct[2];
int index=0;
if( contains( allowedAccessTypeArray, EditLinkAccess.MODIFY ) ){
log.debug("permission found to UPDATE object property statement "+opropStmt.getPropertyURI()+" so icon created");
if( contains( allowedAccessTypeArray, EditLinkAccess.MODIFY ) ){
log.debug("permission found to UPDATE object property statement "+ predicateUri +" so icon created");
String url = ( contains( allowedAccessTypeArray, EditLinkAccess.DELETE ) )
? makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
"subjectUri", opropStmt.getSubjectURI(),
"predicateUri", opropStmt.getPropertyURI(),
"objectUri", opropStmt.getObjectURI())
"subjectUri", subjectUri,
"predicateUri", predicateUri,
"objectUri", objectUri)
: makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
"subjectUri", opropStmt.getSubjectURI(),
"predicateUri", opropStmt.getPropertyURI(),
"objectUri", opropStmt.getObjectURI(),
"subjectUri", subjectUri,
"predicateUri", predicateUri,
"objectUri", objectUri,
"deleteProhibited", "prohibited");
LinkStruct ls = new LinkStruct();
ls.setHref( url );
ls.setType("edit");
ls.setMouseoverText("change this relationship");
ls.setMouseoverText("change this " + mouseoverLabel);
links[index] = ls; index++;
} else {
log.debug("NO permission to UPDATE this object property statement ("+opropStmt.getPropertyURI()+") found in policy");
log.debug("NO permission to UPDATE this object property statement (" + predicateUri + ") found in policy");
}
if( contains( allowedAccessTypeArray, EditLinkAccess.DELETE ) ){
log.debug("permission found to DELETE object property statement "+opropStmt.getPropertyURI()+" so icon created");
log.debug("permission found to DELETE object property statement "+ predicateUri + " so icon created");
String url = makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
"subjectUri", opropStmt.getSubjectURI(),
"predicateUri", opropStmt.getPropertyURI(),
"objectUri", opropStmt.getObjectURI(),
"subjectUri", subjectUri,
"predicateUri", predicateUri,
"objectUri", objectUri,
"cmd", "delete");
LinkStruct ls = new LinkStruct();
ls.setHref( url );
ls.setType("delete");
ls.setMouseoverText("delete this relationship");
ls.setMouseoverText("delete this " + mouseoverLabel);
links[index] = ls; index++;
} else {
log.debug("NO permission to DELETE this object property statement ("+opropStmt.getPropertyURI()+") found in policy");
log.debug("NO permission to DELETE this object property statement (" + predicateUri + ") found in policy");
}
return links;
}
// protected LinkStruct[] doObjPropStmt(ObjectPropertyStatement opropStmt, EditLinkAccess[] allowedAccessTypeArray, String contextPath) {
// if( allowedAccessTypeArray == null || opropStmt == null || allowedAccessTypeArray.length == 0 ) {
// log.info("null or empty access type array in doObjPropStmt for "+opropStmt.getPropertyURI());
// return empty_array;
// }
// LinkStruct[] links = new LinkStruct[2];
// int index=0;
//
// if( contains( allowedAccessTypeArray, EditLinkAccess.MODIFY ) ){
// log.debug("permission found to UPDATE object property statement "+opropStmt.getPropertyURI()+" so icon created");
// String url = ( contains( allowedAccessTypeArray, EditLinkAccess.DELETE ) )
// ? makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
// "subjectUri", opropStmt.getSubjectURI(),
// "predicateUri", opropStmt.getPropertyURI(),
// "objectUri", opropStmt.getObjectURI())
// : makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
// "subjectUri", opropStmt.getSubjectURI(),
// "predicateUri", opropStmt.getPropertyURI(),
// "objectUri", opropStmt.getObjectURI(),
// "deleteProhibited", "prohibited");
//
// LinkStruct ls = new LinkStruct();
// ls.setHref( url );
// ls.setType("edit");
// ls.setMouseoverText("change this relationship");
// links[index] = ls; index++;
//
// } else {
// log.debug("NO permission to UPDATE this object property statement ("+opropStmt.getPropertyURI()+") found in policy");
// }
// if( contains( allowedAccessTypeArray, EditLinkAccess.DELETE ) ){
// log.debug("permission found to DELETE object property statement "+opropStmt.getPropertyURI()+" so icon created");
// String url = makeRelativeHref(contextPath + "edit/editRequestDispatch.jsp",
// "subjectUri", opropStmt.getSubjectURI(),
// "predicateUri", opropStmt.getPropertyURI(),
// "objectUri", opropStmt.getObjectURI(),
// "cmd", "delete");
// LinkStruct ls = new LinkStruct();
// ls.setHref( url );
// ls.setType("delete");
// ls.setMouseoverText("delete this relationship");
// links[index] = ls; index++;
//
// } else {
// log.debug("NO permission to DELETE this object property statement ("+opropStmt.getPropertyURI()+") found in policy");
// }
// return links;
// }
/* ********************* utility methods ********************************* */
@ -678,11 +658,21 @@ public class PropertyEditLinks extends TagSupport{
private boolean isVitroNsDataProp(String predicateUri) {
return FrontEndEditingUtils.VITRO_NS_DATAPROPS.contains(predicateUri);
return FrontEndEditingUtils.VITRO_NS_DATA_PROPS.contains(predicateUri);
}
private boolean isVitroNsObjectProp(String predicateUri) {
private boolean isVitroNsObjProp(String predicateUri) {
return FrontEndEditingUtils.VITRO_NS_OBJECT_PROPS.contains(predicateUri);
}
private String getObjPropMouseoverLabel(String propertyUri) {
String mouseoverText = "relationship"; // default
if (StringUtils.equalsOneOf(propertyUri, VitroVocabulary.ADDITIONAL_LINK, VitroVocabulary.PRIMARY_LINK)) {
mouseoverText = "link";
}
return mouseoverText;
}
}