Updates for freemarker conversion, specifically for validation

This commit is contained in:
hjkhjk54 2011-11-15 22:44:39 +00:00
parent 9c860f22bb
commit 1446b9c039
13 changed files with 95 additions and 38 deletions

View file

@ -109,6 +109,11 @@ public class QueryUtils {
return queryString.replaceAll("\\?" + varName + "\\b", "<" + uri + ">");
}
/**Replace one variable name with another**/
public static String replaceQueryVar(String queryString, String varName, String newVarName) {
return queryString.replaceAll("\\?" + varName + "\\b", "?" + newVarName);
}
public static ResultSet getQueryResults(String queryStr, VitroRequest vreq) {
Dataset dataset = vreq.getDataset();

View file

@ -93,31 +93,40 @@ public class BasicValidationVTwo {
for( String validationType : validations){
String value = null;
String validateMsg = null;
for(Literal literal: literals) {
try{
if( literal != null ){
value = literal.getString();
}
}catch(Throwable th){
log.debug("could not convert literal to string" , th);
}
// Empty field: if required, include only the empty field
// error message, not a format validation message. If non-required,
// don't do format validation, since that is both unnecessary and may
// incorrectly generate errors.
if (isEmpty(value)) {
if (isRequiredField) {
errors.put(name, REQUIRED_FIELD_EMPTY_MSG);
}
break;
}
String thisValidateMsg = validate(validationType,value);
if(validateMsg != null && thisValidateMsg != null) {
validateMsg += ", " + thisValidateMsg;
} else {
validateMsg = thisValidateMsg;
//If no literals and this field was required, this is an error message
//and can return
if((literals == null || literals.size() == 0) && isRequiredField) {
errors.put(name, REQUIRED_FIELD_EMPTY_MSG);
break;
}
//Loop through literals if literals exist
if(literals != null) {
for(Literal literal: literals) {
try{
if( literal != null ){
value = literal.getString();
}
}catch(Throwable th){
log.debug("could not convert literal to string" , th);
}
// Empty field: if required, include only the empty field
// error message, not a format validation message. If non-required,
// don't do format validation, since that is both unnecessary and may
// incorrectly generate errors.
if (isEmpty(value)) {
if (isRequiredField) {
errors.put(name, REQUIRED_FIELD_EMPTY_MSG);
}
break;
}
String thisValidateMsg = validate(validationType,value);
if(validateMsg != null && thisValidateMsg != null) {
validateMsg += ", " + thisValidateMsg;
} else {
validateMsg = thisValidateMsg;
}
}
}
}
if( validateMsg != null) {
errors.put(name,validateMsg);

View file

@ -70,7 +70,7 @@ public class DateTimeIntervalValidationVTwo implements N3ValidatorVTwo {
//Assuming form start year and form end year are working in conjunction with multiple values
int index;
if (formStartYear != null && formEndYear != null) {
if (!literalListIsNull(formStartYear) && !literalListIsNull(formEndYear)) {
int numberStartYears = formStartYear.size();
int numberEndYears = formEndYear.size();
if(numberStartYears > 1 && numberEndYears > 1) {
@ -81,7 +81,7 @@ public class DateTimeIntervalValidationVTwo implements N3ValidatorVTwo {
if(numberStartYears > 0 && numberEndYears > 0) {
errors.putAll(checkDateLiterals(formStartYear.get(0), formEndYear.get(0), startPrecision, endPrecision));
}
} else if (formStartYear != null && existingEndYear != null) {
} else if (!literalListIsNull(formStartYear) && !literalListIsNull(existingEndYear)) {
int numberStartYears = formStartYear.size();
int numberEndYears = existingEndYear.size();
if(numberStartYears > 1 && numberEndYears > 1) {
@ -92,7 +92,8 @@ public class DateTimeIntervalValidationVTwo implements N3ValidatorVTwo {
if(numberStartYears > 0 && numberEndYears > 0) {
errors.putAll(checkDateLiterals(formStartYear.get(0), existingEndYear.get(0), startPrecision, endPrecision));
}
} else if (existingStartYear != null && formEndYear != null) {
} else if (!literalListIsNull(existingStartYear) && !literalListIsNull(formEndYear)) {
int numberStartYears = existingStartYear.size();
int numberEndYears = formEndYear.size();
if(numberStartYears > 1 && numberEndYears > 1) {
@ -103,7 +104,7 @@ public class DateTimeIntervalValidationVTwo implements N3ValidatorVTwo {
if(numberStartYears > 0 && numberEndYears > 0) {
errors.putAll(checkDateLiterals(existingStartYear.get(0), formEndYear.get(0), startPrecision, endPrecision));
}
} else if (existingStartYear != null && existingEndYear != null) {
} else if (!literalListIsNull(existingStartYear) && !literalListIsNull(existingEndYear)) {
int numberStartYears = existingStartYear.size();
int numberEndYears = existingEndYear.size();
if(numberStartYears > 1 && numberEndYears > 1) {
@ -213,4 +214,16 @@ public class DateTimeIntervalValidationVTwo implements N3ValidatorVTwo {
return errors;
}
//MEthod that checks whether list of literals is null or contains only null
private boolean literalListIsNull(List<Literal> literalList) {
if(literalList == null)
return true;
boolean allNulls = true;
for(Literal l: literalList) {
if(l != null)
allNulls = false;
}
return allNulls;
}
}

View file

@ -116,12 +116,20 @@ public class EditConfigurationUtils {
return dataProp;
}
//get url without context - used for edit configuration object
public static String getFormUrlWithoutContext(VitroRequest vreq) {
return getEditUrlWithoutContext(vreq) + "?" + vreq.getQueryString();
}
public static String getFormUrl(VitroRequest vreq) {
return getEditUrl(vreq) + "?" + vreq.getQueryString();
}
public static String getEditUrl(VitroRequest vreq) {
return vreq.getContextPath() + "/editRequestDispatch";
return vreq.getContextPath() + getEditUrlWithoutContext(vreq);
}
public static String getEditUrlWithoutContext(VitroRequest vreq) {
return "/editRequestDispatch";
}
public static String getCancelUrlBase(VitroRequest vreq) {

View file

@ -131,8 +131,14 @@ public class MultiValueEditSubmission {
processEditElementFields(editConfig,queryParameters);
//Incorporating basic validation
//Validate URIS
this.basicValidation = new BasicValidationVTwo(editConfig, this);
Map<String,String> errors = basicValidation.validateUris( urisFromForm );
//Validate literals
errors = basicValidation.validateLiterals( literalsFromForm );
if( errors != null ) {
validationErrors.putAll( errors);
}
if(editConfig.getValidators() != null ){
for( N3ValidatorVTwo validator : editConfig.getValidators()){

View file

@ -24,7 +24,7 @@ public abstract class BaseEditConfigurationGenerator implements EditConfiguratio
String editKey = EditConfigurationUtils.getEditKey(vreq);
editConf.setEditKey(editKey);
String formUrl = EditConfigurationUtils.getFormUrl(vreq);
String formUrl = EditConfigurationUtils.getFormUrlWithoutContext(vreq);
editConf.setFormUrl(formUrl);
}

View file

@ -147,7 +147,7 @@ public class DefaultAddMissingIndividualFormGenerator implements EditConfigurati
//Initialize setup: process parameters
//Doesn't look like we need to set up separate processing for data property form
private void initProcessParameters(VitroRequest vreq, HttpSession session, EditConfigurationVTwo editConfiguration) {
String formUrl = EditConfigurationUtils.getFormUrl(vreq);
String formUrl = EditConfigurationUtils.getFormUrlWithoutContext(vreq);
subjectUri = EditConfigurationUtils.getSubjectUri(vreq);
predicateUri = EditConfigurationUtils.getPredicateUri(vreq);

View file

@ -135,7 +135,7 @@ public class DefaultObjectPropertyFormGenerator implements EditConfigurationGene
//Initialize setup: process parameters
private void initProcessParameters(VitroRequest vreq, HttpSession session, EditConfigurationVTwo editConfiguration) {
String formUrl = EditConfigurationUtils.getFormUrl(vreq);
String formUrl = EditConfigurationUtils.getFormUrlWithoutContext(vreq);
subjectUri = EditConfigurationUtils.getSubjectUri(vreq);
predicateUri = EditConfigurationUtils.getPredicateUri(vreq);

View file

@ -133,7 +133,7 @@ public class NewIndividualFormGenerator implements EditConfigurationGenerator {
//Initialize setup: process parameters
private void initProcessParameters(VitroRequest vreq, HttpSession session, EditConfigurationVTwo editConfiguration) {
String formUrl = EditConfigurationUtils.getFormUrl(vreq);
String formUrl = EditConfigurationUtils.getFormUrlWithoutContext(vreq);
subjectUri = EditConfigurationUtils.getSubjectUri(vreq);
predicateUri = EditConfigurationUtils.getPredicateUri(vreq);

View file

@ -125,7 +125,7 @@ public class RDFSLabelGenerator implements EditConfigurationGenerator {
//Initialize setup: process parameters
//As this is a data property, don't require any additional processing for object properties
private void initProcessParameters(VitroRequest vreq, HttpSession session, EditConfigurationVTwo editConfiguration) {
String formUrl = EditConfigurationUtils.getFormUrl(vreq);
String formUrl = EditConfigurationUtils.getFormUrlWithoutContext(vreq);
subjectUri = EditConfigurationUtils.getSubjectUri(vreq);
predicateUri = EditConfigurationUtils.getPredicateUri(vreq);

View file

@ -164,8 +164,12 @@ public class ProcessRdfFormController extends FreemarkerHttpServlet{
String form = editConfiguration.getFormUrl();
vreq.setAttribute("formUrl", form);
vreq.setAttribute("view", vreq.getParameter("view"));
return new RedirectResponseValues(editConfiguration.getFormUrl());
//Need to ensure that edit key is set so that the correct
//edit configuration and edit submission are retrieved
//This can also be set as a parameter instead
String formUrl = editConfiguration.getFormUrl();
formUrl += "&editKey=" + editConfiguration.getEditKey();
return new RedirectResponseValues(formUrl);
}
return null; //no errors
}

View file

@ -17,14 +17,20 @@ public class EditSubmissionTemplateModel {
}
public Map<String, Literal> getLiteralsFromForm() {
if(editSub == null)
return null;
return editSub.getLiteralsFromForm();
}
public Map<String, String> getValidationErrors() {
if(editSub == null)
return null;
return editSub.getValidationErrors();
}
public Map<String, String> getUrisFromForm() {
if(editSub == null)
return null;
return editSub.getUrisFromForm();
}

View file

@ -17,15 +17,21 @@ public class MultiValueEditSubmissionTemplateModel {
}
public Map<String, List<Literal>> getLiteralsFromForm() {
if(editSub == null)
return null;
return editSub.getLiteralsFromForm();
}
public Map<String, String> getValidationErrors() {
if(editSub == null)
return null;
return editSub.getValidationErrors();
}
public Map<String, List<String>> getUrisFromForm() {
if(editSub == null)
return null;
return editSub.getUrisFromForm();
}