KickJava   Java API By Example, From Geeks To Geeks.

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


1 package de.webman.sitetree.eventhandler;
2
3
4 import java.util.*;
5 import java.sql.*;
6 import java.io.*;
7
8 import com.teamkonzept.web.*;
9 import com.teamkonzept.lib.*;
10 import com.teamkonzept.field.*;
11 import com.teamkonzept.field.db.*;
12 import com.teamkonzept.db.*;
13
14 import com.teamkonzept.webman.mainint.*;
15 import de.webman.generator.*;
16 import de.webman.content.eventhandler.CEUtils;
17 import com.teamkonzept.international.LanguageManager;
18
19
20 import com.teamkonzept.webman.*;
21 import com.teamkonzept.webman.db.*;
22 import com.teamkonzept.webman.mainint.db.*;
23 import com.teamkonzept.webman.mainint.db.queries.*;
24 import com.teamkonzept.webman.mainint.db.queries.sitetree.CheckDocumentDependency;
25 import com.teamkonzept.webman.mainint.db.queries.DocDependency;
26 import com.teamkonzept.webman.mainint.events.*;
27
28 import com.oroinc.text.regex.*;
29
30 /**
31  * Utility Methoden für
32  * SITE TREE (ST) Allgemeines
33  * @author $Author: uli $
34  * @version $Revision: 1.10 $
35 */

36 public class SiteTreeUtils implements ParameterTypes, DatabaseDefaults, UserCodes
37 {
38
39     /**
40         checkt beim Loeschen eines Dokuments/Verzeichnis, ob noch absolute Referenzen
41         auf das Dokument zeigen
42         @param shortName des Dokuments, falls null wird das Verzeichnis gecheckt
43     */

44     public static boolean checkReferences(Integer JavaDoc siteNodeId, String JavaDoc shortName, TKVector back) throws SQLException
45     {
46         TKQuery q;
47         if (shortName != null)
48         {
49             q= TKDBManager.newQuery(CheckDocumentDependency.class);
50             q.setQueryParams( "DOCUMENT_SHORTNAME", shortName);
51         }
52         else
53         {
54             q = TKDBManager.newQuery(DocDependency.class);
55         }
56         q.setQueryParams( "SITE_NODE_ID", siteNodeId);
57         q.execute();
58         ResultSet rs = q.fetchResultSet();
59         while (rs.next())
60         {
61             TKHashtable tmp = new TKHashtable();
62             Integer JavaDoc sID = new Integer JavaDoc(rs.getInt("SITE_NODE_ID"));
63             String JavaDoc path = getCurrentPath(sID);
64             String JavaDoc sName = rs.getString("DOCUMENT_SHORTNAME");
65             tmp.put("REF2", path + sName);
66             back.addElement(tmp);
67         }
68         if (back.size() == 0)
69         {
70             TKHashtable tmp = new TKHashtable();
71             tmp.put("REF2", LanguageManager.getText("sitestructure", "NOT_REFERENCED"));
72             back.addElement(tmp);
73             return false;
74         }
75         return true;
76     }
77
78     /** keepSTContext
79      *
80      * schleift Context durch; nicht durch t.set( params.getClass( PARAMETER ) ),
81      * da bei diesen field-Geschichten noch eine Menge anderer Parameter am
82      * Start sind...
83      *
84      * @param Template t
85      */

86     public static void keepSTContext( TKEvent evt, TemplateBasic t ) throws Throwable JavaDoc
87     {
88         t.set( "THE_SELECTION_TYPE", evt.getNotNullParameter( PARAMETER, "THE_SELECTION_TYPE" ) );
89         t.set( "THE_CONTENT_NODE_ID", evt.getNotNullParameter( PARAMETER, "THE_CONTENT_NODE_ID" ));
90         t.set( "SITE_NODE_ID", evt.getParameter( PARAMETER, "SITE_NODE_ID" ) );
91         t.set( "SITE_NODE_TYPE", evt.getParameter( PARAMETER, "SITE_NODE_TYPE" ) );
92         t.set( "FORM_ID", evt.getParameter( PARAMETER, "FORM_ID" ) );
93         t.set( "CONTENT_ID", evt.getNotNullParameter( PARAMETER, "CONTENT_ID" ));
94         t.set( "SITE_NODE_NAME", evt.getNotNullParameter( PARAMETER, "SITE_NODE_NAME" ) );
95         t.set( "SITE_NODE_SHORTNAME", evt.getNotNullParameter( PARAMETER, "SITE_NODE_SHORTNAME" ) );
96     }
97
98     /**
99      * Speichern einer content componenten zuordnung
100      *
101      *
102      *
103      * @param selData, nodeName
104      *
105      * selData: die SELECTION_DATA
106      * nodeName: der Name des Parameters, in dem die CONTENT_NODE_ID steht
107      * z.B. SINGLE_CONTENT_NODE_ID, oder NODE_ID, da Aufruf
108      * von verschiedenen Stellen (Templates) aus
109      */

110     public static void saveContentComponent( TKEvent evt, String JavaDoc selData, String JavaDoc nodeName ) throws Throwable JavaDoc
111     {
112         String JavaDoc sNodeId = evt.getParameter( PARAMETER, "SITE_NODE_ID" );
113         String JavaDoc sDocIdx = evt.getParameter( PARAMETER, "SITE_NODE_DOC_IDX" );
114         String JavaDoc sPresIdx = evt.getParameter( PARAMETER, "PRESENTATION_COMPONENT_IDX" );
115         String JavaDoc sNodeType = evt.getParameter( PARAMETER, "SITE_NODE_TYPE" );
116         String JavaDoc sIntType = evt.getParameter( PARAMETER, "INTEGRATION_TYPE" );
117
118         TKQuery q = TKDBManager.newQuery(TKDBDocContentPut.class);
119         q.setQueryParams( "SITE_NODE_ID", new Integer JavaDoc(sNodeId) );
120         q.setQueryParams( "SITE_NODE_DOC_IDX", new Integer JavaDoc(sDocIdx) );
121         q.setQueryParams( "PRESENTATION_COMPONENT_IDX", new Integer JavaDoc(sPresIdx) );
122
123         String JavaDoc sContNodeId;
124         String JavaDoc sSelType;
125         if( sNodeType.equals( SINGLE ) && sIntType.equals( SINGLE ) ) { // single node (SiteTree) und Single Integration
126
if( evt.getParameter( PARAMETER, "ATTACH_SEL" ).equals( "SC" ) ) { // Single Content Node ausgewaehlt
127
sContNodeId = evt.getParameter( PARAMETER, nodeName );
128                 sSelType = null;
129             }
130             else { // single sel aus contents zu einem group node (content tree)
131
sContNodeId = selData==null?evt.getParameter( PARAMETER, "THE_CONTENT_NODE_ID" ):evt.getParameter( PARAMETER, "NODE_ID" );
132                 sSelType = selData==null?null:evt.getParameter( PARAMETER, "SEL_TYPE" );
133             }
134             q.setQueryParams( "CONTENT_NODE_ID", new Integer JavaDoc( sContNodeId ) );
135             q.setQueryParams( "SELECTION_TYPE", sSelType );
136         }
137         else if( sNodeType.equals( GROUP ) && sIntType.equals( SINGLE ) ) { // group node (SiteTree) und Single Integration
138
if( evt.getParameter( PARAMETER, "ATTACH_SEL" ).equals( "PGC" ) ) { // Primary Group Content ausgewaehlt
139
q.setQueryParams( "CONTENT_NODE_ID", null );
140                 q.setQueryParams( "SELECTION_TYPE", null );
141             }
142             else {
143                 sContNodeId = evt.getParameter( PARAMETER, nodeName );
144                 q.setQueryParams( "CONTENT_NODE_ID", new Integer JavaDoc( sContNodeId ) );
145                 q.setQueryParams( "SELECTION_TYPE", null );
146             }
147         }
148         else { // group integration
149
sContNodeId = selData==null?evt.getParameter( PARAMETER, "THE_CONTENT_NODE_ID" ):evt.getParameter( PARAMETER, "NODE_ID" );
150             sSelType = selData==null?null:evt.getParameter( PARAMETER, "SEL_TYPE" );
151             q.setQueryParams( "CONTENT_NODE_ID", new Integer JavaDoc( sContNodeId ) );
152             q.setQueryParams( "SELECTION_TYPE", sSelType );
153         }
154         q.setQueryParams( "SELECTION_DATA", selData );
155         q.execute();
156         q.fetchResultSet();
157     }
158
159     /**
160      * Update einer content componenten zuordnung
161      *
162      *
163      *
164      * @param selData, nodeName
165      *
166      * selData: die SELECTION_DATA
167      * nodeName: der Name des Parameters, in dem die CONTENT_NODE_ID steht
168      * z.B. SINGLE_CONTENT_NODE_ID, oder NODE_ID, da Aufruf
169      * von verschiedenen Stellen (Templates) aus
170      */

171     public static void updateContentComponent(TKEvent evt, String JavaDoc selData, String JavaDoc nodeName ) throws Throwable JavaDoc
172     {
173         String JavaDoc sNodeId = evt.getParameter( PARAMETER, "SITE_NODE_ID" );
174         String JavaDoc sDocIdx = evt.getParameter( PARAMETER, "SITE_NODE_DOC_IDX" );
175         String JavaDoc sPresIdx = evt.getParameter( PARAMETER, "PRESENTATION_COMPONENT_IDX" );
176         String JavaDoc sNodeType = evt.getParameter( PARAMETER, "SITE_NODE_TYPE" );
177         String JavaDoc sIntType = evt.getParameter( PARAMETER, "INTEGRATION_TYPE" );
178
179         TKQuery q = TKDBManager.newQuery(TKDBDocContentUpdate.class);
180         q.setQueryParams( "SITE_NODE_ID", new Integer JavaDoc(sNodeId) );
181         q.setQueryParams( "SITE_NODE_DOC_IDX", new Integer JavaDoc(sDocIdx) );
182         q.setQueryParams( "PRESENTATION_COMPONENT_IDX", new Integer JavaDoc(sPresIdx) );
183
184         String JavaDoc sContNodeId;
185         String JavaDoc sSelType;
186         if( sNodeType.equals( SINGLE ) && sIntType.equals( SINGLE ) ) { // single node (SiteTree) und Single Integration
187
if( evt.getParameter( PARAMETER, "ATTACH_SEL" ).equals( "SC" ) ) { // Single Content Node ausgewaehlt
188
sContNodeId = evt.getParameter( PARAMETER, nodeName );
189                 sSelType = null;
190             }
191             else { // single sel aus contents zu einem group node (content tree)
192
sContNodeId = selData==null?evt.getParameter( PARAMETER, "THE_CONTENT_NODE_ID" ):evt.getParameter( PARAMETER, "NODE_ID" );
193                 sSelType = selData==null?null:evt.getParameter( PARAMETER, "SEL_TYPE" );
194             }
195             q.setQueryParams( "CONTENT_NODE_ID", new Integer JavaDoc( sContNodeId ) );
196             q.setQueryParams( "SELECTION_TYPE", sSelType );
197         }
198         else if( sNodeType.equals( GROUP ) && sIntType.equals( SINGLE ) ) { // group node (SiteTree) und Single Integration
199
if( evt.getParameter( PARAMETER, "ATTACH_SEL" ).equals( "PGC" ) ) { // Primary Group Content ausgewaehlt
200
q.setQueryParams( "CONTENT_NODE_ID", null );
201                 q.setQueryParams( "SELECTION_TYPE", null );
202             }
203             else if( evt.getParameter( PARAMETER, "ATTACH_SEL" ).equals( "GC" ) ) { // Group Content ausgewaehlt
204
sContNodeId = evt.getParameter( PARAMETER, nodeName );
205                 sSelType = selData==null?null:evt.getParameter( PARAMETER, "SEL_TYPE" );
206                 q.setQueryParams( "CONTENT_NODE_ID", new Integer JavaDoc( sContNodeId ) );
207                 q.setQueryParams( "SELECTION_TYPE", sSelType );
208             }
209             else { // Single Content
210
sContNodeId = evt.getParameter( PARAMETER, nodeName );
211                 q.setQueryParams( "CONTENT_NODE_ID", new Integer JavaDoc( sContNodeId ) );
212                 q.setQueryParams( "SELECTION_TYPE", null );
213             }
214         }
215         else { // group integration
216
sContNodeId = selData==null?evt.getParameter( PARAMETER, "THE_CONTENT_NODE_ID" ):evt.getParameter( PARAMETER, "NODE_ID" );
217             sSelType = selData==null?null:evt.getParameter( PARAMETER, "SEL_TYPE" );
218             q.setQueryParams( "CONTENT_NODE_ID", new Integer JavaDoc( sContNodeId ) );
219             q.setQueryParams( "SELECTION_TYPE", sSelType );
220         }
221         q.setQueryParams( "SELECTION_DATA", selData );
222         q.execute();
223         q.fetchResultSet();
224     }
225
226     /**
227      * Speichern eines SiteTree node
228      *
229      *
230      *
231      * @param selData, selType, pGCNode
232      *
233      * selData: die SELECTION_DATA
234      * selType: der SELECTION_TYPE
235      * pGCNode: der primary group content node (nur bei group nodes (SiteTree))
236      */

237     public static String JavaDoc saveSiteTreeNode( TKEvent evt, String JavaDoc selData, String JavaDoc selType, int pGCNode ) throws Throwable JavaDoc
238     {
239         String JavaDoc sNodeName = evt.getParameter( PARAMETER, "SITE_NODE_NAME" );
240         String JavaDoc sNodeShortName = evt.getParameter( PARAMETER, "SITE_NODE_SHORTNAME" );
241         sNodeShortName = CEUtils.checkFileName(sNodeShortName);
242         String JavaDoc nodeType = evt.getParameter( PARAMETER, "SITE_NODE_TYPE" );
243         String JavaDoc parId = evt.getParameter( PARAMETER, "SITE_NODE_ID" );
244
245         TKQuery q = TKDBManager.newQuery(TKDBSiteTreeInsertNode.class);
246         q.setQueryParams( "NODE_ID", new Integer JavaDoc(parId) );
247         q.setQueryParams( "SITE_NODE_TYPE", new Integer JavaDoc(nodeType) );
248         q.setQueryParams( "SITE_NODE_NAME", sNodeName );
249         q.setQueryParams( "SITE_NODE_SHORTNAME", sNodeShortName );
250         q.setQueryParams( "PG_CONTENT_NODE", pGCNode==-1?null:new Integer JavaDoc(pGCNode) );
251         q.setQueryParams( "SELECTION_TYPE", selType );
252         q.setQueryParams( "SELECTION_DATA", selData );
253         q.execute();
254         ResultSet rs = q.fetchResultSet();
255         String JavaDoc nodeID = null;
256         if( rs.next() ) {
257             nodeID = Integer.toString( rs.getInt("SITE_NODE_ID") );
258         }
259         return nodeID;
260     }
261
262     /**
263      * Update eines SiteTree node
264      *
265      *
266      *
267      * @param selData, selType, pGCNode
268      *
269      * selData: die SELECTION_DATA
270      * selType: der SELECTION_TYPE
271      * pGCNode: der primary group content node (nur bei group nodes (SiteTree))
272      */

273     public static void updateSiteTreeNode( TKEvent evt, String JavaDoc selData, String JavaDoc selType, int pGCNode ) throws Throwable JavaDoc
274     {
275         String JavaDoc sNodeName = evt.getParameter( PARAMETER, "SITE_NODE_NAME" );
276         String JavaDoc sNodeShortName = evt.getParameter( PARAMETER, "SITE_NODE_SHORTNAME" );
277         String JavaDoc nodeType = evt.getParameter( PARAMETER, "SITE_NODE_TYPE" );
278         String JavaDoc nodeId = evt.getParameter( PARAMETER, "SITE_NODE_ID" );
279         sNodeShortName = CEUtils.checkFileName(sNodeShortName);
280
281         TKQuery q = TKDBManager.newQuery(TKDBSiteTreeUpdateNode.class);
282         q.setQueryParams( "SITE_NODE_ID", new Integer JavaDoc(nodeId) );
283         q.setQueryParams( "SITE_NODE_TYPE", new Integer JavaDoc(nodeType) );
284         q.setQueryParams( "SITE_NODE_NAME", sNodeName );
285         q.setQueryParams( "SITE_NODE_SHORTNAME", sNodeShortName );
286         q.setQueryParams( "PG_CONTENT_NODE", pGCNode==-1?null:new Integer JavaDoc(pGCNode) );
287         q.setQueryParams( "SELECTION_TYPE", selType );
288         q.setQueryParams( "SELECTION_DATA", selData );
289         q.execute();
290         q.fetchResultSet();
291     }
292
293     /**
294      * ist der String destName als DOCUMENT_SHORTNAME nicht im ResultSet ?
295      *
296      * @param
297      */

298     public static boolean isNotInRs( TKDBResult rs, String JavaDoc destName ) throws Throwable JavaDoc
299     {
300         int curr = 0;
301         TKDBResultRow row;
302         boolean res = true;
303         String JavaDoc checkName;
304         while( (row = (TKDBResultRow) rs.get( curr++ ))!=null ) {
305             checkName = (String JavaDoc) row.getColumn( "DOCUMENT_SHORTNAME" );
306             res = checkName.equals( destName )==true?false:true;
307             if( !res ) return res;
308         }
309         return res;
310     }
311
312     /**
313      * ist der String checkId als CONTENT_NODE_ID im ResultSet ?
314      *
315      * @param
316      */

317     public static boolean isGroupNode( String JavaDoc checkId, TKDBResult rs ) throws Throwable JavaDoc
318     {
319         int curr = 0;
320         TKDBResultRow row;
321         boolean res = false;
322         String JavaDoc rsId;
323         while( (row = (TKDBResultRow) rs.get( curr++ ))!=null ) {
324             rsId = (String JavaDoc) row.getColumn( "CONTENT_NODE_ID" );
325             res = rsId.equals( checkId );
326             if( res ) return res;
327         }
328         return res;
329     }
330
331     /**
332      * Maske fuellen fuer neuen Node
333      * (entweder durch click auf new,
334      * bei cancel einer selection verfeinerung,
335      * oder bei edit eines node)
336      *
337      * @param
338      */

339     public static void prepareNodeParams( TKHTMLTemplate t, String JavaDoc nodeType ) throws Throwable JavaDoc
340     {
341         if( nodeType.equals( GROUP ) ) {
342             TKQuery q = TKWebmanDBManager.newQuery(TKDBContentTreeGetTypeOrderByName.class);
343             q.setQueryParams( "CONTENT_NODE_TYPE", GROUP_INTEGER ); // alle group contents
344
q.execute();
345             ResultSet rs = q.fetchResultSet();
346
347             TKDBTemplate.prepareListTemplate( rs, t, "ST_PGC_LIST" );
348
349             q = TKWebmanDBManager.newQuery(TKDBContentSelClassGet.class);
350             q.setQueryParams( "RESULT_TYPE", GROUP_INTEGER );
351             q.execute();
352             rs = q.fetchResultSet();
353
354             TKDBTemplate.prepareListTemplate( rs, t, "ST_PGCST_LIST" );
355         }
356     }
357
358     /**
359      * stellt den path ab der documentroot bis zum aktuellen SITE_NODE (SITE_NODE_ID)
360      * beginnend mit der root, sich zusammensetzend aus den SITE_NODE_SHORTNAMEs
361      * zusammen. ROOT wird hier ignoriert !!!!!
362      *
363      * @param siteNodeId ID des Endknotens
364      * @return aktueller Pfad
365      * @throws SQLException Datenbankfehler
366      */

367     public static String JavaDoc getCurrentPath (Integer JavaDoc siteNodeId)
368         throws SQLException
369     {
370         TKQuery q = TKDBManager.newQuery(TKDBSiteTreeGetParents.class);
371         q.setQueryParams( "SITE_NODE_ID", siteNodeId );
372         q.execute();
373         ResultSet rs = q.fetchResultSet();
374         String JavaDoc res = "/";
375         if (!rs.next()) // Root ignorieren und SQL Fehler vorbeugen
376
return res;
377         while( rs.next() ) {
378             res += rs.getString( "SITE_NODE_SHORTNAME" )+"/";
379         }
380         return res;
381     }
382
383     /**
384      * Returns the full path of the specified site node.
385      *
386      * @param id the id of the site node.
387      * @return the full path of the specified site node.
388      * @throws TKException if any error occurred during
389      * site node path construction.
390      */

391     public static String JavaDoc getParentPath (Integer JavaDoc id)
392         throws TKException
393     {
394         try
395         {
396             TKQuery query = TKDBManager.newQuery(TKDBSiteTreeGetParents.class);
397             query.setQueryParams("SITE_NODE_ID", id);
398             query.execute();
399
400             ResultSet result = query.fetchResultSet();
401             StringBuffer JavaDoc path = new StringBuffer JavaDoc();
402
403             if (result.next())
404             {
405                 while (result.next())
406                 {
407                     path.append("/")
408                         .append(result.getString("SITE_NODE_NAME"));
409                 }
410             }
411
412             if (path.length() == 0)
413             {
414                 path.append("/");
415             }
416
417             return path.toString();
418         }
419         catch (Exception JavaDoc e)
420         {
421             throw WebmanExceptionHandler.getException(e);
422         }
423     }
424
425     /**
426      * Vorbereiten der verfeinerten Content-Selection:
427      * holen der selection_data, falls vorhanden, vorsetzen dieser in der sel class
428      *
429      *
430      * @param
431      */

432     public static void prepareRefineSelection(TKEvent evt, TKHTMLTemplate t ) throws Throwable JavaDoc
433     {
434         String JavaDoc selId = evt.getNotNullParameter(PARAMETER,"SELECTION_ID");
435         String JavaDoc selData = "";
436         if( !selId.equals( "" ) ) {
437             TKQuery q = TKDBManager.newQuery(TKDBContentSelectionGet.class);
438             q.setQueryParams( "SELECTION_ID", new Integer JavaDoc( selId ) );
439             q.execute();
440             ResultSet rs = q.fetchResultSet();
441             if( rs.next() ) {
442                 selData = rs.getString( "SELECTION_DATA" );
443             }
444         }
445         String JavaDoc selectedContent = evt.getParameter(PARAMETER,"THE_CONTENT_NODE_ID");
446         if (selectedContent == null)
447             throw new TKUserException("Kein Objekt gewählt", NO_OBJECT, USER_SEVERITY, true, null);
448         if(selData!=null && !selData.equals( "" ) ) {
449             TKWMContentSelectorReg.edit(t,evt.getParameter(PARAMETER,"THE_SELECTION_TYPE"),Integer.parseInt(selectedContent),selData);
450         }
451         else {
452             TKWMContentSelectorReg.edit(t,evt.getParameter(PARAMETER,"THE_SELECTION_TYPE"),Integer.parseInt(selectedContent));
453         }
454     }
455
456
457 }
458
Popular Tags