Mercurial > dive4elements > gnv-client
comparison 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 |
comparison
equal
deleted
inserted
replaced
966:13de46229f63 | 967:c7f8a9b4b006 |
---|---|
53 SessionModel sm = SessionModelFactory.getInstance() | 53 SessionModel sm = SessionModelFactory.getInstance() |
54 .getSessionModel(request); | 54 .getSessionModel(request); |
55 | 55 |
56 ArtifactDescription ad = sm.getArtifactDescription(); | 56 ArtifactDescription ad = sm.getArtifactDescription(); |
57 | 57 |
58 String target = request.getParameter("target"); | 58 String target = request.getParameter("target"); |
59 OutputMode outputMode = sm.getOutputMode(target); | 59 OutputMode outputMode = sm.getOutputMode(target); |
60 Locale locale = sm.getCurrentLocale(); | |
61 | |
60 if (outputMode != null) { | 62 if (outputMode != null) { |
61 | |
62 Collection<OutputParameter> op = outputMode | 63 Collection<OutputParameter> op = outputMode |
63 .getOutputParameters(); | 64 .getOutputParameters(); |
64 if (op != null) { | 65 if (op != null) { |
65 Iterator<OutputParameter> it = op.iterator(); | 66 Iterator<OutputParameter> it = op.iterator(); |
67 DiagrammOptions oldOptions = sm.getDiagrammOptions(); | |
66 DiagrammOptions diagrammOptions = new DiagrammOptions(); | 68 DiagrammOptions diagrammOptions = new DiagrammOptions(); |
67 while (it.hasNext()) { | 69 while (it.hasNext()) { |
68 OutputParameter parameter = it.next(); | 70 OutputParameter parameter = it.next(); |
69 String name = parameter.getName(); | 71 String name = parameter.getName(); |
70 String old = parameter.getValue(); | 72 Object old = oldOptions != null |
73 ? oldOptions.getValue(name) | |
74 : parameter.getValue(); | |
71 String value = request.getParameter(name); | 75 String value = request.getParameter(name); |
72 String type = parameter.getType(); | 76 String type = parameter.getType(); |
73 | 77 |
74 if (log.isDebugEnabled()) { | 78 if (log.isDebugEnabled()) { |
75 log.debug("Change chart options now..."); | 79 log.debug("Change chart options now..."); |
106 value | 110 value |
107 ); | 111 ); |
108 } | 112 } |
109 } | 113 } |
110 else if (type.equalsIgnoreCase("double")) { | 114 else if (type.equalsIgnoreCase("double")) { |
111 if (validDouble(request.getLocale(), value)) { | 115 try { |
112 diagrammOptions.setValue(name, value); | 116 double val = parseDoubleValue(locale, value); |
117 String valStr = Double.toString(val); | |
118 log.debug("Change diagram options [" | |
119 + name +"] to " + val); | |
120 diagrammOptions.setValue(name, val); | |
113 } | 121 } |
114 else { | 122 catch (ParseException pe) { |
115 log.warn("Text is not a valid double: "+value); | 123 log.warn("Text is not a valid double: "+value); |
116 diagrammOptions.setValue(name, old); | 124 diagrammOptions.setValue(name, old); |
117 | 125 |
118 request.setAttribute( | 126 request.setAttribute( |
119 CommunicationKeys.REQUEST_EXCEPTION_MESSAGE, | 127 CommunicationKeys.REQUEST_EXCEPTION_MESSAGE, |
176 catch (ParseException pe) { | 184 catch (ParseException pe) { |
177 return false; | 185 return false; |
178 } | 186 } |
179 } | 187 } |
180 | 188 |
181 protected boolean validDouble(Locale locale, String value) { | 189 protected double parseDoubleValue(Locale locale, String value) |
182 try { | 190 throws ParseException |
183 NumberFormat format = NumberFormat.getInstance(locale); | 191 { |
184 Number number = format.parse(value); | 192 log.error("LOCALE FOR DOUBLE PARSING: " + locale.toString()); |
193 NumberFormat format = NumberFormat.getNumberInstance(locale); | |
194 Number number = format.parse(value); | |
185 | 195 |
186 if (number.doubleValue() < 0) | 196 return number.doubleValue(); |
187 return false; | |
188 | |
189 return (number instanceof Double) || validInteger(locale, value); | |
190 } | |
191 catch (ParseException pe) { | |
192 return false; | |
193 } | |
194 } | 197 } |
195 } | 198 } |
196 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : | 199 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |