KickJava   Java API By Example, From Geeks To Geeks.

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


1 package de.webman.sitetree.eventhandler;
2
3
4 import com.teamkonzept.web.*;
5 import com.teamkonzept.webman.*;
6 import com.teamkonzept.webman.db.TKWebmanDBManager;
7 import com.teamkonzept.webman.mainint.*;
8 import com.teamkonzept.webman.mainint.db.*;
9
10
11 import com.teamkonzept.webman.mainint.db.queries.*;
12 import com.teamkonzept.webman.mainint.events.*;
13 import com.teamkonzept.lib.*;
14 import com.teamkonzept.field.*;
15 import com.teamkonzept.field.db.*;
16 import com.teamkonzept.db.*;
17 import com.teamkonzept.publishing.markups.*;
18
19 import java.sql.*;
20 import java.io.*;
21 import java.util.*;
22
23 /**
24 * Speichern eines Structure Document
25 *
26  * @author $Author: alex $
27  * @version $Revision: 1.7 $
28 */

29 public class STSaveStructureDocHandler extends DefaultEventHandler implements ParameterTypes, FrameConstants, DatabaseDefaults
30 {
31     /**Private Konstruktor */
32     private STSaveStructureDocHandler()
33     {}
34
35     /** Singleton Instanz */
36     private static STSaveStructureDocHandler instance = new STSaveStructureDocHandler();
37
38     /** Zugriff auf Singleton */
39     public static STSaveStructureDocHandler getInstance()
40     {
41         return instance;
42     }
43     
44     /**
45         ueberprueft User Rechte und wirft Exception, falls es nicht elaubt ist
46         @param user der Remote User
47         @param event der zu checkende Event
48     */

49     public void checkUserRights(String JavaDoc user, String JavaDoc event) throws TKException
50     {
51         try
52         {
53             WebManEvent.checkEvent(user, event, ContextConstants.SITE_TREE);
54         }
55         catch (Throwable JavaDoc e)
56         {
57             throw WebmanExceptionHandler.getException(e);
58         }
59     }
60     
61     public void saveStructureDoc(Integer JavaDoc siteNodeId, Integer JavaDoc formId, Integer JavaDoc contentId, boolean update) throws TKException
62     {
63         try
64         {
65             TKQuery q;
66             if( !update )
67             {
68                 // neu einfuegen
69
q = TKDBManager.newQuery(TKDBStructContPut.class);
70             }
71             else
72             {
73                 // CONTENT_ID anpassen !!
74
q = TKDBManager.newQuery(TKDBStructContUpdate.class);
75             }
76             q.setQueryParams( "SITE_NODE_ID", siteNodeId );
77             q.setQueryParams( "FORM_ID", formId );
78             q.setQueryParams( "CONTENT_ID", contentId );
79             q.execute();
80             q.fetchResultSet();
81         }
82         catch (Throwable JavaDoc e)
83         {
84             throw WebmanExceptionHandler.getException(e);
85         }
86     }
87     
88     public void handleEvent(TKEvent evt) throws TKException
89     {
90         try
91         {
92             WebManEvent.checkEvent(evt.getRemoteUser(), evt.getName(), ContextConstants.SITE_TREE);
93             //content speichern, id holen
94
String JavaDoc sConId = evt.getNotNullParameter( PARAMETER, "CONTENT_ID" );
95             int formId = Integer.parseInt( evt.getParameter( PARAMETER, "FORM_ID" ) );
96
97             TKFormDBData data = new TKFormDBData( formId, STRUCTURE_FORM_TYPE );
98             TKFormDBInterface.Get( data );
99             TKBaseField field = TKFieldRegistry.getFieldFromDB( data );
100
101             TKHashtable fieldContext = new TKHashtable();
102             Object JavaDoc realData = field.compileData( "", evt.getParams().getClass( PARAMETER ), fieldContext );
103
104             TKContentDBData conDB;
105             int conId;
106             
107             // ok, es ist doof, aber wir loeschen den alten und legen einen neuen an !
108
if (!sConId.equals(""))
109             {
110                 // alten loeschen
111
conId = Integer.parseInt( sConId );
112                 TKQuery q = TKDBManager.newQuery(DeleteStrucContentValue.class);
113                 q.setQueryParams("CONTENT_ID", new Integer JavaDoc(sConId));
114                 q.execute();
115             }
116             // speichern eines neuen content
117
TKQuery q = TKDBManager.newQuery(TKDBContentNewContent.class);
118             q.execute();
119             ResultSet rs = q.fetchResultSet();
120             rs.next();
121             conId = rs.getInt( "CONTENT_ID" );
122             conDB = new TKContentDBData();
123             conDB.content_id = conId;
124             field.insertDataIntoDB( conDB, realData );
125             TKContentDBInterface.Put( conDB );
126
127             int siteNodeId = Integer.parseInt( evt.getParameter( PARAMETER, "SITE_NODE_ID" ) );
128             if( sConId.equals("") )
129             {
130                 // neu einfuegen
131
q = TKDBManager.newQuery(TKDBStructContPut.class);
132             }
133             else
134             {
135                 // CONTENT_ID anpassen !!
136
q = TKDBManager.newQuery(TKDBStructContUpdate.class);
137             }
138             q.setQueryParams( "SITE_NODE_ID", new Integer JavaDoc( siteNodeId ) );
139             q.setQueryParams( "FORM_ID", new Integer JavaDoc( formId ) );
140             q.setQueryParams( "CONTENT_ID", new Integer JavaDoc( conId ) );
141             q.execute();
142             rs = q.fetchResultSet();
143             
144             STEditHandler.getInstance().handleEvent(evt);
145         }
146         catch (Throwable JavaDoc e)
147         {
148             // TO DO : Analyze Exception !
149
throw WebmanExceptionHandler.getException(e);
150         }
151     }
152
153     /** gibt den Event an
154      * @param evt aktueller Event
155      * @return ob der Event behandelt wird
156      */

157     public boolean isHandler(TKEvent evt)
158     {
159         return evt.getName().equalsIgnoreCase("ST_SAVE_STRUC");
160     }
161 }
162
Popular Tags