KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > documenttype > eventhandler > DTCopyPresHandler


1 package de.webman.documenttype.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.field.*;
14 import com.teamkonzept.field.db.*;
15 import com.teamkonzept.db.*;
16 import com.teamkonzept.publishing.markups.*;
17
18 import java.sql.*;
19 import java.io.*;
20
21 /**
22 * doPRCopy
23 *
24 * Kopieren einer Presentation
25 * danach linke Liste neu, rechts Liste aller Componenten dieser Presentation
26 *
27  * @author $Author: alex $
28  * @version $Revision: 1.3 $
29 */

30 public class DTCopyPresHandler extends DefaultEventHandler implements ParameterTypes, FrameConstants, DatabaseDefaults
31 {
32     private DTCopyPresHandler()
33     {}
34     
35     private static DTCopyPresHandler instance = new DTCopyPresHandler();
36     
37     public static DTCopyPresHandler getInstance()
38     {
39         return instance;
40     }
41     
42     public void handleEvent(TKEvent evt) throws TKException
43     {
44         try
45         {
46             WebManEvent.checkEvent(evt.getRemoteUser(), evt.getName(), ContextConstants.PRESENTATIONS);
47
48             // ALLES NOCH IN EINE TRANSAKTION !!
49
// zu kopierende Präsentation
50
String JavaDoc presIdAlt = evt.getParameter(PARAMETER, "PRESENTATION_ID");
51             // Neue Namen
52
String JavaDoc neuerName = evt.getParameter(PARAMETER, "PRESENTATION_NAME");
53             String JavaDoc neuerKurzName = evt.getParameter(PARAMETER, "PRESENTATION_SHORTNAME");
54             String JavaDoc templateID = evt.getParameter(PARAMETER, "TEMPLATE_ID");
55             
56             // erster Schritt -> Presentation neu einfuegen
57
TKQuery q = TKDBManager.newQuery(TKDBPresInsert.class);
58             q.setQueryParams( "PRESENTATION_NAME", neuerName );
59             q.setQueryParams( "PRESENTATION_SHORTNAME", neuerKurzName );
60             q.setQueryParams( "TEMPLATE_ID", new Integer JavaDoc( templateID ) );
61             q.execute();
62             ResultSet rs = q.fetchResultSet();
63             Integer JavaDoc presId = null; // die neue ID !
64
if( rs.next() ) {
65                 presId = new Integer JavaDoc( rs.getInt( "PRESENTATION_ID" ) );
66             }
67             
68             // 2. Alle Presentation_components kopieren
69
// 3. Alle Presentation_Content kopieren
70
q = TKDBManager.newQuery(TKDBPresCompGet.class);
71             q.setQueryParams("PRESENTATION_ID", new Integer JavaDoc(presIdAlt));
72             q.execute();
73             rs = q.fetchResultSet();
74             while( rs.next() ) {
75                 TKQuery insert = TKDBManager.newQuery(TKDBPresContInsert.class);
76                 insert.setQueryParams("PRESENTATION_ID", presId);
77                 insert.setQueryParams("COMPONENT_TYPE", new Integer JavaDoc(rs.getInt("COMPONENT_TYPE")));
78                 insert.setQueryParams("INTEGRATION_TYPE", new Integer JavaDoc(rs.getInt("INTEGRATION_TYPE")));
79                 String JavaDoc name = rs.getString("INTEGRATION_NAME");
80                 insert.setQueryParams("INTEGRATION_NAME", name);
81                 insert.setQueryParams("INTEGRATION_SHORTNAME", rs.getString("INTEGRATION_SHORTNAME"));
82                 insert.setQueryParams("FORM_ID", new Integer JavaDoc(rs.getInt("FORM_ID")));
83                 insert.execute();
84             }
85             // 4. Alle Presentation Refrenzen kopieren
86
// erstmal getype Referenzen, die Eintraege in den
87
q = TKDBManager.newQuery(TKDBPresCompGetRef.class);
88             q.setQueryParams("PRESENTATION_ID", new Integer JavaDoc(presIdAlt));
89             
90             q.execute();
91             rs = q.fetchResultSet();
92             Integer JavaDoc insertID = null;
93             Integer JavaDoc markPresCompID = new Integer JavaDoc(-1); // merkt sich aktuelle ID zur Vermeidung von Mehrfacheinträgen ->alex
94
while( rs.next() ) {
95                 // hier achten auf 1 zu n Beziehung !!!
96
Integer JavaDoc neuCompID = new Integer JavaDoc(rs.getInt("PRESENTATION_COMPONENT_IDX"));
97                 
98                 TKQuery insert;
99                 if (neuCompID.intValue() == markPresCompID.intValue())
100                 {
101                     // nur Referenz einfuegen
102
insert = TKDBManager.newQuery(TKDBPresRefIns.class);
103                     insert.setQueryParams("PRESENTATION_COMPONENT_IDX", insertID);
104                 }
105                 else
106                 {
107                     insert = TKDBManager.newQuery(TKDBPresRefInsert.class);
108                     insert.setQueryParams("COMPONENT_TYPE", new Integer JavaDoc(rs.getInt("COMPONENT_TYPE")));
109                     insert.setQueryParams("INTEGRATION_TYPE", new Integer JavaDoc(rs.getInt("INTEGRATION_TYPE")));
110                     String JavaDoc name = rs.getString("INTEGRATION_NAME");
111                     insert.setQueryParams("INTEGRATION_NAME", name);
112                     insert.setQueryParams("INTEGRATION_SHORTNAME", rs.getString("INTEGRATION_SHORTNAME"));
113                 }
114                 insert.setQueryParams("PRESENTATION_ID", presId);
115                 insert.setQueryParams("SUB_PRESENTATION_ID", new Integer JavaDoc(rs.getInt("SUB_PRESENTATION_ID")));
116                 insert.execute();
117                 if (neuCompID.intValue() != markPresCompID.intValue())
118                 {
119                     ResultSet rs2 = insert.fetchResultSet();
120                     if (rs2.next())
121                         insertID = new Integer JavaDoc(rs2.getInt("PRESENTATION_COMPONENT_IDX"));
122                 }
123                 markPresCompID = neuCompID; // Merker umsetzen
124
}
125             
126             // jetzt freie Referenzen
127
q = TKDBManager.newQuery(TKDBPresCompGetFreeRef.class);
128             q.setQueryParams("PRESENTATION_ID", new Integer JavaDoc(presIdAlt));
129             
130             q.execute();
131             rs = q.fetchResultSet();
132             while( rs.next() ) {
133                 TKQuery insert = TKDBManager.newQuery(TKDBPresCompInsert.class);
134                 insert.setQueryParams("COMPONENT_TYPE", new Integer JavaDoc(rs.getInt("COMPONENT_TYPE")));
135                 insert.setQueryParams("INTEGRATION_TYPE", new Integer JavaDoc(rs.getInt("INTEGRATION_TYPE")));
136                 String JavaDoc name = rs.getString("INTEGRATION_NAME");
137                 insert.setQueryParams("INTEGRATION_NAME", name);
138                 insert.setQueryParams("INTEGRATION_SHORTNAME", rs.getString("INTEGRATION_SHORTNAME"));
139                 insert.setQueryParams("PRESENTATION_ID", presId);
140                 insert.execute();
141             }
142             
143             // und Frameset aufbauen !
144
TKHTMLTemplate frame = evt.getPrepHTMLTemplate( "f_pr.tmpl" );
145             HTMLUtils.fillFrameSet( frame, LEFT_FRAME_WIDTH_SMALL, "PR_SHOWLIST", "PR_EMPTY" );
146             WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(), frame, PRESENTATIONS);
147             evt.finishTemplate(frame);
148         }
149         catch (Throwable JavaDoc e)
150         {
151             // TO DO : Analyze Exception !
152
throw WebmanExceptionHandler.getException(e);
153         }
154     }
155     
156     public boolean isHandler(TKEvent evt)
157     {
158         return evt.getName().equalsIgnoreCase("PR_COPY_PRES") ;
159     }
160 }
161
Popular Tags