NIHVIVO-144 Show the link on the delete confirmation screen when deleting a primary or additional link for an individual from the front end.

This commit is contained in:
rjy7 2010-03-26 18:54:33 +00:00
parent 732266d962
commit f96eb9722d
3 changed files with 86 additions and 33 deletions

View file

@ -5,14 +5,20 @@ package edu.cornell.mannlib.vitro.webapp.utils;
import java.util.Arrays;
import java.util.List;
//import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.vocabulary.XSD;
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
public class FrontEndEditingUtils {
public static final List<String> VITRO_NS_DATA_PROPS = Arrays.asList(VitroVocabulary.BLURB,
// NB List includes only those properties currently editable from the front end.
private static final List<String> VITRO_NS_DATA_PROPS = Arrays.asList(VitroVocabulary.BLURB,
VitroVocabulary.CITATION,
VitroVocabulary.DESCRIPTION,
VitroVocabulary.IMAGETHUMB,
@ -22,7 +28,8 @@ public class FrontEndEditingUtils {
// VitroVocabulary.TIMEKEY
);
public static final List<String> VITRO_NS_OBJECT_PROPS = Arrays.asList(VitroVocabulary.ADDITIONAL_LINK,
// NB List includes only those properties currently editable from the front end.
private static final List<String> VITRO_NS_OBJECT_PROPS = Arrays.asList(VitroVocabulary.ADDITIONAL_LINK,
VitroVocabulary.PRIMARY_LINK
);
@ -32,18 +39,61 @@ public class FrontEndEditingUtils {
//return datatype.getURI();
return XSD.xstring.getURI();
}
// public static final Map<String, String> VITRO_NS_PROPERTIES = new HashMap<String, String>() {
// {
// put(BLURB, XSD.xstring.getURI());
// put(CITATION, XSD.xstring.getURI());
// put(DESCRIPTION, XSD.xstring.getURI());
// put(LABEL, XSD.xstring.getURI());
// put(LINK_ANCHOR, XSD.xstring.getURI());
// put(MONIKER, XSD.xstring.getURI());
// put(PRIMARY_LINK, XSD.xstring.getURI());
// put(RDF_TYPE, XSD.xstring.getURI());
// put(TIMEKEY, XSD.dateTime.getURI());
// }
//};
public static boolean isVitroNsDataProp(String propertyUri) {
return VITRO_NS_DATA_PROPS.contains(propertyUri);
}
// public static final Map<String, String> VITRO_NS_PROPERTIES = new HashMap<String, String>() {
// {
// put(BLURB, XSD.xstring.getURI());
// put(CITATION, XSD.xstring.getURI());
// put(DESCRIPTION, XSD.xstring.getURI());
// put(LABEL, XSD.xstring.getURI());
// put(LINK_ANCHOR, XSD.xstring.getURI());
// put(MONIKER, XSD.xstring.getURI());
// put(PRIMARY_LINK, XSD.xstring.getURI());
// put(RDF_TYPE, XSD.xstring.getURI());
// put(TIMEKEY, XSD.dateTime.getURI());
// }
// };
public static boolean isVitroNsObjProp(String propertyUri) {
return VITRO_NS_OBJECT_PROPS.contains(propertyUri);
}
public static String getVitroNsObjDisplayName(String predicateUri, Individual object, Model model) {
String displayName = null;
// These are the only Vitro namespace object properties that are editable on the front end at this point.
if (StringUtils.equalsOneOf(predicateUri, VitroVocabulary.PRIMARY_LINK, VitroVocabulary.ADDITIONAL_LINK)) {
String linkAnchor = getLiteralValue(model, object, VitroVocabulary.LINK_ANCHOR);
String linkUrl = getLiteralValue(model, object, VitroVocabulary.LINK_URL);
displayName = "<a href='" + linkUrl + "'>" + linkAnchor + "</a>";
}
return displayName;
}
private static String getLiteralValue(Model model, Individual ind, String predicateUri) {
String value = null;
StmtIterator stmts = model.listStatements(model.createResource(ind.getURI()),
model.getProperty(predicateUri),
(RDFNode)null);
while (stmts.hasNext()) {
Statement stmt = stmts.nextStatement();
RDFNode node = stmt.getObject();
if (node.isLiteral()) {
Literal lit = (Literal) node.as(Literal.class);
value = lit.getLexicalForm();
}
}
return value;
}
}

View file

@ -141,14 +141,14 @@ public class PropertyEditLinks extends TagSupport{
} else if (item instanceof String) {
String predicateUri = (String) item;
String subjectUri = entity.getURI();
if (isVitroNsDataProp(predicateUri)) {
if (FrontEndEditingUtils.isVitroNsDataProp(predicateUri)) {
if (data == null) { // link to add a new value
links = doVitroNsDataProp( 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 = doVitroNsDataPropStmt( dps, entity, policyToAccess(ids, policy, dps), contextPath );
}
} else if (isVitroNsObjProp(predicateUri)) {
} else if (FrontEndEditingUtils.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
@ -640,15 +640,6 @@ public class PropertyEditLinks extends TagSupport{
return ls;
}
private boolean isVitroNsDataProp(String predicateUri) {
return FrontEndEditingUtils.VITRO_NS_DATA_PROPS.contains(predicateUri);
}
private boolean isVitroNsObjProp(String predicateUri) {
return FrontEndEditingUtils.VITRO_NS_OBJECT_PROPS.contains(predicateUri);
}
private String getObjPropMouseoverLabel(String propertyUri) {
String mouseoverText = "relationship"; // default