comparison 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
comparison
equal deleted inserted replaced
1715:a70e0cbc5e02 1716:3ca999f507b7
415 protected void convert(Node parent, Element current) { 415 protected void convert(Node parent, Element current) {
416 416
417 String variable = expand(current.getAttribute("var")); 417 String variable = expand(current.getAttribute("var"));
418 String type = expand(current.getAttribute("type")); 418 String type = expand(current.getAttribute("type"));
419 419
420 if (frames.containsKey(variable)) { 420 Object [] result = new Object[1];
421 Object object = TypeConverter.convert( 421
422 frames.get(variable), 422 if (frames.getStore(variable, result)) {
423 type); 423 Object object = TypeConverter.convert(result[0], type);
424 frames.put(variable, object); 424 frames.put(variable.toUpperCase(), object);
425 } 425 }
426 } 426 }
427 427
428 protected String expand(String s) { 428 protected String expand(String s) {
429 Matcher m = CompiledStatement.VAR.matcher(s); 429 Matcher m = CompiledStatement.VAR.matcher(s);
430
431 Object [] result = new Object[1];
430 432
431 StringBuffer sb = new StringBuffer(); 433 StringBuffer sb = new StringBuffer();
432 while (m.find()) { 434 while (m.find()) {
433 String key = m.group(1); 435 String key = m.group(1);
434 Object value = frames.get(key); 436 result[0] = null;
435 m.appendReplacement(sb, value != null ? value.toString() : ""); 437 if (frames.getStore(key, result)) {
438 m.appendReplacement(
439 sb, result[0] != null ? result[0].toString() : "");
440 }
441 else {
442 m.appendReplacement(sb, "\\${" + key + "}");
443 }
436 } 444 }
437 m.appendTail(sb); 445 m.appendTail(sb);
438 return sb.toString(); 446 return sb.toString();
439 } 447 }
440 448

http://dive4elements.wald.intevation.org