diff --git a/webapp/src/edu/cornell/mannlib/vedit/validator/impl/UrlValidator.java b/webapp/src/edu/cornell/mannlib/vedit/validator/impl/UrlValidator.java index 5d580f58e..b2cb5a3bb 100644 --- a/webapp/src/edu/cornell/mannlib/vedit/validator/impl/UrlValidator.java +++ b/webapp/src/edu/cornell/mannlib/vedit/validator/impl/UrlValidator.java @@ -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 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); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/OntologyRetryController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/OntologyRetryController.java index e9d5405ee..f9814d647 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/OntologyRetryController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/OntologyRetryController.java @@ -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 validatorList = new ArrayList(); validatorList.add(new RequiredFieldValidator()); + validatorList.add(new UrlValidator()); epo.getValidatorMap().put("URI", validatorList); //make a simple mask for the class's id