VIVO-187 validation for URIs entered on ontology creation form
This commit is contained in:
parent
73d54999d4
commit
0dc3956b09
2 changed files with 27 additions and 12 deletions
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue