KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > lib > TKVectorIteratorPlugin


1 package com.teamkonzept.lib;
2
3 import java.util.*;
4
5 public class TKVectorIteratorPlugin extends TKIteratorPlugin {
6
7     private String JavaDoc itemName;
8     private boolean doSort;
9     private TKHashtable subPlugins = new TKHashtable();
10     
11     public TKVectorIteratorPlugin (String JavaDoc listName, String JavaDoc itemName, TKVector vec, boolean doSort) {
12
13         super (vec,listName,doSort);
14         
15         this.itemName = itemName;
16         this.doSort = doSort;
17     }
18         
19     public boolean applyThis (Object JavaDoc item, TKTemplate template, String JavaDoc path)
20     {
21         Integer JavaDoc idx = (Integer JavaDoc)template.getEnumerationContext(name);
22         TKHashtable subs = (TKHashtable) subPlugins.get(idx);
23         if (subs == null)
24         {
25             subs = new TKHashtable();
26             subPlugins.put(idx, subs);
27         }
28         template.set("ITERATOR_PATH",path);
29         if (item instanceof TKHashtable)
30         {
31             subs.put (name+".SUB",new TKHashtableIteratorPlugin
32                 (name+".SUB",itemName,(TKHashtable) item,true));
33             template.set(name+".SUB.LEN",new Integer JavaDoc(((TKHashtable) item).size()));
34                 
35             TKHashtableIteratorPlugin.applyTable (name,template, (TKHashtable) item,
36                 itemName,subs,path);
37             return true;
38
39         } else if (item instanceof TKVector)
40         {
41             subs.put (name+".SUB",new TKVectorIteratorPlugin
42                 (name+".SUB",itemName,(TKVector) item,doSort));
43             template.set(name+".SUB.LEN",new Integer JavaDoc(((TKVector) item).size()));
44             return true;
45
46         } else if (item instanceof TKHashable)
47         {
48             TKHashtable sub = ((TKHashable) item).toHashtable();
49             subs.put (name+".SUB",new TKHashtableIteratorPlugin(name+".SUB",itemName,sub,true));
50             template.set(name+".SUB.LEN",new Integer JavaDoc(sub.size()));
51
52             TKHashtableIteratorPlugin.applyTable (name,template,((TKHashable) item).toHashtable(),
53                 itemName,subs,path);
54             return true;
55
56         } else if (item instanceof TKVectorizable)
57         {
58             TKVector sub = ((TKVectorizable) item).toVector();
59             subs.put (name+".SUB",new TKVectorIteratorPlugin(name+".SUB",itemName,sub,doSort));
60             template.set(name+".SUB.LEN",new Integer JavaDoc(sub.size()));
61             return true;
62         }
63         
64         if (itemName == null) itemName = "ITEM_VALUE";
65         else template.set(itemName,item.toString());
66
67         template.set(itemName,item.toString());
68         template.set("ITEM_NAME",itemName);
69         template.set("ITEM_VALUE",item.toString());
70
71         return true;
72     }
73             
74     public boolean applyChilds (TKTemplate template, int i, String JavaDoc currListName, String JavaDoc path)
75     {
76         if (subPlugins == null) return false;
77         Integer JavaDoc idx = (Integer JavaDoc)template.getEnumerationContext(name);
78         if (idx == null)
79             return false;
80         TKHashtable subs = (TKHashtable) subPlugins.get(idx);
81         if (subs == null)
82             return false;
83         
84         Enumeration e = subs.elements();
85         while (e.hasMoreElements())
86         {
87             TKIteratorPlugin plugin = (TKIteratorPlugin) e.nextElement();
88             if (plugin.apply (template,i,currListName,null)) return true;
89         }
90
91         return false;
92     }
93 }
94
Popular Tags