KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > sitetree > eventhandler > STForwardHandler


1 package de.webman.sitetree.eventhandler;
2
3 import java.sql.ResultSet JavaDoc;
4 import com.teamkonzept.db.TKDBManager;
5 import com.teamkonzept.db.TKQuery;
6 import com.teamkonzept.db.QueryConstants;
7 import com.teamkonzept.lib.TKException;
8 import com.teamkonzept.lib.TKVector;
9 import com.teamkonzept.web.TKEvent;
10 import com.teamkonzept.web.TKHTMLTemplate;
11 import com.teamkonzept.webman.WebManEvent;
12 import com.teamkonzept.webman.mainint.ContextConstants;
13 import com.teamkonzept.webman.mainint.DatabaseDefaults;
14 import com.teamkonzept.webman.mainint.FrameConstants;
15 import com.teamkonzept.webman.mainint.HTMLUtils;
16 import com.teamkonzept.webman.mainint.TKStandardIterator;
17 import com.teamkonzept.webman.mainint.TreeUtils;
18 import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
19 import com.teamkonzept.webman.mainint.db.queries.TKDBSiteTreeIsChild;
20 import com.teamkonzept.webman.mainint.db.queries.sitetree.StSelect;
21 import com.teamkonzept.webman.mainint.events.DefaultEventHandler;
22 import com.teamkonzept.webman.mainint.events.ParameterTypes;
23
24 /**
25  * Forwards site tree related events.
26  *
27  * @author $Author: uli $
28  * @version $Revision: 1.1 $
29  */

30 public class STForwardHandler
31     extends DefaultEventHandler
32     implements ParameterTypes,
33                FrameConstants,
34                DatabaseDefaults
35 {
36
37     /**
38      * The singleton instance.
39      */

40     private static final STForwardHandler INSTANCE = new STForwardHandler();
41
42     /**
43      * Avoids outside intstantiation.
44      */

45     private STForwardHandler ()
46     {
47         // NOP
48
}
49
50     /**
51      * Returns the singleton instance.
52      *
53      * @return the singleton instance.
54      */

55     public static STForwardHandler getInstance ()
56     {
57         return INSTANCE;
58     }
59
60     /**
61      * Handles the specified event.
62      *
63      * @param event the event to be handled.
64      * @throws TKException if any error occurred during event handling.
65      */

66     public void handleEvent (TKEvent event)
67         throws TKException
68     {
69         try
70         {
71             WebManEvent.checkEvent(event.getRemoteUser(), event.getName(), ContextConstants.SITE_TREE);
72
73             String JavaDoc target = event.getParameter(PARAMETER, "TARGET_EVENT");
74             Integer JavaDoc id = new Integer JavaDoc(event.getParameter(PARAMETER, "SITE_NODE_ID"));
75
76             TKHTMLTemplate frame = event.getPrepHTMLTemplate("f_st.tmpl");
77
78             if (target.equals("ST_EDIT"))
79             {
80                 prepareFrameSet(frame, target, id);
81             }
82
83             if (target.equals("ST_EDIT_STRUC_DOC"))
84             {
85                 prepareFrameSet(frame, target, id);
86                 frame.set("FORM_ID", event.getParameter(PARAMETER, "FORM_ID"));
87             }
88
89             WebManEvent.fillEventsIntoTemplate(event.getRemoteUser(), frame, SITE_TREE);
90             event.finishTemplate(frame);
91         }
92         catch (Throwable JavaDoc e)
93         {
94             // TO DO : Analyze Exception !
95
throw WebmanExceptionHandler.getException(e);
96         }
97     }
98
99     /**
100      * Checks wether this handler is capable to handle the specified event.
101      *
102      * @param event the event to be handled.
103      * @return <CODE>true</CODE> if this handler is capable to handle the
104      * specified event, otherwise <CODE>false</CODE>.
105      */

106     public boolean isHandler (TKEvent event)
107     {
108         return event.getName().equalsIgnoreCase("ST_FORWARD");
109     }
110
111     /**
112      * Prepares a frame set for the event to be forwarded.
113      *
114      * @param frame the frame set.
115      * @param event the event to be forwarded.
116      * @param id the site node identifier.
117      * @throws Throwable if an error occurred during preparation.
118      */

119     private void prepareFrameSet (TKHTMLTemplate frame,
120                                   String JavaDoc event,
121                                   Integer JavaDoc id)
122         throws Throwable JavaDoc
123     {
124         HTMLUtils.fillFrameSet(frame, LEFT_FRAME_WIDTH_SMALL, "ST_SHOWLIST", event);
125
126         frame.set("SITE_NODE_ID", id);
127
128         TKQuery query = TKDBManager.newQuery(StSelect.class);
129         query.setQueryParams(QueryConstants.NEXT_SITE_ID, id);
130         query.execute();
131
132         ResultSet JavaDoc result = query.fetchResultSet();
133
134         if (result.next())
135         {
136             frame.set("SITE_NODE_TYPE", new Integer JavaDoc(result.getInt("SITE_NODE_TYPE")));
137             frame.set("SITE_NODE_NAME", result.getString("SITE_NODE_NAME"));
138             frame.set("SITE_NODE_SHORTNAME", result.getString("SITE_NODE_SHORTNAME"));
139         }
140
141         TKVector openNodes = new TKVector();
142         openNodes.put(0, "-1");
143         openNodes = TreeUtils.updateOpenNodes(openNodes, id.toString(), "-1", id.toString(), TKDBSiteTreeIsChild.class);
144
145         frame.setListIterator(new TKStandardIterator(openNodes, frame.getListIterator(), "OPEN_NODES", "OPEN_NODES"));
146     }
147
148 }
149
Popular Tags