Fixing some syntax issues in date time value form generator, and replacing add role Utils in Vivo with EditMode Utils in Vitro.
This commit is contained in:
parent
c6cb2fc1fd
commit
bcef31315f
2 changed files with 106 additions and 1 deletions
|
@ -2,15 +2,24 @@
|
|||
|
||||
package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import com.hp.hpl.jena.rdf.model.Model;
|
||||
import com.hp.hpl.jena.vocabulary.XSD;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
|
||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.DateTimeWithPrecisionVTwo;
|
||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo;
|
||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.FieldVTwo;
|
||||
import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode;
|
||||
import edu.cornell.mannlib.vitro.webapp.utils.generators.EditModeUtils;
|
||||
|
||||
|
||||
public class DateTimeValueFormGenerator extends BaseEditConfigurationGenerator
|
||||
implements EditConfigurationGenerator {
|
||||
|
@ -51,6 +60,9 @@ public class DateTimeValueFormGenerator extends BaseEditConfigurationGenerator
|
|||
VitroVocabulary.Precision.SECOND.uri(),
|
||||
VitroVocabulary.Precision.NONE.uri())));
|
||||
|
||||
//Adding additional data, specifically edit mode
|
||||
addFormSpecificData(conf, vreq);
|
||||
|
||||
return conf;
|
||||
}
|
||||
|
||||
|
@ -76,4 +88,18 @@ public class DateTimeValueFormGenerator extends BaseEditConfigurationGenerator
|
|||
"SELECT ?existingNode WHERE { \n" +
|
||||
"?subject <" + toDateTimeValue + "> ?existingNode . \n" +
|
||||
"?existingNode a <" + valueType + "> }";
|
||||
}
|
||||
|
||||
|
||||
//Adding form specific data such as edit mode
|
||||
public void addFormSpecificData(EditConfigurationVTwo editConfiguration, VitroRequest vreq) {
|
||||
HashMap<String, Object> formSpecificData = new HashMap<String, Object>();
|
||||
formSpecificData.put("editMode", getEditMode(vreq).name().toLowerCase());
|
||||
editConfiguration.setFormSpecificData(formSpecificData);
|
||||
}
|
||||
|
||||
public EditMode getEditMode(VitroRequest vreq) {
|
||||
List<String> predicates = new ArrayList<String>();
|
||||
predicates.add(dateTimeValue);
|
||||
return EditModeUtils.getEditMode(vreq, predicates);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
package edu.cornell.mannlib.vitro.webapp.utils.generators;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils;
|
||||
import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils;
|
||||
import edu.cornell.mannlib.vitro.webapp.utils.FrontEndEditingUtils.EditMode;
|
||||
|
||||
public class EditModeUtils {
|
||||
private static Log log = LogFactory.getLog(EditModeUtils.class);
|
||||
|
||||
|
||||
/* *************** Static utility methods used in role-based generators *********** */
|
||||
public static EditMode getEditMode(VitroRequest vreq, List<String> possiblePredicates) {
|
||||
//We're making some assumptions here: That there is only one role objec tot one activity object
|
||||
//pairing, i.e. the same role object can't be related to a different activity object
|
||||
//That said, there should only be one role to Activity predicate linking a role to an activity
|
||||
//So if
|
||||
Individual object = EditConfigurationUtils.getObjectIndividual(vreq);
|
||||
boolean foundErrorMode = false;
|
||||
int numberEditModes = 0;
|
||||
int numberRepairModes = 0;
|
||||
int numberPredicates = possiblePredicates.size();
|
||||
for(String predicate:possiblePredicates) {
|
||||
EditMode mode = FrontEndEditingUtils.getEditMode(vreq, object, predicate);
|
||||
//Any error mode should result in error
|
||||
if(mode == EditMode.ERROR) {
|
||||
foundErrorMode = true;
|
||||
break;
|
||||
}
|
||||
if(mode == EditMode.EDIT) {
|
||||
numberEditModes++;
|
||||
}
|
||||
else if(mode == EditMode.REPAIR) {
|
||||
numberRepairModes++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//if found an error or if more than one edit mode returned, incorrect
|
||||
|
||||
if(foundErrorMode || numberEditModes > 1)
|
||||
{
|
||||
return EditMode.ERROR;
|
||||
}
|
||||
EditMode mode = EditMode.ADD;
|
||||
//if exactly one edit mode found, then edit mode
|
||||
if(numberEditModes == 1) {
|
||||
mode = EditMode.EDIT;
|
||||
}
|
||||
//if all modes are repair, this means that all of them have zero statements returning
|
||||
//which is incorrect
|
||||
if(numberRepairModes == numberPredicates) {
|
||||
mode = EditMode.REPAIR;
|
||||
}
|
||||
//otherwise all the modes are Add and Add will be returned
|
||||
return mode;
|
||||
}
|
||||
|
||||
public static boolean isAddMode(EditMode mode) {
|
||||
return (mode == EditMode.ADD);
|
||||
}
|
||||
|
||||
public static boolean isEditMode(EditMode mode) {
|
||||
return (mode == EditMode.EDIT);
|
||||
}
|
||||
|
||||
public static boolean isRepairMode(EditMode mode) {
|
||||
return (mode == EditMode.REPAIR);
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue