Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/templating/Builder.java @ 1716:3ca999f507b7
flys/issue314: Variables in datacage are now case insensitive.
flys-artifacts/trunk@2994 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 17 Oct 2011 15:53:03 +0000 |
parents | 3f3988bb6284 |
children | e3eb1ea885a7 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/templating/Builder.java Mon Oct 17 14:55:45 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/templating/Builder.java Mon Oct 17 15:53:03 2011 +0000 @@ -417,22 +417,30 @@ String variable = expand(current.getAttribute("var")); String type = expand(current.getAttribute("type")); - if (frames.containsKey(variable)) { - Object object = TypeConverter.convert( - frames.get(variable), - type); - frames.put(variable, object); + Object [] result = new Object[1]; + + if (frames.getStore(variable, result)) { + Object object = TypeConverter.convert(result[0], type); + frames.put(variable.toUpperCase(), object); } } protected String expand(String s) { Matcher m = CompiledStatement.VAR.matcher(s); + Object [] result = new Object[1]; + StringBuffer sb = new StringBuffer(); while (m.find()) { String key = m.group(1); - Object value = frames.get(key); - m.appendReplacement(sb, value != null ? value.toString() : ""); + result[0] = null; + if (frames.getStore(key, result)) { + m.appendReplacement( + sb, result[0] != null ? result[0].toString() : ""); + } + else { + m.appendReplacement(sb, "\\${" + key + "}"); + } } m.appendTail(sb); return sb.toString();