KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > duplication > eventhandler > DUMultiDuplicateHandler


1 package de.webman.duplication.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.db.queries.duplication.*;
12 import com.teamkonzept.webman.mainint.events.*;
13 import com.teamkonzept.lib.*;
14 import com.teamkonzept.db.*;
15
16 import java.sql.*;
17 import java.io.*;
18 import org.apache.log4j.Category;
19
20 /**
21 *
22 *
23 *
24  * @author $Author: ralf $
25  * @version $Revision: 1.4 $
26 */

27 public class DUMultiDuplicateHandler extends DefaultEventHandler implements ParameterTypes, FrameConstants, DatabaseDefaults
28 {
29     /**
30      * the log category
31      */

32     private static Category CAT = Category.getInstance(DUMultiDuplicateHandler.class);
33     
34     private DUMultiDuplicateHandler()
35     {}
36     
37     private static DUMultiDuplicateHandler instance = new DUMultiDuplicateHandler();
38     
39     public static DUMultiDuplicateHandler getInstance()
40     {
41         return instance;
42     }
43     
44     public void handleEvent(TKEvent evt) throws TKException
45     {
46         try
47         {
48         
49         TKParams params = evt.getParams();
50                 
51         String JavaDoc numberOfCopiesString = params.get( "PAR", "NUMBER_OF_COPIES" );
52         //String numberingDirection = params.get( "PAR", "NUM_DIRECTION" );
53

54         if(numberOfCopiesString != null && !numberOfCopiesString.equals("")){
55             // Falls dieser Parameter nicht bereitgestellt wird, so wird nur einmal dupliziert
56
NameAssembler nameAssembler = new NameAssembler(params);
57             
58             Integer JavaDoc numberOfCopies = new Integer JavaDoc(numberOfCopiesString);
59             for(int i=0; i < numberOfCopies.intValue() ; i++){
60                 
61                 Integer JavaDoc[] newRootIDs = new Integer JavaDoc[2];
62                 //doDuDuplicate((i == numberOfCopies.intValue() -1), newRootIDs);
63
//doDURenameDuplicates(i+1 , numberOfCopies, newRootIDs);
64

65                 DUDuplicateHandler.getInstance().doDuDuplicate(i == numberOfCopies.intValue()-1, newRootIDs, evt);
66                 String JavaDoc nameExtension = nameAssembler.assemble(i, null);
67                 doDURenameDuplicates(nameExtension, newRootIDs, evt);
68                 // note: this is a hack!!! oracle 9i throws an exception otherwise!
69
TKDBConnectionManager.getInstance().closeConnection();
70             }
71             
72         }
73         else
74         {// Nur eine Kopie
75
DUDuplicateHandler.getInstance().doDuDuplicate(evt);
76         }
77         }
78         catch (Throwable JavaDoc e)
79         {
80             // TO DO : Analyze Exception !
81
throw WebmanExceptionHandler.getException(e);
82         }
83     }
84     
85     public boolean isHandler(TKEvent evt)
86     {
87         return evt.getName().equalsIgnoreCase("DU_MULTI_DUPLICATE");
88     }
89
90     /**
91      * Umbenennt Knoten oder ganze Bäume
92      *
93      * @param
94      */

95      //doDURenameDuplicates(int copyNr, Integer numOfCopies, Integer[] newRootIDs)
96
public boolean doDURenameDuplicates(String JavaDoc nameExtension, Integer JavaDoc[] newRootIDs, TKEvent evt) throws Throwable JavaDoc
97     {
98         TKParams params = evt.getParams();
99         
100         //if(printwriter != null) printwriter.println("doDURenameDuplicates called with copyNr " + copyNr + " numOfCopies " + numOfCopies +
101
// " newRootIDs[0] " + newRootIDs[0] + " newRootIDs[1] "+newRootIDs[1] );
102
Integer JavaDoc contentRoot = newRootIDs[0];
103         Integer JavaDoc siteRoot = newRootIDs[1];
104         
105         
106         String JavaDoc extModeStr = params.get( "PAR", "NAME_EXTENSION" ); // NAME_EXTENSION: Nein (0) Ja (1) oder Recursiv (2)
107

108         int extMode;
109         
110         if(extModeStr == null || extModeStr.equals("")){
111             extMode = 0;
112         }
113         else{
114             try{
115                 extMode = (new Integer JavaDoc(extModeStr)).intValue();
116             }
117             catch(NumberFormatException JavaDoc e){
118                 CAT.warn(" Exception caught by DuplicateServlet.doDuMultiDuplicate() ", e);
119                 extMode = 0;
120             }
121         }
122         
123         
124         
125         
126 // if(printwriter != null) printwriter.println(" nameExtension " + nameExtension);
127
if(extMode == 2)
128         {
129             if(contentRoot != null )
130             {
131                 //printwriter.println("doDURenameDuplicates contentRoot " + contentRoot);
132
TKQuery qContentRename = TKDBManager.newQuery( TKDBContentTreeRenameRecursive.class );
133                 qContentRename.setQueryParams("NAME_EXT", nameExtension );
134                 qContentRename.setQueryParams("ROOT_ID", contentRoot);
135                 if(true){
136                     qContentRename.setQueryParams("POS", new Integer JavaDoc(1));
137                     // Wenn dieser Queryparameter nicht geestzt ist, wird die Extension hinten angehangt
138
}
139                 qContentRename.execute();
140                 qContentRename.close();
141                 //printwriter.println("TKDBContentTreeRenameRecursive executed witth contentRoot " + contentRoot);
142
}
143             if(siteRoot!= null){// Auch im Sitetree Recursives Umbenennen der neu erzeugten Knoten
144
TKQuery qSiteRename = TKDBManager.newQuery( TKDBSiteTreeRenameRecursive.class );
145                 qSiteRename.setQueryParams("NAME_EXT", nameExtension );
146                 qSiteRename.setQueryParams("ROOT_ID", siteRoot);
147                 if(true){
148                     qSiteRename.setQueryParams("POS", new Integer JavaDoc(1));
149                     // Wenn dieser Queryparameter nicht geestzt ist, wird die Extension hinten angehangt
150
}
151                 qSiteRename.execute();
152                 qSiteRename.close();
153             }
154         }
155         if(extMode >= 1){// Umbenennen der Roots der neuen Subtrees
156

157             TKQuery TKDBContentNodeNameExtend = TKDBManager.newQuery( TKDBContentNodeNameExtend.class );
158             TKDBContentNodeNameExtend.setQueryParams("NAME_EXT",nameExtension);
159             TKDBContentNodeNameExtend.setQueryParams("CONTENT_NODE_ID", contentRoot);
160             if(true)
161             {
162                 TKDBContentNodeNameExtend.setQueryParams("POS", new Integer JavaDoc(1));
163                 // Wenn dieser Queryparameter nicht geestzt ist, wird die Extension hinten angehangt
164
}
165             //TKLog.println("executing with nameExtension "+ nameExtension + " contentRoot " + contentRoot +""+ TKDBContentNodeNameExtend);
166

167             TKDBContentNodeNameExtend.execute();
168             //if(printwriter != null) printwriter.println("TKDBContentNodeNameExtend contentRoot " + contentRoot);
169
TKDBContentNodeNameExtend.close();
170             if(siteRoot!= null){
171                 TKQuery TKDBSiteNodeNameExtend = TKDBManager.newQuery( TKDBSiteNodeNameExtend.class );
172                 TKDBSiteNodeNameExtend.setQueryParams("NAME_EXT",nameExtension);
173                 TKDBSiteNodeNameExtend.setQueryParams("SITE_NODE_ID", siteRoot);
174                 if(true){
175                     TKDBSiteNodeNameExtend.setQueryParams("POS", new Integer JavaDoc(1));
176                     // Wenn dieser Queryparameter nicht geestzt ist, wird die Extension hinten angehangt
177
}
178                 TKDBSiteNodeNameExtend.execute();
179                 TKDBSiteNodeNameExtend.close();
180             }
181         }
182         return true;
183     }
184         
185         
186 }
187
Popular Tags