NIHVIVO-1871 Added repair mode to personInPosition custom form. Consolidated common code to determine mode into a method in FrontEndEditingUtils and removed from individual forms.
This commit is contained in:
parent
34258ae94b
commit
56f8323de8
1 changed files with 38 additions and 1 deletions
|
@ -5,6 +5,11 @@ package edu.cornell.mannlib.vitro.webapp.utils;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
import com.hp.hpl.jena.rdf.model.Literal;
|
import com.hp.hpl.jena.rdf.model.Literal;
|
||||||
import com.hp.hpl.jena.rdf.model.Model;
|
import com.hp.hpl.jena.rdf.model.Model;
|
||||||
import com.hp.hpl.jena.rdf.model.RDFNode;
|
import com.hp.hpl.jena.rdf.model.RDFNode;
|
||||||
|
@ -13,10 +18,14 @@ import com.hp.hpl.jena.rdf.model.StmtIterator;
|
||||||
import com.hp.hpl.jena.vocabulary.XSD;
|
import com.hp.hpl.jena.vocabulary.XSD;
|
||||||
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
|
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.ObjectPropertyDaoJena;
|
||||||
|
|
||||||
public class FrontEndEditingUtils {
|
public class FrontEndEditingUtils {
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(FrontEndEditingUtils.class);
|
||||||
|
|
||||||
// NB List includes only those properties currently editable from the front end.
|
// 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,
|
private static final List<String> VITRO_NS_DATA_PROPS = Arrays.asList(VitroVocabulary.BLURB,
|
||||||
VitroVocabulary.CITATION,
|
VitroVocabulary.CITATION,
|
||||||
|
@ -32,7 +41,9 @@ public class FrontEndEditingUtils {
|
||||||
VitroVocabulary.PRIMARY_LINK
|
VitroVocabulary.PRIMARY_LINK
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public static enum EditMode {
|
||||||
|
ADD, EDIT, REPAIR, ERROR;
|
||||||
|
}
|
||||||
public static String getVitroNsPropDatatypeUri(String propName) {
|
public static String getVitroNsPropDatatypeUri(String propName) {
|
||||||
//Resource datatype = propName == TIMEKEY ? XSD.dateTime : XSD.xstring;
|
//Resource datatype = propName == TIMEKEY ? XSD.dateTime : XSD.xstring;
|
||||||
//return datatype.getURI();
|
//return datatype.getURI();
|
||||||
|
@ -95,4 +106,30 @@ public class FrontEndEditingUtils {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Determine whether a property editing form is in add, edit, or repair mode. */
|
||||||
|
public static EditMode getEditMode(HttpServletRequest request, String relatedPropertyUri) {
|
||||||
|
EditMode mode = EditMode.ADD;
|
||||||
|
Individual obj = (Individual)request.getAttribute("object");
|
||||||
|
if( obj != null){
|
||||||
|
List<ObjectPropertyStatement> stmts = obj.getObjectPropertyStatements(relatedPropertyUri);
|
||||||
|
if( stmts != null){
|
||||||
|
if( stmts.size() > 1 ){
|
||||||
|
mode = EditMode.ERROR; // Multiple roleIn statements, yuck.
|
||||||
|
log.debug("Multiple statements found for property " + relatedPropertyUri + ". Setting edit mode to ERROR.");
|
||||||
|
}else if( stmts.size() == 0 ){
|
||||||
|
mode = EditMode.REPAIR; // need to repair the role node
|
||||||
|
log.debug("No statements found for property " + relatedPropertyUri + ". Setting edit mode to REPAIR.");
|
||||||
|
}else if(stmts.size() == 1 ){
|
||||||
|
mode = EditMode.EDIT; // editing single statement
|
||||||
|
log.debug("Single statement found for property " + relatedPropertyUri + ". Setting edit mode to EDIT.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.debug("Statements null for property " + relatedPropertyUri + " . Setting edit mode to ADD.");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.debug("No object. Setting edit mode to ADD.");
|
||||||
|
}
|
||||||
|
return mode;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue