VIVO-187 validation for URIs entered on ontology creation form

This commit is contained in:
brianjlowe 2013-09-13 17:03:38 -04:00
parent 73d54999d4
commit 0dc3956b09
2 changed files with 27 additions and 12 deletions

View file

@ -2,28 +2,37 @@
package edu.cornell.mannlib.vedit.validator.impl;
import edu.cornell.mannlib.vedit.validator.Validator;
import java.util.Iterator;
import com.hp.hpl.jena.iri.IRI;
import com.hp.hpl.jena.iri.IRIFactory;
import com.hp.hpl.jena.iri.Violation;
import edu.cornell.mannlib.vedit.validator.ValidationObject;
import java.util.regex.*;
import edu.cornell.mannlib.vedit.validator.Validator;
public class UrlValidator implements Validator {
public ValidationObject validate (Object obj) throws IllegalArgumentException {
ValidationObject vo = new ValidationObject();
String theString = null;
if (!(obj instanceof String)){
throw new IllegalArgumentException("Expected instance of String");
}
Pattern pat = Pattern.compile("[a-z]{3,5}*://.*\\.[a-z]{2,4}");
Matcher mat = pat.matcher(theString);
if (mat.matches()){
vo.setValid(true);
} else {
IRIFactory factory = IRIFactory.jenaImplementation();
IRI iri = factory.create((String) obj);
if (iri.hasViolation(false) ) {
String errorStr = "";
Iterator<Violation> violIt = iri.violations(false);
while(violIt.hasNext()) {
errorStr += violIt.next().getShortMessage() + " ";
}
vo.setValid(false);
vo.setMessage("Please enter a valid URL");
vo.setMessage("Please enter a valid URL. " + errorStr);
} else {
vo.setValid(true);
}
vo.setValidatedObject(obj);

View file

@ -22,6 +22,7 @@ import edu.cornell.mannlib.vedit.forwarder.impl.UrlForwarder;
import edu.cornell.mannlib.vedit.util.FormUtils;
import edu.cornell.mannlib.vedit.validator.Validator;
import edu.cornell.mannlib.vedit.validator.impl.RequiredFieldValidator;
import edu.cornell.mannlib.vedit.validator.impl.UrlValidator;
import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission;
import edu.cornell.mannlib.vitro.webapp.beans.Ontology;
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
@ -47,7 +48,13 @@ public class OntologyRetryController extends BaseEditController {
epo.setBeanClass(Ontology.class);
epo.setBeanMask(testMask);
String action = "insert";
String action = null;
if (epo.getAction() == null) {
action = "insert";
epo.setAction("insert");
} else {
action = epo.getAction();
}
OntologyDao oDao = request.getUnfilteredWebappDaoFactory().getOntologyDao();
epo.setDataAccessObject(oDao);
@ -67,13 +74,12 @@ public class OntologyRetryController extends BaseEditController {
epo.setOriginalBean(ontologyForEditing);
} else {
ontologyForEditing = (Ontology) epo.getNewBean();
action = "update";
log.error("using newBean");
}
//validators
List<Validator> validatorList = new ArrayList<Validator>();
validatorList.add(new RequiredFieldValidator());
validatorList.add(new UrlValidator());
epo.getValidatorMap().put("URI", validatorList);
//make a simple mask for the class's id