Mercurial > dive4elements > gnv-client
diff gnv/src/main/java/de/intevation/gnv/action/ChangeOptionsAction.java @ 967:c7f8a9b4b006
Improved parsing i18n values of chart/histogram options (issue289).
gnv/trunk@1129 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 26 May 2010 17:03:29 +0000 |
parents | 21ad44ccdb84 |
children | 33198e55371c |
line wrap: on
line diff
--- a/gnv/src/main/java/de/intevation/gnv/action/ChangeOptionsAction.java Tue May 25 14:30:25 2010 +0000 +++ b/gnv/src/main/java/de/intevation/gnv/action/ChangeOptionsAction.java Wed May 26 17:03:29 2010 +0000 @@ -55,19 +55,23 @@ ArtifactDescription ad = sm.getArtifactDescription(); - String target = request.getParameter("target"); + String target = request.getParameter("target"); OutputMode outputMode = sm.getOutputMode(target); + Locale locale = sm.getCurrentLocale(); + if (outputMode != null) { - Collection<OutputParameter> op = outputMode .getOutputParameters(); if (op != null) { Iterator<OutputParameter> it = op.iterator(); + DiagrammOptions oldOptions = sm.getDiagrammOptions(); DiagrammOptions diagrammOptions = new DiagrammOptions(); while (it.hasNext()) { OutputParameter parameter = it.next(); String name = parameter.getName(); - String old = parameter.getValue(); + Object old = oldOptions != null + ? oldOptions.getValue(name) + : parameter.getValue(); String value = request.getParameter(name); String type = parameter.getType(); @@ -108,10 +112,14 @@ } } else if (type.equalsIgnoreCase("double")) { - if (validDouble(request.getLocale(), value)) { - diagrammOptions.setValue(name, value); + try { + double val = parseDoubleValue(locale, value); + String valStr = Double.toString(val); + log.debug("Change diagram options [" + + name +"] to " + val); + diagrammOptions.setValue(name, val); } - else { + catch (ParseException pe) { log.warn("Text is not a valid double: "+value); diagrammOptions.setValue(name, old); @@ -178,19 +186,14 @@ } } - protected boolean validDouble(Locale locale, String value) { - try { - NumberFormat format = NumberFormat.getInstance(locale); - Number number = format.parse(value); + protected double parseDoubleValue(Locale locale, String value) + throws ParseException + { + log.error("LOCALE FOR DOUBLE PARSING: " + locale.toString()); + NumberFormat format = NumberFormat.getNumberInstance(locale); + Number number = format.parse(value); - if (number.doubleValue() < 0) - return false; - - return (number instanceof Double) || validInteger(locale, value); - } - catch (ParseException pe) { - return false; - } + return number.doubleValue(); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :