KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > generator > GenContentIterator


1 package de.webman.generator;
2
3 import com.teamkonzept.web.*;
4 import com.teamkonzept.lib.*;
5
6 /**
7     * @author $Author: alex $
8     * @version $Revision: 1.7 $
9 */

10 public class GenContentIterator implements TKListIterator
11 {
12
13     /**
14      * Verweis zurück auf den aktuellen statischen Kontext des laufenden Threads
15      */

16     private GeneratorContext context;
17
18     private TKVector entries;
19     private int entryCount;
20
21     /**
22      * the scope in the template when the iterator is created
23      */

24     private String JavaDoc listName;
25     private TKListIterator oldIterator;
26     private boolean onlyStructureContents;
27     private boolean fromReference;
28
29     /** wird nur Name generiert, oder auch der Inhalt ? */
30     private boolean onlyName;
31
32     public GenContentIterator(
33         GeneratorContext context,
34         TKVector entries,
35         String JavaDoc listName,
36         TKListIterator oldIterator,
37         boolean onlyStructureContents, boolean _fromReference, boolean _onlyName )
38     {
39         this.context = context != null ? context : GeneratorContext.setup ();
40         
41         this.entries = entries;
42         this.listName = listName;
43         this.oldIterator = oldIterator;
44         this.entryCount = entries.size();
45         this.onlyStructureContents = onlyStructureContents;
46         fromReference = _fromReference;
47         onlyName = _onlyName;
48     }
49     
50
51     /**
52      * generiere den Content für einen spezifischen Listeneintrag aus dem
53      * Iterator. (wende die jeweilige apply methode an)
54      * @param t das aktuelle template objekt
55      * @param i die listen position, die generiert werden soll
56      * @param currListName der aktuelle scope. Nur wenn der aktuelle Scope
57      * mit dem scope übereinstimmt, indem der Empfänger instanziiert wurde,
58      * werden die contents auch tatsächlich generiert.
59      * @return konnten die contents generiert werden? (?) */

60     public boolean apply( TKTemplate t, int i, String JavaDoc currListName )
61     {
62         if( currListName.equalsIgnoreCase(listName) )
63         {
64             if( i >= entryCount ) return false;
65             SiteContent content = ((SiteContent)entries.get(i));
66
67             if (content != null)
68                 content.fillNameIntoTemplate( (TKHTMLTemplate)t, listName );
69 // if (!fromReference)
70
// context.clearCycle();
71
// if (fromReference)
72
context.push();
73
74             if (!ReferenceCycleDetector.isCycle(new Integer JavaDoc(content.getInstanceId())) && ! onlyName)
75             {
76                 if ((content != null) && (!onlyStructureContents || content.isStructureContent()))
77                     {
78                     t.set( "SCOPE", currListName );
79                     t.set( currListName+".IDX", String.valueOf(i+1) );
80                     if( i % 2 == 1 ) t.set( currListName+".ODD", Boolean.TRUE );
81                     content.fillIntoTemplate( (TKHTMLTemplate )t, listName );
82                 }
83             }
84
85             //if (fromReference)
86
context.pop();
87
88             return true;
89         }
90         else if( oldIterator != null )
91         {
92             return oldIterator.apply( t, i, currListName );
93         }
94         return false;
95     }
96 }
97
Popular Tags