KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > duplication > eventhandler > DUChooseOpenDirHandler


1 package de.webman.duplication.eventhandler;
2
3 import com.teamkonzept.web.*;
4 import com.teamkonzept.webman.*;
5 import com.teamkonzept.webman.db.TKWebmanDBManager;
6 import com.teamkonzept.webman.mainint.*;
7 import com.teamkonzept.webman.mainint.db.*;
8
9
10 import com.teamkonzept.webman.mainint.db.queries.*;
11 import com.teamkonzept.webman.mainint.events.*;
12 import com.teamkonzept.lib.*;
13 import com.teamkonzept.db.*;
14
15 import java.sql.*;
16 import java.io.*;
17
18 import com.teamkonzept.webman.mainint.*;
19
20
21 /**
22  * @author $Author: mischa $
23  * @version $Revision: 1.4 $
24  */

25 public class DUChooseOpenDirHandler extends DefaultEventHandler implements ParameterTypes, FrameConstants, DatabaseDefaults
26 {
27
28     private DUChooseOpenDirHandler()
29     {}
30     
31     private static DUChooseOpenDirHandler instance = new DUChooseOpenDirHandler();
32     
33     public static DUChooseOpenDirHandler getInstance()
34     {
35         return instance;
36     }
37     
38     public void handleEvent(TKEvent evt) throws TKException
39     {
40         try
41         {
42             TKParams params = evt.getParams();
43             
44             
45             TKHTMLTemplate t = evt.getPrepHTMLTemplate( "du_choose.tmpl" );
46             if(params.getClass("PAR") != null){
47                 t.set(params.getClass("PAR"));
48             }
49             String JavaDoc CTdest = params.get( "PAR", "CONTENT_NODE_ID" );
50             String JavaDoc CTopenNodeId = params.get( "PAR", "CT_NODE_ID" );
51             String JavaDoc CTcloseNodeId = params.get( "PAR", "CONTENT_NODE_PARENT" );
52             
53             String JavaDoc tmplRootId = params.get( "PAR", "TEMPLATE_ROOT_ID" );
54             String JavaDoc targetRootId = params.get( "PAR", "TARGET_ROOT_ID" );
55             if(tmplRootId != null){
56                 t.set("TEMPLATE_ROOT_ID", tmplRootId);
57             }
58             if(targetRootId != null){
59                 t.set("TARGET_ROOT_ID", targetRootId);
60             }
61
62             String JavaDoc siteTreeFlag = (params.get("PAR", "SITE_TREE_FLAG")) == null? "OFF":params.get("PAR", "SITE_TREE_FLAG") ;
63             String JavaDoc contentFlag = (params.get( "PAR", "CONTENT_FLAG" ))==null?"OFF":params.get( "PAR", "CONTENT_FLAG" );
64             t.set("SITE_TREE_FLAG", siteTreeFlag);
65             t.set("CONTENT_FLAG", contentFlag);
66
67             TKVector CTopenNodes = new TKVector();
68             if( params.hasMultiple( "PAR", "CT_OPEN_NODES" ) ) {
69                 CTopenNodes = params.getVector( "PAR", "CT_OPEN_NODES" );
70             }
71             else {
72                 CTopenNodes.put( 0, params.get( "PAR", "CT_OPEN_NODES" ) );
73             }
74             CTopenNodes = TreeUtils.updateOpenNodes( CTopenNodes, CTopenNodeId, CTcloseNodeId, CTdest, TKDBContentTreeIsChild.class );
75             
76             /* Information über den SiteTree, aus dem link im ContentTree */
77             TKVector openSCNodes = new TKVector();
78             if( params.hasMultiple( "PAR", "SC_OPEN_NODES" ) ) {
79                 openSCNodes = params.getVector( "PAR", "SC_OPEN_NODES" );
80             }
81             else {
82                 openSCNodes.put( 0, params.get( "PAR", "SC_OPEN_NODES" ) );
83             }
84             
85             
86             TKDBResult CTtree = null;
87             TKDBResult CTbranch;
88             TKQuery qCT;
89             int sizeCT = CTopenNodes.size();
90             for( int i = 0; i<sizeCT ; i++ ) {
91                 String JavaDoc id = (String JavaDoc) CTopenNodes.get( i );
92                 if( id!=null ) {
93                     qCT = TKDBManager.newQuery( TKDBContentTreeGetOpen.class );
94                     if( id.equals( "-1" ) ) {
95                         qCT.setQueryParams( "NODE_ID", TKNull.NULL );
96                     }
97                     else {
98                         qCT.setQueryParams( "NODE_ID", new Integer JavaDoc(id) );
99                     }
100                     qCT.execute();
101                     CTbranch = new TKDBResult( qCT.fetchResultSet() );
102                     if( CTtree != null ) {
103                         CTtree = TreeUtils.mergeIntoTree( CTtree, CTbranch, "CONTENT_NODE_ID" );
104                     }
105                     else {
106                         CTtree = CTbranch;
107                     }
108                 }
109             }
110             
111             // die Liste der jetzt offenen Nodes kommt ins Template
112
TKStandardIterator iterator1CT = new TKStandardIterator( CTopenNodes, t.getListIterator(), "CT_OPEN_NODES", "CT_OPEN_NODES" );
113             t.setListIterator( iterator1CT );
114             
115             // die Liste der jetzt offenen SiteTree Nodes kommt in die ContentTree Links
116
TKStandardIterator iteratorSC1 = new TKStandardIterator( openSCNodes, t.getListIterator(), "SC_OPEN_NODES", "SC_OPEN_NODES" );
117             t.setListIterator( iteratorSC1 );
118             
119             int maxDepth = TreeUtils.getMaxDepth( CTtree, "CONTENT" );
120             TKOpenContentTreeIterator iteratorCT = new TKOpenContentTreeIterator( CTtree, t.getListIterator(), "CE_NODE_LIST", Integer.parseInt( CTdest ), maxDepth );
121             t.setListIterator( iteratorCT );
122             t.set( "CT_MAXDEPTH_PLUS_TWO", Integer.toString(maxDepth+2) );
123             t.set( "ROLE", (params.get( "PAR", "ROLE" )==null)?"":params.get( "PAR", "ROLE" ) );
124             doSTNodeListMult(t,CTopenNodes, evt);
125             
126             
127             //Optionsliste fuer Anzahl der Kopien
128
Integer JavaDoc number;
129             TKVector aVector = new TKVector(Utils.MAX_DUPLICATION);
130             for (int i = 1; i<= Utils.MAX_DUPLICATION; i++){
131                 number = new Integer JavaDoc(i);
132                 aVector.addElement(number);
133             }
134             TKStandardIterator iteratorNum = new TKStandardIterator( aVector, t.getListIterator(), "NUMBERS_LIST", "NUMBER" );
135             t.setListIterator( iteratorNum );
136
137             evt.finishTemplate(t);
138         }
139         catch (Throwable JavaDoc e)
140         {
141             // TO DO : Analyze Exception !
142
throw WebmanExceptionHandler.getException(e);
143         }
144     }
145     
146     public boolean isHandler(TKEvent evt)
147     {
148         return evt.getName().equalsIgnoreCase("DU_CE_CHOOSE_OPENDIR");
149     }
150         
151     
152     /**
153      * Baut die Liste der Knoten (Structure Tree) im linken Frame auf
154      *
155      *
156      * @param
157      */

158     public void doSTNodeListMult(TKHTMLTemplate left, TKVector CTopenNodes, TKEvent evt) throws Throwable JavaDoc
159     {
160         TKParams params = evt.getParams();
161         
162         String JavaDoc dest = (params.get( "PAR", "DESTINATION" ))==null?"":params.get( "PAR", "DESTINATION" );
163         //String role = (params.get( "PAR", "ROLE" )==null)?"":params.get( "PAR", "ROLE" );
164

165         TKVector openNodes = new TKVector();
166         if( params.hasMultiple( "PAR", "SC_OPEN_NODES" ) ) {
167             openNodes = params.getVector( "PAR", "SC_OPEN_NODES" );
168         }
169         else {
170             openNodes.put( 0, params.get( "PAR", "SC_OPEN_NODES" ) );
171         }
172
173         TKQuery q;
174         TKDBResult tree = null;
175         TKDBResult branch;
176         int size = openNodes.size();
177         for( int i = 0; i<size ; i++ ) {
178             String JavaDoc id = (String JavaDoc) openNodes.get( i );
179             if( id!=null ) {
180                 q = TKDBManager.newQuery( TKDBSiteTreeGetOpen.class );
181                 if( id.equals( "-1" ) ) {
182                     q.setQueryParams( "NODE_ID", TKNull.NULL );
183                 }
184                 else {
185                     q.setQueryParams( "NODE_ID", new Integer JavaDoc(id) );
186                 }
187                 q.execute();
188                 branch = new TKDBResult( q.fetchResultSet() );
189                 if( tree != null ) {
190                     tree = TreeUtils.mergeIntoTree( tree, branch, "SITE_NODE_ID" );
191                 }
192                 else {
193                     tree = branch;
194                 }
195             }
196         }
197         
198         // die liste der offenen nodes kommt ins template
199
TKStandardIterator iterator1 = new TKStandardIterator( openNodes, left.getListIterator(), "ST_OPEN_NODES", "ST_OPEN_NODES" );
200         left.setListIterator( iterator1 );
201         
202         // die Liste der jetzt offenen ContentTree nodes kommt in die SiteTree links
203
TKStandardIterator iteratorCS1 = new TKStandardIterator( CTopenNodes, left.getListIterator(), "CS_OPEN_NODES", "CS_OPEN_NODES" );
204         left.setListIterator( iteratorCS1 );
205
206         int maxDepth = TreeUtils.getMaxDepth( tree, "SITE" );
207         DUOpenSiteTreeIterator iterator;
208         if( !dest.equals( "" ) ) {
209             iterator = new DUOpenSiteTreeIterator( tree, left.getListIterator(), "ST_NODE_LIST", Integer.parseInt( dest ), maxDepth );
210         }
211         else {
212             //left.set( "ST_IS_TOP", "1" );
213
iterator = new DUOpenSiteTreeIterator( tree, left.getListIterator(), "ST_NODE_LIST", maxDepth );
214         }
215         left.setListIterator( iterator );
216
217         left.set( "ST_MAXDEPTH_PLUS_TWO", Integer.toString(maxDepth+2));
218     
219     }
220
221         
222 }
223
Popular Tags