01: package com.teamkonzept.lib.templates;
02:
03: import java.util.*;
04:
05: import com.teamkonzept.lib.*;
06:
07: /**
08: * @author $Author: alex $
09: * @version $Revision: 1.10 $
10: */
11: public abstract class TKValueTag extends TKLabelTag {
12: String value = null;
13: String name = null;
14:
15: /**
16: * Konstruktor 1
17: * Ein Syntaxbaum fuer ein Template wird erzeugt.
18: * Das aktuelle Tag besitzt ein Attribut, welches gesetzt wird.
19: *
20: * @param String def, Name des Tags
21: * @param boolean hasSubTags
22: */
23: public TKValueTag(TKTemplateSyntax parent, String def,
24: boolean hasSubTags) throws TKTemplateSyntaxException {
25: super (parent, def, hasSubTags);
26: if (!hasSubTags) {
27: value = getValue(null);
28: name = getName(null);
29: }
30: }
31:
32: /**
33: *
34: * @param TKTemplateData td
35: */
36: public String getValue(TKTemplateData td)
37: throws TKTemplateSyntaxException {
38: if (value != null)
39: return value;
40: String wert = getRealLabel(td);
41: int index = wert.indexOf('=');
42: return ((index != -1 && (index + 1) < wert.length()) ? wert
43: .substring(index + 1, wert.length()) : "");
44: }
45:
46: /**
47: *
48: * @param TKTemplateData td
49: */
50: public String getName(TKTemplateData td)
51: throws TKTemplateSyntaxException {
52: if (name != null)
53: return name;
54: StringTokenizer st = new StringTokenizer(getLabel(td), "=");
55: return st.nextToken();
56: }
57:
58: /**
59: %%die toString() durch expandVariable() ersetzen !
60: */
61: public boolean matches(TKTemplateData td)
62: throws TKTemplateSyntaxException {
63: Object val = td.getVariable(getName(td));
64: if (val == null)
65: return false;
66:
67: String tagVal = getValue(td);
68:
69: boolean matches = false;
70: if (val instanceof TKVector) {
71: Enumeration e = ((TKVector) val).elements();
72: while (!matches && e.hasMoreElements()) {
73: matches = e.nextElement().toString().equalsIgnoreCase(
74: tagVal);
75: }
76: } else {
77: matches = val.toString().equalsIgnoreCase(tagVal);
78: }
79: return matches;
80: }
81: }
|