KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > content > eventhandler > CEOpenMultDirHandler


1 package de.webman.content.eventhandler;
2
3 import com.teamkonzept.web.*;
4 import com.teamkonzept.webman.*;
5 import com.teamkonzept.webman.mainint.*;
6 import com.teamkonzept.webman.mainint.db.queries.*;
7 import com.teamkonzept.webman.mainint.events.*;
8 import com.teamkonzept.lib.*;
9 import com.teamkonzept.db.*;
10 import de.webman.acl.*;
11 //import com.klg.jprobe.profiler.api.JPPerformanceAPI;
12

13 /**
14 * oeffnet oder schliesst ein Verzeichnis im Tree -- kann mehrere Aeste oeffnen --
15 * NODE_ID ist die id des jeweils zu oeffnenden node:
16 * - bei geschlossenen dirs ist die NODE_ID = der CONTENT_NODE_ID,
17 * d.h. dass das noch geschlossene dir geoeffnet wird
18 * - bei offenen dirs ist die NODE_ID die id des parents des zu schliessenden node,
19 * d.h. dass nicht explizit geschlossen wird, sondern das parentdir des noch offenen
20 * dirs geoeffnet wird, damit ist das zu schliessende dir dann auch zu
21  * @author $Author: sebastian $
22  * @version $Revision: 1.6 $
23 */

24 public class CEOpenMultDirHandler extends DefaultEventHandler implements ParameterTypes, FrameConstants
25 {
26     /** empty constructor */
27     private CEOpenMultDirHandler()
28     {}
29     
30     private static CEOpenMultDirHandler instance = new CEOpenMultDirHandler();
31     
32     public static CEOpenMultDirHandler getInstance()
33     {
34         return instance;
35     }
36     
37     public void handleEvent(TKEvent evt) throws TKException
38     {
39         try
40         {
41             CEUtils.checkEvent(evt);
42
43             //JPPerformanceAPI.getInstance().clear();
44
// openNodeId enthaelt die id des neu zu oeffnenden node
45
// closeNodeId enthaelt die id des zu schliessenden node bei einem geschlossenen
46
// node, -1 bei einem offenen node
47
TKHTMLTemplate left = evt.getPrepHTMLTemplate( "ce_nodeList.tmpl" );
48             // behalte sortier-Parameter
49
CEUtils.keepSortParameter(evt, left);
50             
51             String JavaDoc dest = evt.getParameter( PARAMETER, "CONTENT_NODE_ID" );
52             String JavaDoc openNodeId = evt.getParameter( PARAMETER, "NODE_ID" );
53             String JavaDoc closeNodeId = evt.getParameter( PARAMETER, "CONTENT_NODE_PARENT" );
54
55             TKVector openNodes = new TKVector();
56             if( evt.getParams().hasMultiple( PARAMETER, "OPEN_NODES" ) ) {
57                 openNodes = evt.getParams().getVector( PARAMETER, "OPEN_NODES" );
58             }
59             else {
60                 openNodes.put( 0, evt.getParameter( PARAMETER, "OPEN_NODES" ) );
61             }
62             openNodes = TreeUtils.updateOpenNodes( openNodes, openNodeId, closeNodeId, dest, TKDBContentTreeIsChild.class );
63
64             // und fuer jedes element wird
65
// dann mit TKDBContentTreeGetOpen der entspr. teilbaum geholt
66
// die teilbaeume muessen jetzt gemischt werden
67
TKDBResult tree = null;
68             TKDBResult branch;
69             TKQuery q;
70             int size = openNodes.size();
71             for( int i = 0; i<size ; i++ ) {
72                 String JavaDoc id = (String JavaDoc) openNodes.get( i );
73                 if( id!=null ) {
74                     q = TKDBManager.newQuery(TKDBContentTreeGetOpen.class);
75                     //q = TKDBManager.newQuery( "TKDBContentTreeGetOpenUser" );
76
if( id.equals( "-1" ) ) {
77                         q.setQueryParams( "NODE_ID", TKNull.NULL );
78                         //q.setQueryParams( "USER_ID", new Integer(this.userId) );
79
}
80                     else {
81                         q.setQueryParams( "NODE_ID", new Integer JavaDoc(id) );
82                         //q.setQueryParams( "USER_ID", new Integer(this.userId) );
83
}
84                     q.execute();
85                     branch = new TKDBResult( q.fetchResultSet() );
86                     if( tree != null ) {
87                         tree = TreeUtils.mergeIntoTree( tree, branch, "CONTENT_NODE_ID" );
88                     }
89                     else {
90                         tree = branch;
91                     }
92                 }
93             }
94
95             // add allowed events to each node
96
WebManEvent.fillInContentEvents(evt.getRemoteUser(), evt.getName(), CONTENT_EDIT, tree);
97
98             // die liste der jetzt offenen nodes kommt ins template
99
TKStandardIterator iterator1 = new TKStandardIterator( openNodes, left.getListIterator(), "OPEN_NODES", "OPEN_NODES" );
100             left.setListIterator( iterator1 );
101
102             int maxDepth = TreeUtils.getMaxDepth( tree, "CONTENT" );
103             TKOpenContentTreeIterator iterator2 = new TKOpenContentTreeIterator( tree, left.getListIterator(), "CE_NODE_LIST", Integer.parseInt( dest ), maxDepth );
104             left.setListIterator( iterator2 );
105
106             left.set( "MAXDEPTH_PLUS_ONE", Integer.toString(maxDepth+1));
107             left.set( "MAXDEPTH_PLUS_TWO", Integer.toString(maxDepth+2));
108
109             left.set( "RTARGET", RIGHT_TARGET );
110             left.set( "LTARGET", LEFT_TARGET );
111             // dupliziertool
112
LoginFactory factory = LoginFactory.getInstance();
113             Login login = factory.getLogin(evt.getRemoteUser());
114             Event event = EventFactory.getInstance().getEvent("DU_START");
115             if (login.isAllowed(event.getID(), ContextConstants.DUPLICATION_TOOL))
116             {
117                 left.set("DU_START", "1");
118             }
119             // neu ordnen
120
event = EventFactory.getInstance().getEvent("CE_ARRANGE_START");
121             if (login.isAllowed(event.getID(), ContextConstants.CONTENT_EDIT))
122             {
123                 left.set("CE_ARRANGE_START", "1");
124             }
125             
126             evt.finishTemplate(left);
127             //JPPerformanceAPI.getInstance().save("user");
128
}
129         catch (Throwable JavaDoc e)
130         {
131             // TO DO : Analyze Exception !
132
throw WebmanExceptionHandler.getException(e);
133         }
134     }
135     
136     public boolean isHandler(TKEvent evt)
137     {
138         return evt.getName().equalsIgnoreCase("CE_OPEN_MULTDIR");
139     }
140 }
141
Popular Tags