KickJava   Java API By Example, From Geeks To Geeks.

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


1 package de.webman.documenttype.eventhandler;
2
3 import com.teamkonzept.web.*;
4 import com.teamkonzept.lib.*;
5 import com.teamkonzept.field.*;
6 import com.teamkonzept.field.db.*;
7 import com.teamkonzept.db.*;
8
9 import com.teamkonzept.webman.mainint.*;
10 import com.teamkonzept.publishing.markups.*;
11
12
13 import com.teamkonzept.webman.*;
14 import com.teamkonzept.field.TKUploadField;
15 import com.teamkonzept.webman.db.*;
16 import com.teamkonzept.webman.mainint.db.*;
17 import com.teamkonzept.webman.mainint.events.*;
18
19 import com.teamkonzept.webman.mainint.db.queries.*;
20 import com.teamkonzept.webman.mainint.db.queries.presentation.CheckPresentationDependency;
21 import com.teamkonzept.international.LanguageManager;
22
23 import de.webman.sitetree.eventhandler.SiteTreeUtils;
24 import java.sql.*;
25
26 /**
27  * @author $Author: uli $
28  * @version $Revision: 1.7 $
29 */

30 public class DTUtils implements ParameterTypes, DatabaseDefaults, UserCodes
31 {
32
33     /**
34         liefert Vector der Abhaengigkeiten zurueck
35         Welche Documente basieren auf dem Documenttyp ?
36     */

37     public static TKVector getDependencies(Integer JavaDoc presId) throws SQLException
38     {
39         // Checken, ob das Template noch in Documenttypen benutzt wird
40
TKQuery q = TKDBManager.newQuery(CheckPresentationDependency.class);
41         q.setQueryParams( "PRESENTATION_ID", presId);
42         q.execute();
43         ResultSet rs = q.fetchResultSet();
44         TKVector references = new TKVector();
45         if (rs.next())
46         {
47             do
48             {
49                 TKHashtable temp = new TKHashtable();
50                 String JavaDoc docName = rs.getString("DOCUMENT_NAME");
51                 Integer JavaDoc siteNodeId = new Integer JavaDoc(rs.getInt("SITE_NODE_ID"));
52                 String JavaDoc path = SiteTreeUtils.getCurrentPath(siteNodeId);
53
54                 temp.put("REF2", path + docName);
55                 references.addElement(temp);
56             }
57             while (rs.next());
58         }
59         return references;
60     }
61
62     /**
63         changes the shortName
64         removes non valid characters
65         changes to Uppercase
66         @return the changed Shortname
67     */

68     public static String JavaDoc changeShortName(String JavaDoc shortName) throws TKException
69     {
70         if (shortName == null || shortName.equals(""))
71             throw new TKUserException("Non valid name", INPUT_CANNOT_BE_EMPTY, USER_SEVERITY, false, null);
72         String JavaDoc name = TKUploadField.toFilename(shortName);
73         return name.toUpperCase();
74     }
75
76     /**
77      * insertPresCont
78      *
79      * Insert eines Eintrages in PRESENTATION_CONTENT
80      *
81      * @param implizit ueber params
82      */

83     public static void insertPresCont( TKEvent evt, String JavaDoc id ) throws Throwable JavaDoc
84     {
85         TKQuery q = TKDBManager.newQuery(TKDBPresContIns.class);
86         q.setQueryParams( "PRESENTATION_ID", new Integer JavaDoc( evt.getParameter( PARAMETER, "PRESENTATION_ID" ) ) );
87         q.setQueryParams( "FORM_ID", new Integer JavaDoc( id ) );
88         q.setQueryParams( "PRESENTATION_COMPONENT_IDX", new Integer JavaDoc( evt.getParameter( PARAMETER, "PRESENTATION_COMPONENT_IDX" ) ) );
89         q.execute();
90         q.fetchResultSet();
91     }
92
93     /**
94      * updatePresComp
95      *
96      * Update eines Eintrages in PRESENTATION_COMPONENT
97      *
98      * @param implizit ueber params
99      */

100     public static void updatePresComp(TKEvent evt) throws SQLException, TKException
101     {
102         TKQuery q = TKDBManager.newQuery(TKDBPresCompUpdate.class);
103         q.setQueryParams( "PRESENTATION_ID", new Integer JavaDoc( evt.getParameter( PARAMETER, "PRESENTATION_ID" ) ) );
104         q.setQueryParams( "PRESENTATION_COMPONENT_IDX", new Integer JavaDoc( evt.getParameter( PARAMETER, "PRESENTATION_COMPONENT_IDX" ) ) );
105         q.setQueryParams( "COMPONENT_TYPE", new Integer JavaDoc( evt.getParameter( PARAMETER, "COMPONENT_TYPE" ) ) );
106         q.setQueryParams( "INTEGRATION_TYPE", new Integer JavaDoc( evt.getParameter( PARAMETER, "INTEGRATION_TYPE" ) ) );
107         q.setQueryParams( "INTEGRATION_NAME", evt.getParameter( PARAMETER, "INTEGRATION_NAME" ) );
108         q.setQueryParams( "INTEGRATION_SHORTNAME", changeShortName(evt.getParameter( PARAMETER, "INTEGRATION_SHORTNAME" )) );
109         q.execute();
110         q.fetchResultSet();
111     }
112
113     /**
114      * updatePresCont
115      *
116      * Update eines Eintrages in PRESENTATION_CONTENT
117      *
118      * @param implizit ueber params
119      */

120     public static void updatePresCont( TKEvent evt, String JavaDoc id ) throws Throwable JavaDoc
121     {
122         TKQuery q = TKDBManager.newQuery(TKDBPresContUpdate.class);
123         q.setQueryParams( "PRESENTATION_ID", new Integer JavaDoc( evt.getParameter( PARAMETER, "PRESENTATION_ID" ) ) );
124         q.setQueryParams( "FORM_ID", new Integer JavaDoc( id ) );
125         q.setQueryParams( "PRESENTATION_COMPONENT_IDX", new Integer JavaDoc( evt.getParameter( PARAMETER, "PRESENTATION_COMPONENT_IDX" ) ) );
126         q.execute();
127         q.fetchResultSet();
128     }
129
130     /**
131      * updatePresRef
132      *
133      * Update eines/mehrerer Eintrages/Eintraege in PRESENTATION_REFERENCE
134      *
135      * @param implizit ueber params
136      */

137     public static void updatePresRef(TKEvent evt) throws Throwable JavaDoc
138     {
139         String JavaDoc presId = evt.getParameter( PARAMETER, "PRESENTATION_ID" );
140         String JavaDoc presCompIdx = evt.getParameter( PARAMETER, "PRESENTATION_COMPONENT_IDX" );
141         String JavaDoc id;
142         TKVector oldVec = new TKVector();
143
144         // loesche alle, die nicht mehr am start sind...
145
if( evt.getParams().hasMultiple( PARAMETER, "OLD_SUB_PRESENTATION_ID" ) ) {
146             oldVec = evt.getParams().getVector( PARAMETER, "OLD_SUB_PRESENTATION_ID" );
147             int size = oldVec.size();
148             for( int i = 0; i<size ; i++ ) {
149                 id = (String JavaDoc) oldVec.get( i );
150                 if( id!=null && isNotInNewSelection( evt, id ) ) {
151                     deleteThisOne( presId, presCompIdx, id );
152                 }
153             }
154         }
155         else {
156             id = evt.getParameter( PARAMETER, "OLD_SUB_PRESENTATION_ID" );
157             if( id!=null && isNotInNewSelection(evt, id ) ) {
158                 deleteThisOne( presId, presCompIdx, id );
159             }
160         }
161
162         // trage alle ein, die neu dazugekommen sind
163
if( evt.getParams().hasMultiple( PARAMETER, "SUB_PRESENTATION_ID" ) ) {
164             TKVector newVec = evt.getParams().getVector( PARAMETER, "SUB_PRESENTATION_ID" );
165             int size = newVec.size();
166             for( int i = 0; i<size ; i++ ) {
167                 id = (String JavaDoc) newVec.get( i );
168                 if( id!=null && isNotInOldSelection( evt, id, oldVec ) ) {
169                     insertThisOne( presId, presCompIdx, id );
170                 }
171             }
172         }
173         else {
174             id = evt.getParameter( PARAMETER, "SUB_PRESENTATION_ID" );
175             if( id!=null && isNotInOldSelection( evt, id, oldVec ) ) {
176                 insertThisOne( presId, presCompIdx, id );
177             }
178         }
179     }
180
181     /**
182      * savePresRef
183      *
184      * Insert eines/mehrerer Eintrages/Eintraege in PRESENTATION_REFERENCE
185      *
186      * @param implizit ueber params
187      */

188     public static void savePresRef(TKEvent evt) throws Throwable JavaDoc
189     {
190         String JavaDoc presId = evt.getParameter( PARAMETER, "PRESENTATION_ID" );
191         String JavaDoc compType = evt.getParameter( PARAMETER, "COMPONENT_TYPE" );
192         String JavaDoc intType = evt.getParameter( PARAMETER, "INTEGRATION_TYPE" );
193         String JavaDoc intName = evt.getNotNullParameter( PARAMETER, "INTEGRATION_NAME" ).trim();
194         String JavaDoc intSName = changeShortName(evt.getNotNullParameter( PARAMETER, "INTEGRATION_SHORTNAME" ));
195
196         TKQuery q;
197         ResultSet rs;
198         if( evt.getParams().hasMultiple( PARAMETER, "SUB_PRESENTATION_ID" ) ) {
199             TKVector newVec = evt.getParams().getVector( PARAMETER, "SUB_PRESENTATION_ID" );
200             int size = newVec.size();
201             // das erste Element wird ueber diese query eingetragen, alle weiteren unten mit extra query
202
q = TKDBManager.newQuery(TKDBPresRefInsert.class);
203             q.setQueryParams( "PRESENTATION_ID", new Integer JavaDoc( presId ) );
204             q.setQueryParams( "SUB_PRESENTATION_ID", new Integer JavaDoc( evt.getParams().get( PARAMETER, "SUB_PRESENTATION_ID", 0 ) ) );
205             q.setQueryParams( "COMPONENT_TYPE", new Integer JavaDoc( compType ) );
206             q.setQueryParams( "INTEGRATION_TYPE", new Integer JavaDoc( intType ) );
207             q.setQueryParams( "INTEGRATION_NAME", intName );
208             q.setQueryParams( "INTEGRATION_SHORTNAME", intSName );
209             q.execute();
210             rs = q.fetchResultSet();
211             if( rs.next() ) { // hier den PRESENTATION_COMPONENT_IDX holen
212
String JavaDoc presCompIdx = Integer.toString( rs.getInt( "PRESENTATION_COMPONENT_IDX" ) );
213                 String JavaDoc id;
214                 for( int i = 1; i<size ; i++ ) { // hier gehts mit dem 2. Element weiter
215
id = (String JavaDoc) newVec.get( i );
216                     insertThisOne( presId, presCompIdx, id );
217                 }
218             }
219         }
220         else {
221             q = TKDBManager.newQuery(TKDBPresRefInsert.class);
222             q.setQueryParams( "PRESENTATION_ID", new Integer JavaDoc( presId ) );
223             q.setQueryParams( "SUB_PRESENTATION_ID", new Integer JavaDoc( evt.getParameter( PARAMETER, "SUB_PRESENTATION_ID" ) ) );
224             q.setQueryParams( "COMPONENT_TYPE", new Integer JavaDoc( compType ) );
225             q.setQueryParams( "INTEGRATION_TYPE", new Integer JavaDoc( intType ) );
226             q.setQueryParams( "INTEGRATION_NAME", intName );
227             q.setQueryParams( "INTEGRATION_SHORTNAME", intSName );
228             q.execute();
229             rs = q.fetchResultSet();
230         }
231     }
232
233     /**
234      * isNotInNewSelection
235      *
236      * ueberprueft, ob id in SUB_PRESENTATION_ID vorhanden ist
237      *
238      * @param
239      */

240     public static boolean isNotInNewSelection(TKEvent evt, String JavaDoc id ) throws Throwable JavaDoc
241     {
242         boolean res = true;
243         String JavaDoc newId;
244         if( evt.getParams().hasMultiple( PARAMETER, "SUB_PRESENTATION_ID" ) ) {
245             TKVector vec = evt.getParams().getVector( PARAMETER, "SUB_PRESENTATION_ID" );
246             if( vec.contains( id ) ) {
247                 return false;
248             }
249         }
250         else {
251             newId = evt.getNotNullParameter( PARAMETER, "SUB_PRESENTATION_ID" );
252             if( newId.equals( id ) ) {
253                 return false;
254             }
255         }
256         return res;
257     }
258
259     /**
260      * isNotInOldSelection
261      *
262      * ueberprueft, ob id im vector victor oder im param OLD_SUB_PRESENTATION_ID vorhanden ist
263      *
264      * @param
265      */

266     public static boolean isNotInOldSelection( TKEvent evt, String JavaDoc id, TKVector victor ) throws Throwable JavaDoc
267     {
268         boolean res = true;
269         if( (victor != null) && (victor.size() > 0) ) {
270             if( victor.contains( id ) ) {
271                 return false;
272             }
273         }
274         else {
275             String JavaDoc oldId = evt.getNotNullParameter( PARAMETER, "OLD_SUB_PRESENTATION_ID" );
276             if( oldId.equals( id ) ) {
277                 return false;
278             }
279         }
280         return res;
281     }
282
283     /**
284      * deleteThisOne
285      *
286      * Loescht einen Eintrag aus PRESENTATION_REFERENCE
287      *
288      * @param
289      */

290     public static void deleteThisOne( String JavaDoc presId, String JavaDoc presCompIdx, String JavaDoc id ) throws Throwable JavaDoc
291     {
292         //log.println("---- delete ----> id = "+id+" (presId: "+presId+", compIdx: "+presCompIdx+")" );
293
TKQuery q = TKDBManager.newQuery(TKDBPresRefDelete.class);
294         q.setQueryParams( "PRESENTATION_ID", new Integer JavaDoc( presId ) );
295         q.setQueryParams( "PRESENTATION_COMPONENT_IDX", new Integer JavaDoc( presCompIdx ) );
296         q.setQueryParams( "SUB_PRESENTATION_ID", new Integer JavaDoc( id ) );
297         q.execute();
298         q.fetchResultSet();
299     }
300
301     /**
302      * insertThisOne
303      *
304      * Fuegt einen Eintrag in PRESENTATION_REFERENCE hinzu
305      *
306      * @param
307      */

308     public static void insertThisOne( String JavaDoc presId, String JavaDoc presCompIdx, String JavaDoc id ) throws Throwable JavaDoc
309     {
310         //log.println("---- insert ---> id = "+id+" (presId: "+presId+", compIdx: "+presCompIdx+")" );
311
TKQuery q = TKDBManager.newQuery(TKDBPresRefIns.class);
312         q.setQueryParams( "PRESENTATION_ID", new Integer JavaDoc( presId ) );
313         q.setQueryParams( "SUB_PRESENTATION_ID", new Integer JavaDoc( id ) );
314         q.setQueryParams( "PRESENTATION_COMPONENT_IDX", new Integer JavaDoc( presCompIdx ) );
315         q.execute();
316         q.fetchResultSet();
317     }
318
319     /**
320      * setTemplateList
321      *
322      * Setzt Liste aller Templates ins Template
323      *
324      * @param
325      */

326     public static void setTemplateList( TKHTMLTemplate t ) throws Throwable JavaDoc
327     {
328         TKQuery q = TKDBManager.newQuery(TKDBTmplGetAll.class);
329         q.execute();
330         ResultSet rs = q.fetchResultSet();
331         TKDBTemplate.prepareListTemplate( rs, t, "PR_TEMPLATE_LIST" );
332     }
333
334     /**
335      * getPresName
336      *
337      * Liefert Name einer Presentation zu einer Presentation_id
338      *
339      * @param String id
340      */

341     public static String JavaDoc getPresName( String JavaDoc id ) throws Throwable JavaDoc
342     {
343         String JavaDoc name = "";
344         if( !id.equals( "" ) ) {
345             TKQuery q = TKDBManager.newQuery(TKDBPresentationGet.class);
346             q.execute();
347             ResultSet rs = q.fetchResultSet();
348             int iid = Integer.parseInt( id );
349             while( rs.next() ) {
350                 if( rs.getInt( "PRESENTATION_ID" ) == iid ) {
351                     return rs.getString( "PRESENTATION_NAME" );
352                 }
353             }
354         }
355         return name;
356     }
357
358     /**
359      * prepareSubPresSelection
360      *
361      * liefert die sub_presentation Auswahl zu einer typedReference Component
362      *
363      * @param
364      */

365     public static ResultSet prepareSubPresSelection(TKEvent evt) throws Throwable JavaDoc
366     {
367         TKQuery q = TKDBManager.newQuery(TKDBPresRefSubGet.class);
368         q.setQueryParams( "PRESENTATION_ID", new Integer JavaDoc( evt.getParameter( PARAMETER, "PRESENTATION_ID" ) ) );
369         q.setQueryParams( "PRESENTATION_COMPONENT_IDX", new Integer JavaDoc( evt.getParameter( PARAMETER, "PRESENTATION_COMPONENT_IDX" ) ) );
370         q.execute();
371         ResultSet rs = q.fetchResultSet();
372         return rs;
373     }
374
375     /**
376      * savePresCont
377      *
378      * insert eines datensatzes zu einer presentation component freie Referenz
379      *
380      * @param heaps
381      */

382     public static void savePresComp( String JavaDoc presId, String JavaDoc compType, String JavaDoc intType, String JavaDoc intName, String JavaDoc intSName ) throws Throwable JavaDoc
383     {
384         TKQuery q = TKDBManager.newQuery(TKDBPresCompInsert.class);
385         q.setQueryParams( "PRESENTATION_ID", new Integer JavaDoc( presId ) );
386         q.setQueryParams( "COMPONENT_TYPE", new Integer JavaDoc( compType ) );
387         q.setQueryParams( "INTEGRATION_TYPE", new Integer JavaDoc( intType ) );
388         q.setQueryParams( "INTEGRATION_NAME", intName );
389         String JavaDoc shortName = changeShortName(intSName);
390         q.setQueryParams( "INTEGRATION_SHORTNAME", shortName );
391         q.execute();
392         q.fetchResultSet();
393     }
394
395     /**
396      * savePresCont
397      *
398      * insert eines datensatzes zu einer presentation component (content, structure typed Ref.)
399      *
400      * @param heaps
401      */

402     public static void savePresComp( Class JavaDoc query, String JavaDoc presId, String JavaDoc id, String JavaDoc whichId, String JavaDoc compType, String JavaDoc intType, String JavaDoc intName, String JavaDoc intSName ) throws Throwable JavaDoc
403     {
404         TKQuery q = TKDBManager.newQuery( query );
405         q.setQueryParams( "PRESENTATION_ID", new Integer JavaDoc( presId ) );
406         q.setQueryParams( whichId, new Integer JavaDoc( id ) );
407         q.setQueryParams( "COMPONENT_TYPE", new Integer JavaDoc( compType ) );
408         q.setQueryParams( "INTEGRATION_TYPE", new Integer JavaDoc( intType ) );
409         q.setQueryParams( "INTEGRATION_NAME", intName );
410         String JavaDoc shortName = changeShortName(intSName);
411         q.setQueryParams( "INTEGRATION_SHORTNAME", shortName );
412         q.execute();
413         q.fetchResultSet();
414     }
415
416     /**
417      * subSelection
418      *
419      * weitere Auswahl ( form oder presentation ) erforderlich: liefert verbereitetes template dazu zurueck
420      * @param evt aktuellerEvent
421      * @param query auszzfuehrende Query
422      * @param hint wollte der User eine Gruppe anlegen (unzulaessig)?
423      */

424     public static void subSelection(TKEvent evt, Class JavaDoc query, boolean hint ) throws Throwable JavaDoc
425     {
426         TKHTMLTemplate t = evt.getPrepHTMLTemplate( "pr_compSelect.tmpl" );
427         TKQuery q = TKDBManager.newQuery( query);
428         q.execute();
429         ResultSet rs = q.fetchResultSet();
430         TKDBTemplate.prepareListTemplate( rs, t, "PR_SELECTION_LIST" );
431         t.set( evt.getParams().getClass( PARAMETER ) );
432         t.set( "THE_FORM_ID", evt.getNotNullParameter( PARAMETER, "FORM_ID" ) );
433         WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(), t, ContextConstants.PRESENTATIONS);
434         if (hint)
435         {
436             String JavaDoc messageText = LanguageManager.getText("documenttype","GROUP_HINT") ;
437             t.set("GROUP_HINT", messageText);
438         }
439         evt.finishTemplate(t);
440     }
441
442     /**
443      * getSelectedPres
444      *
445      * liefert vector mit allen ausgewaehlten sub_presentation_ids zu einer
446      * typed reference component
447      *
448      * @param String query
449      */

450     public static TKVector getSelectedPres(TKEvent evt) throws Throwable JavaDoc
451     {
452         ResultSet rs = prepareSubPresSelection(evt);
453         TKVector vec = new TKVector();
454         String JavaDoc id;
455         int i = 0;
456         while( rs.next() ) {
457             id = Integer.toString( rs.getInt( "PRESENTATION_ID" ) );
458             vec.put( i++, new String JavaDoc( id ) );
459         }
460         return vec;
461     }
462
463     /**
464      * removeOldContext
465      *
466      * wurde der COMPONENT_TYPE geaendert und soll pespeichert werden, dann ist es
467      * u.U. noetig, die zum alten COMPONENT_TYPE gespeicherten Daten zu loeschen:
468      * (!!! Aufruf nur, wenn der neue COMPONENT_TYPE != dem alten COMPONENT_TYPE ist!!!)
469      *
470      * alter Comp.Type loeschen
471      * -----------------------------
472      * free Ref. (1) --
473      * typed Ref. (2) alle Eintraege in PRESENTATION_REFERENCE
474      * Content (3) Eintrag in PRESENTATION_CONTENT
475      * Structure (4) Eintrag in PRESENTATION_CONTENT
476      *
477      * @param String query
478      */

479     public static void removeOldContext( TKEvent evt, String JavaDoc oldComp ) throws Throwable JavaDoc
480     {
481         if( oldComp.equals( REFERENCE_TYPED ) ) {
482             TKQuery q = TKDBManager.newQuery(TKDBPresRefDelAll.class);
483             q.setQueryParams( "PRESENTATION_ID", new Integer JavaDoc( evt.getParameter( PARAMETER, "PRESENTATION_ID" ) ) );
484             q.setQueryParams( "PRESENTATION_COMPONENT_IDX", new Integer JavaDoc( evt.getParameter( PARAMETER, "PRESENTATION_COMPONENT_IDX" ) ) );
485             q.execute();
486             q.fetchResultSet();
487         }
488         else if( oldComp.equals( CONTENT ) || oldComp.equals( STRUCTURE ) ) {
489             TKQuery q = TKDBManager.newQuery(TKDBPresContDelete.class);
490             q.setQueryParams( "PRESENTATION_ID", new Integer JavaDoc( evt.getParameter( PARAMETER, "PRESENTATION_ID" ) ) );
491             q.setQueryParams( "PRESENTATION_COMPONENT_IDX", new Integer JavaDoc( evt.getParameter( PARAMETER, "PRESENTATION_COMPONENT_IDX" ) ) );
492             q.execute();
493             q.fetchResultSet();
494         }
495     }
496
497 }
498
Popular Tags