KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > webman > attr > TKWMAttrMarkupParser


1 /*
2  * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/webman/attr/TKWMAttrMarkupParser.java,v 1.8 2002/01/18 14:42:30 mischa Exp $
3  *
4  */

5 package com.teamkonzept.webman.attr;
6
7 import java.util.*;
8
9 import com.teamkonzept.lib.*;
10 import com.teamkonzept.publishing.markups.*;
11
12 public class TKWMAttrMarkupParser extends TKDefinedMarkupParser {
13
14     // Bitte nicht ˆffentlich machen !
15
private TKHashtable ids;
16
17     public TKWMAttrMarkupParser (TKVector diagnostics) {
18
19         super (diagnostics);
20
21         this.ids = new TKHashtable();
22     }
23
24     public TKWMAttrMarkup markupById (String JavaDoc id) {
25     
26         return id == null ? null : (TKWMAttrMarkup) ids.get (id.toUpperCase());
27     }
28     
29     public void registerMarkupById (TKWMAttrMarkup markup) {
30     
31         if (markup != null) ids.put (markup.toId().toUpperCase(),markup);
32     }
33
34     public void deregisterMarkupById (String JavaDoc id) {
35     
36         if (id != null) ids.remove (id.toUpperCase());
37     }
38     
39     public void deregisterMarkupById (TKWMAttrMarkup markup) {
40     
41         if (markup != null) deregisterMarkupById (markup.toId().toUpperCase());
42     }
43     
44     public Enumeration registeredMarkupsById () {
45
46         return ids.elements();
47     }
48
49     public TKMarkup createMarkup (String JavaDoc name, TKHashtable params, int pos) {
50
51         if (TKMarkupDefinition.lookup(name) == null)
52
53             return super.createMarkup (name,params,pos);
54
55         try {
56             TKWMAttrMarkup markup = null;
57
58             String JavaDoc id = TKWMAttrMarkup.toId (name,currentDefinition,params);
59             
60             //TKWMAttrMarkup anotherMarkup = markupById (id);
61

62             /* Eigentlich m¸šte man hier einen aufwendigen Vergleich anstellen,
63                ob die beiden Stellen irgendwie compatibel sind. Auf jeden Fall
64                geht folgendes nicht, da beim Einlesen aus der Datenbank evtl. eine
65                mehrfach im Content steht ...
66                
67             if ((anotherMarkup != null) && (params.size() > 1)) {
68             
69                 throw new Exception ("Attribut-Fehler in "+ name+" ("+id+"):"+
70                     " Id schon vergeben, siehe Position "+anotherMarkup.pos);
71
72             } else markup = anotherMarkup;
73             
74             */

75             
76             markup = markupById (id);;
77             if (markup == null) markup = new TKWMAttrMarkup (name,params,pos);
78         
79             return markup;
80             
81         } catch (Exception JavaDoc ex) {
82
83             addDiagnostic (TKMarkupParserException.demandMsg (ex));
84             return super.createMarkup (name,params,pos);
85         }
86     }
87     
88     public void deregister (TKMarkup markup) {
89
90         super.deregister(markup);
91         
92         if (markup instanceof TKWMAttrMarkup)
93             deregisterMarkupById((TKWMAttrMarkup)markup);
94     }
95
96     public void register (TKMarkup markup) {
97
98         super.register(markup);
99
100         if (markup instanceof TKWMAttrMarkup)
101             registerMarkupById((TKWMAttrMarkup)markup);
102     }
103 }
104
Popular Tags