KickJava   Java API By Example, From Geeks To Geeks.

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


1 package de.webman.content.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 import com.teamkonzept.webman.mainint.db.queries.*;
9 import com.teamkonzept.webman.mainint.events.*;
10 import com.teamkonzept.lib.*;
11 import com.teamkonzept.db.*;
12
13 import java.sql.*;
14 import org.apache.log4j.Category;
15
16 /**
17     * Loeschen eines Knotens aus dem ContentTree:
18     * aus DB loeschen und Neuaufbauen der NodeListe
19     *
20     * !!!CHecken, ob der zu loeschende node oder seine Kinder in der liste der offenen Nodes ist, wenn ja, dann raus aus der liste
21     *
22     * Reihenfolge der Params im String:
23     * 1.) ROLE
24     * 2.) CONTENT_NODE_ID
25     *
26     *
27  * @author $Author: alex $
28  * @version $Revision: 1.12 $
29     */

30 public class CENodeDeleteHandler extends DefaultEventHandler implements ParameterTypes, FrameConstants, DatabaseDefaults
31 {
32     /** Logging */
33     private static Category cat = Category.getInstance(CENodeDeleteHandler.class);
34     
35     private CENodeDeleteHandler()
36     {}
37     
38     private static CENodeDeleteHandler instance = new CENodeDeleteHandler();
39     
40     public static CENodeDeleteHandler getInstance()
41     {
42         return instance;
43     }
44     
45     public void handleEvent(TKEvent evt) throws TKException
46     {
47         try
48         {
49             CEUtils.checkEvent(evt);
50             String JavaDoc nodeParent = evt.getParameter( PARAMETER, "CONTENT_NODE_PARENT" );
51             String JavaDoc sNodeId = evt.getParameter( PARAMETER, "CONTENT_NODE_ID" );
52             String JavaDoc sType = evt.getParameter(PARAMETER, "CONTENT_NODE_TYPE");
53             // wenn checked gesetzt ist, wurde schon eine Sicherheitsabfrage durchgefuehrt
54
boolean checked = evt.getParameter(PARAMETER, "CHECKED") != null;
55             TKVector depends = new TKVector();
56             boolean isDependent = CEUtils.checkDependencies(new Integer JavaDoc(sNodeId), depends, true);
57             if (isDependent && !checked)
58             {
59                 // Sicherheitsabfrage
60
TKHTMLTemplate t = evt.getPrepHTMLTemplate("warning_message.tmpl");
61                 if (nodeParent != null)
62                     t.set("CONTENT_NODE_PARENT", nodeParent);
63                 t.set("CONTENT_NODE_ID", sNodeId);
64                 t.set("CONTENT_NODE_TYPE", sType);
65                 TKVector openNodes = new TKVector();
66                 if( evt.getParams().hasMultiple( PARAMETER, "OPEN_NODES" ) ) {
67                     openNodes = evt.getParams().getVector( PARAMETER, "OPEN_NODES" );
68                 }
69                 else {
70                     openNodes.put( 0, evt.getParameter( PARAMETER, "OPEN_NODES" ) );
71                 }
72                 // die liste der offenen nodes kommt ins template
73
TKStandardIterator iterator1 = new TKStandardIterator( openNodes, t.getListIterator(), "OPEN_NODES", "OPEN_NODES" );
74                 t.setListIterator( iterator1 );
75                 t.setListIterator( new TKStandardPluginIterator("REFERENCES", null, depends, false, t.getListIterator()));
76                 
77                 String JavaDoc navContext = evt.getParameter(PARAMETER, "NAVIGATION_CONTEXT");
78                 ContentContext ce;
79                 if (navContext != null)
80                     ce = new ContentContext(navContext);
81                 else
82                     ce = new ContentContext(evt.getParams());
83                 t.set("NAVIGATION_CONTEXT", ce.calculateNavContext());
84                 evt.finishTemplate(t);
85                 return;
86             }
87             if( isDependent ) {
88                 TKQuery q = TKDBManager.newQuery(TKDBContentTreeDependentST.class);
89                 q.setQueryParams( "CONTENT_NODE_ID", new Integer JavaDoc( sNodeId ) );
90                 q.execute();
91                 TKDBResult dbrs = new TKDBResult( q.fetchResultSet() );
92                 TKDBResultRow row;
93                 int curr = 0;
94                 while( (row = (TKDBResultRow) dbrs.get( curr++ ))!=null )
95                 {
96                     String JavaDoc delSiteNode = (String JavaDoc) row.getColumn( "SITE_NODE_ID" );
97                     cat.debug(".....so I DELETE site tree node "+delSiteNode);
98                     q = TKDBManager.newQuery(TKDBSiteTreeDeleteNode.class);
99                     q.setQueryParams( "SITE_NODE_ID", new Integer JavaDoc( delSiteNode ) );
100                     q.execute();
101                 }
102                 cat.debug(".....AND I DELETE all in DOCUMENT_CONTENT with content tree node "+sNodeId);
103                 q = TKDBManager.newQuery(TKDBContentTreeDeleteDependentDC.class);
104                 q.setQueryParams( "CONTENT_NODE_ID", new Integer JavaDoc( sNodeId ) );
105                 q.execute();
106             }
107             TKQuery q = TKDBManager.newQuery(TKDBContentTreeDeleteNode.class);
108             q.setQueryParams( "CONTENT_NODE_ID", new Integer JavaDoc( sNodeId ) );
109             q.execute();
110             if (sType.equals(GROUP) || sType.equals(DIRECTORY_NODE))
111             {
112                 TKVector openNodes = new TKVector();
113                 if( evt.getParams().hasMultiple( PARAMETER, "OPEN_NODES" ) )
114                 {
115                     openNodes = evt.getParams().getVector( PARAMETER, "OPEN_NODES" );
116                 }
117                 else
118                 {
119                     String JavaDoc openNode = evt.getParameter( PARAMETER, "OPEN_NODES" );
120                     if (openNode != null)
121                         openNodes.put( 0, openNode);
122                 }
123                 if (openNodes.size() > 0)
124                     openNodes = TreeUtils.updateOpenNodes( openNodes, nodeParent, "1", sNodeId, TKDBContentTreeIsChild.class );
125                 TKHTMLTemplate frame = evt.getPrepHTMLTemplate( "f_ce.tmpl" );
126                 // behalte sortier-Parameter
127
CEUtils.keepSortParameter(evt, frame);
128                 
129                 HTMLUtils.fillFrameSet( frame, LEFT_FRAME_WIDTH, "CE_SHOWLIST", "CE_EMPTY" );
130                 TKStandardIterator iterator1 = new TKStandardIterator( openNodes, frame.getListIterator(), "OPEN_NODES", "OPEN_NODES" );
131                 frame.setListIterator( iterator1 );
132                 evt.finishTemplate(frame);
133             }
134             else
135             {
136                 // SINGLE
137
evt.getParams().put(PARAMETER, "RECALCULATE", "a");
138                 CEBrowseHandler.getInstance().handleEvent(evt);
139             }
140         }
141         catch (Throwable JavaDoc e)
142         {
143             // TO DO : Analyze Exception !
144
throw WebmanExceptionHandler.getException(e);
145         }
146     }
147     
148     public boolean isHandler(TKEvent evt)
149     {
150         return evt.getName().equalsIgnoreCase("CE_NODE_DELETE");
151     }
152 }
153
Popular Tags