01: package com.teamkonzept.lib.templates;
02:
03: import java.io.*;
04:
05: import com.teamkonzept.lib.*;
06: import com.teamkonzept.lib.math.*;
07: import org.apache.log4j.Category;
08:
09: /**
10: * @author $Author: mischa $
11: * @version $Revision: 1.10 $
12: */
13: public class TKEvalTag extends TKLabelTag {
14: private static final Category CAT = Category
15: .getInstance(TKEvalTag.class);
16:
17: public static final int TAG_TYPE = TKSetTag.TAG_TYPE + 1;
18:
19: /**
20: * Konstruktor 1
21: * Ein Syntaxbaum fuer ein Template wird erzeugt.
22: */
23: public TKEvalTag(TKTemplateSyntax parent, String name,
24: boolean hasSubTags) throws TKTemplateSyntaxException {
25: super (parent, name, hasSubTags);
26: }
27:
28: /*******************************************************************
29: /**
30: *
31: */
32: public String apply(TKTemplateData td)
33: throws TKTemplateSyntaxException {
34: String expression = getLabel(td);
35: StringBuffer buf = new StringBuffer();
36: for (int i = 0; i < expression.length(); i++) {
37:
38: char chr = expression.charAt(i);
39: if (chr == '\\') {
40: if ((i + 1) >= expression.length())
41: break;
42: else
43: chr = expression.charAt(i);
44: }
45: buf.append(chr);
46: }
47:
48: Eval ev = new Eval();
49: String result = "";
50: try {
51: result = Double.toString(ev.eval(buf.toString()));
52: if (result.endsWith(".0")) {
53: result = result.substring(0, result.length() - 2);
54: }
55: } catch (Exception e) {
56: CAT.error("error in eval-expression \"" + expression
57: + "\": ", e);
58: }
59: return result;
60: }
61:
62: public void apply(TKTemplateData td, Writer writer)
63: throws TKTemplateSyntaxException, IOException {
64: String expression = getLabel(td);
65: StringBuffer buf = new StringBuffer();
66: for (int i = 0; i < expression.length(); i++) {
67: char chr = expression.charAt(i);
68: if (chr == '\\') {
69: if ((i + 1) >= expression.length())
70: break;
71: else
72: chr = expression.charAt(i);
73: }
74: buf.append(chr);
75: }
76:
77: Eval ev = new Eval();
78: String result = "";
79: try {
80: result = Double.toString(ev.eval(buf.toString()));
81: if (result.endsWith(".0")) {
82: result = result.substring(0, result.length() - 2);
83: }
84: } catch (Exception e) {
85: CAT.error("error in eval-expression \"" + expression
86: + "\": ", e);
87: }
88:
89: writer.write(result);
90: }
91:
92: }
|