# HG changeset patch # User Tim Englich # Date 1254217825 0 # Node ID e01c163ea5b013051c145d7b956a061ddb019524 # Parent f07637f963120123e0234b007783d1c6f3b78f71 Inputvalidation for String, Integer and Date Values added. gnv-artifacts/trunk@149 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r f07637f96312 -r e01c163ea5b0 gnv-artifacts/Changelog --- a/gnv-artifacts/Changelog Mon Sep 28 14:35:35 2009 +0000 +++ b/gnv-artifacts/Changelog Tue Sep 29 09:50:25 2009 +0000 @@ -1,3 +1,14 @@ +2009-09-29 Tim Englich + + * pom.xml Edited: + Added the dependency to Apache-Commons-Validator Version 1.3.1 which is + used for the InputValoue-validation. + * src/main/java/de/intevation/gnv/utils/InputValidator.java Added : + An InputValidator for Validating InputValues. + At this Moment only Integer, String and Date is supported. + * src/main/java/de/intevation/gnv/transition/TransitionBase.java (putInputData) Edited: + Add the InputValidator to validate the incomming Values from the Clients. + 2009-09-28 Tim Englich * src/main/java/de/intevation/gnv/chart/ChartFactory.java (createTimeSeries) Edited: diff -r f07637f96312 -r e01c163ea5b0 gnv-artifacts/pom.xml --- a/gnv-artifacts/pom.xml Mon Sep 28 14:35:35 2009 +0000 +++ b/gnv-artifacts/pom.xml Tue Sep 29 09:50:25 2009 +0000 @@ -67,6 +67,10 @@ ehcache 1.6.2 - + + commons-validator + commons-validator + 1.3.1 + diff -r f07637f96312 -r e01c163ea5b0 gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java --- a/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java Mon Sep 28 14:35:35 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java Tue Sep 29 09:50:25 2009 +0000 @@ -35,6 +35,7 @@ import de.intevation.gnv.transition.describedata.SingleValueDescribeData; import de.intevation.gnv.transition.exception.TransitionException; import de.intevation.gnv.utils.ArtifactXMLUtilities; +import de.intevation.gnv.utils.InputValidator; /** * @author Tim Englich @@ -184,6 +185,7 @@ log.debug("TransitionBase.putInputData"); if (inputData != null){ Iterator it = inputData.iterator(); + InputValidator iv = new InputValidator(); while(it.hasNext()){ InputData tmpItem = it.next(); InputValue inputValue = this.inputValues.get(tmpItem.getName()); @@ -191,8 +193,15 @@ if (this.inputData == null){ this.inputData = new HashMap(inputData.size()); } - this.setSelection(tmpItem); - this.inputData.put(tmpItem.getName(),tmpItem); + boolean valid = iv.isInputValid(tmpItem.getValue(), inputValue.getType()); + if (valid){ + this.setSelection(tmpItem); + this.inputData.put(tmpItem.getName(),tmpItem); + }else{ + String errMsg = "Wrong input for "+tmpItem.getValue()+"is not an "+inputValue.getType()+" Value."; + log.warn(errMsg); + throw new TransitionException(errMsg); + } }else{ String errMsg = "No Inputvalue given for Inputdata "+ tmpItem.getName(); diff -r f07637f96312 -r e01c163ea5b0 gnv-artifacts/src/main/java/de/intevation/gnv/utils/InputValidator.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/utils/InputValidator.java Tue Sep 29 09:50:25 2009 +0000 @@ -0,0 +1,53 @@ +/** + * + */ +package de.intevation.gnv.utils; + +import org.apache.log4j.Logger; + +import de.intevation.gnv.geobackend.util.DateUtils; + +/** + * @author Tim Englich + * + */ +public class InputValidator { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(InputValidator.class); + + /** + * Constructor + */ + public InputValidator() { + super(); + } + + public boolean isInputValid(String input, String type){ + log.debug("InputValidator.isInputValid " + input+ " "+type); + boolean returnValue = false; + String[] values = input.split(","); + for (int i = 0; i < values.length; i++){ + boolean valid; + if ("Integer".equalsIgnoreCase(type)){ + valid = org.apache.commons.validator.GenericValidator.isInt(values[i]); + }else if ("String".equalsIgnoreCase(type)){ + valid = org.apache.commons.validator.GenericValidator.matchRegexp(values[i], "[a-zA-Z0-9]"); + }else if ("Date".equalsIgnoreCase(type)){ + valid = org.apache.commons.validator.GenericValidator.isDate(values[i], DateUtils.DATE_PATTERN, true); + }else{ + valid = false; + } + if (!valid){ + returnValue = false; + break; + }else{ + returnValue = true; + } + } + log.debug("Is valid? "+returnValue); + return returnValue; + } + +}