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:
rjy7 2011-01-25 22:00:45 +00:00
parent 34258ae94b
commit 56f8323de8

View file

@ -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;
}
} }