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:
hjkhjk54 2011-11-21 15:30:23 +00:00
parent c6cb2fc1fd
commit bcef31315f
2 changed files with 106 additions and 1 deletions

View file

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

View file

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