KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > webdocwf > util > loader > wizard > OctopusLoaderThread


1 /*
2      LoaderGenerator - tool for generated xml, sql and doml file needed for Octopus.
3     Copyright (C) 2003 Together
4     This library is free software; you can redistribute it and/or
5     modify it under the terms of the GNU Lesser General Public
6     License as published by the Free Software Foundation; either
7     version 2.1 of the License, or (at your option) any later version.
8     This library is distributed in the hope that it will be useful,
9     but WITHOUT ANY WARRANTY; without even the implied warranty of
10     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11     Lesser General Public License for more details.
12     You should have received a copy of the GNU Lesser General Public
13     License along with this library; if not, write to the Free Software
14     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15  */

16
17 package org.webdocwf.util.loader.wizard;
18
19 import java.util.HashMap JavaDoc;
20 import java.util.Map JavaDoc;
21 import java.util.StringTokenizer JavaDoc;
22
23 import javax.swing.JTextArea JavaDoc;
24
25 import org.webdocwf.util.loader.BufferOctopusClass;
26 import org.webdocwf.util.loader.Loader;
27 import org.webdocwf.util.loader.LoaderException;
28 import org.webdocwf.util.loader.ReturnCode;
29
30 /**
31  * ExecOctopusThread class execute thread which control Octopus application
32  * @author Radoslav Dutina
33  * @version 1.0
34  */

35 public class OctopusLoaderThread
36     extends Thread JavaDoc {
37   private OctopusLoaderData initData;
38 // TraceDialog td = null; //trace dialog of this Thread
39
private JTextArea JavaDoc td;
40   private String JavaDoc errorMsg = null;
41
42   /**
43    * Construct the objecto of ExecOctopusThread class with associated parameters
44    * @param traceArea is desktop frame of wizard application
45    * @param initData is object which contain input parameters of wizard application
46    * @param errorMsg is error message
47    */

48   public OctopusLoaderThread(OctopusLoaderData initData,
49                            String JavaDoc errorMsg,JTextArea JavaDoc traceArea) {
50     this.initData = initData;
51     this.errorMsg = errorMsg;
52     td = traceArea;
53 // desktop.add(td);
54
}
55
56
57   /**
58        * This method append line in to trace area
59        * @param s is value which to be set
60        */

61       public void appendLine(String JavaDoc s) {
62         td.append(s);
63         td.getCaret().setDot(td.getText().length() - 1);
64       }
65
66   /**
67    * Run the thread
68    */

69   public void run() {
70     td.setVisible(true);
71 // td.setDefaultFocus();
72
if (errorMsg != null) {
73       appendLine(errorMsg + "\n");
74 // td.setButtonEnabled();
75
// td.setButtonName("Open");
76

77     }
78     else {
79       OctopusLoader octopus = null;
80       OctopusThread octopusThread = null;
81       try {
82         octopus = new OctopusLoader(initData);
83         String JavaDoc[] process = octopus.generateAll();
84         if (process.length != 0) {
85           BufferOctopusClass.getInstance();
86           BufferOctopusClass.getInstance().setUsed();
87
88           octopusThread = new OctopusThread(process);
89           octopusThread.start();
90
91           while (octopusThread.isAlive()) {
92             String JavaDoc value = BufferOctopusClass.getInstance().readFromBuffer();
93             if (value.indexOf("***TogetherGroop***") == -1)
94               appendLine(value + "\n");
95             else
96               break;
97           }
98 // setButtonEnabled();
99
}
100         else {
101           appendLine("Some error is occur! " + "\n" +"Application build fails!");
102         }
103
104 // setButtonName("Open");
105
// td.setTitle("Building Octopus Application(Done)");
106
}
107       catch (Exception JavaDoc e) {
108 // td.setTitle("Building Octopus Application(ERROR)");
109
String JavaDoc message=e.getMessage();
110         if(message.indexOf(-1)!=-1||message.indexOf(0)!=-1)
111           message="Application build fails!";
112
113         BufferOctopusClass.getInstance().writeToBuffer(message + "\n");
114         BufferOctopusClass.getInstance().writeToBuffer("***TogetherGroop***");
115         BufferOctopusClass.getInstance().empty();
116 // td.setButtonEnabled();
117
// td.setButtonName("Open");
118
e.printStackTrace(System.out);
119       }
120       BufferOctopusClass.getInstance().empty();
121     }
122   }
123
124   /**
125    * This class creates new thread
126    */

127   class OctopusThread
128       extends Thread JavaDoc {
129     private String JavaDoc[] args;
130
131     /**
132      * Initialise the thread
133      * @param args represents the arguments
134      */

135     public OctopusThread(String JavaDoc[] args) {
136       this.args = args;
137     }
138
139     /**
140      * Run the thread
141      */

142     public void run() {
143       String JavaDoc loadJobFileName = null;
144       String JavaDoc mode = null;
145       String JavaDoc userID = null;
146       String JavaDoc logDirName = null;
147       String JavaDoc logFileName = null;
148       boolean restartIndicator = false;
149       Map JavaDoc variableValues = null;
150       String JavaDoc strVariableValues = null;
151       String JavaDoc vendorFileName = null;
152       boolean onErrorContinue = false;
153       String JavaDoc additionalPaths = null;
154       String JavaDoc includeTables[]=null;
155       String JavaDoc confJarStructure=null;
156       int defaultReturnCode = 1;
157       int commitCount = 100;
158       if (args.length > 0 && args.length < 24) {
159         loadJobFileName = args[args.length - 1];
160         for (int i = 0; i < args.length - 1; i = i + 1) {
161           if (args[i].equalsIgnoreCase("-m"))
162             mode = args[++i];
163           else if (args[i].equalsIgnoreCase("-r"))
164             restartIndicator = true;
165           else if (args[i].equalsIgnoreCase("-u"))
166             userID = args[++i];
167           else if (args[i].equalsIgnoreCase("-l"))
168             logDirName = args[++i];
169           else if (args[i].equalsIgnoreCase("-f"))
170             logFileName = args[++i];
171           else if (args[i].equalsIgnoreCase("-d"))
172             vendorFileName = args[++i];
173           else if (args[i].equalsIgnoreCase("-e")){
174             String JavaDoc value=args[++i];
175             if(value.equalsIgnoreCase("true"))
176               onErrorContinue = true;
177             else
178               onErrorContinue = false;
179           }else if (args[i].equalsIgnoreCase("-p"))
180             additionalPaths = args[++i];
181           else if (args[i].equalsIgnoreCase("-c"))
182             commitCount = (new Integer JavaDoc(args[++i])).intValue();
183           else if (args[i].equalsIgnoreCase("-v")) {
184             strVariableValues = args[++i];
185             variableValues = new HashMap JavaDoc(convertToMap(strVariableValues));
186           }
187           else if (args[i].equalsIgnoreCase("-rc")) {
188             defaultReturnCode = (new Integer JavaDoc(args[++i])).intValue();
189             ReturnCode.isParameter = true;
190           }
191           else if (args[i].equalsIgnoreCase("-cjs"))
192             confJarStructure = args[++i];
193           else if (args[i].equalsIgnoreCase("-it")) {
194             String JavaDoc array=args[++i];
195             StringTokenizer JavaDoc st=new StringTokenizer JavaDoc(array,";");
196             includeTables=new String JavaDoc[st.countTokens()];
197             int pos=0;
198             while(st.hasMoreTokens()){
199               includeTables[pos]=st.nextToken();
200               pos++;
201             }
202           }
203         }
204       }
205       else
206         printUsage();
207       Loader l = new Loader(loadJobFileName, mode, userID, logDirName,
208                             logFileName, restartIndicator, variableValues,
209                             vendorFileName,onErrorContinue,additionalPaths, commitCount,
210                             defaultReturnCode, includeTables,confJarStructure);
211
212       try {
213         l.load();
214       }
215       catch (LoaderException le) {
216 // td.setTitle("Building Octopus Application(ERROR)");
217
// td.setButtonEnabled();
218
// td.setButtonName("Open");
219
BufferOctopusClass.getInstance().writeToBuffer("LoaderException: " + "\n");
220         BufferOctopusClass.getInstance().writeToBuffer(le.getStackTraceAsString() + "\n");
221         try {
222           Thread.sleep(100);
223           BufferOctopusClass.getInstance().writeToBuffer("***TogetherGroop***");
224         }
225         catch (Exception JavaDoc ex) {
226           appendLine(ex.getMessage());
227         }
228         l = null;
229         return;
230       } catch (Throwable JavaDoc th) {
231 // td.setTitle("Building Octopus Application(ERROR)");
232
// td.setButtonEnabled();
233
// td.setButtonName("Open");
234
BufferOctopusClass.getInstance().writeToBuffer(th.getMessage());
235         try {
236           Thread.sleep(100);
237           BufferOctopusClass.getInstance().writeToBuffer("***TogetherGroop***");
238         }
239         catch (Exception JavaDoc ex) {
240           appendLine(ex.getMessage());
241         }
242         th.printStackTrace(System.out);
243         l = null;
244         return;
245       }
246       try{
247         Thread.sleep(1000);
248         BufferOctopusClass.getInstance().writeToBuffer("***TogetherGroop***");
249       }catch (Exception JavaDoc ex){
250         appendLine(ex.getMessage());
251       }
252       l = null;
253       return;
254     }
255
256     /**
257      * put your documentation comment here
258      */

259     public void printUsage() {
260       System.out.println(
261           "Usage: java org.webdocwf.util.loader.Loader [options] loadJob_xml_filename");
262       BufferOctopusClass.getInstance().writeToBuffer(
263           "Usage: java org.webdocwf.util.loader.Loader [options] loadJob_xml_filename");
264       System.out.println(" Options:");
265       BufferOctopusClass.getInstance().writeToBuffer(" Options:");
266       System.out.println(" -m defines the default logmode. Possible values are 'none', 'normal' (is the default) and 'full'.");
267       BufferOctopusClass.getInstance().writeToBuffer(" -m defines the default logmode. Possible values are 'none', 'normal' (is the default) and 'full'.");
268       System.out.println(" -r starts the Loader in restart mode after abnormal termination in a prior execution. \n");
269       BufferOctopusClass.getInstance().writeToBuffer(" -r starts the Loader in restart mode after abnormal termination in a prior execution. \n");
270       System.out.println(" -u defines the current UserID used in UserID value columns. \n");
271       BufferOctopusClass.getInstance().writeToBuffer(" -u defines the current UserID used in UserID value columns. \n");
272       System.out.println(" -v defines variables used in variable columns. \n");
273       BufferOctopusClass.getInstance().writeToBuffer(" -v defines variables used in variable columns. \n");
274       System.out.println(" -l defines the logfile directory. The default is the current working directory. \n");
275       BufferOctopusClass.getInstance().writeToBuffer(" -v defines variables used in variable columns. \n");
276       System.out.println(" -f defines the logfile name. The default is 'LoaderLog-YYYY-MM-DD-HH-mm-SS.txt'. \n");
277       BufferOctopusClass.getInstance().writeToBuffer(" -f defines the logfile name. The default is 'LoaderLog-YYYY-MM-DD-HH-mm-SS.txt'. \n");
278       System.out.println(" -d the filename of the XML DB-vendor configuration file. The default is 'OctopusDBVendors.xml'. \n");
279       BufferOctopusClass.getInstance().writeToBuffer(" -d the filename of the XML DB-vendor configuration file. The default is 'OctopusDBVendors.xml'. \n");
280       System.out.println(" -e defines to set the default of 'onErrorContinue' to 'true'. Is false otherwise. \n");
281       BufferOctopusClass.getInstance().writeToBuffer(" -e defines to set the default of 'onErrorContinue' to 'true'. Is false otherwise. \n");
282       System.out.println(" -p Extend the classpath with additional paths \n");
283       BufferOctopusClass.getInstance().writeToBuffer(" -p Extend the classpath with additional paths \n");
284       System.out.println(" -c Sets the default commit count. System default is '100'. \n");
285       BufferOctopusClass.getInstance().writeToBuffer(" -c Sets the default commit count. System default is '100'. \n");
286       System.out.println(" -rc Sets the default error return code. System default is '1'. \n");
287       BufferOctopusClass.getInstance().writeToBuffer(" -rc Sets the default error return code. System default is '1'. \n");
288       System.out.println(" -it Sets the table names which will be proccesed ");
289       BufferOctopusClass.getInstance().writeToBuffer(" -it Sets the table names which will be proccesed ");
290
291     }
292
293     /**
294      * put your documentation comment here
295      * @param values represents map values
296      * @return those values
297      */

298     private Map JavaDoc convertToMap(String JavaDoc values) {
299       Map JavaDoc mapValues = new HashMap JavaDoc();
300       int i = values.indexOf(";");
301       int k = 0;
302       String JavaDoc part = new String JavaDoc(values);
303       if (i != -1) {
304         while (i != -1) {
305           part = new String JavaDoc(values.substring(k, k + i));
306           int j = part.indexOf("=");
307           String JavaDoc strObject = part.substring(0, j);
308           String JavaDoc strValue = part.substring(j + 1);
309           if (strValue.equals(""))
310             strValue = null;
311           mapValues.put(strObject, strValue);
312           k += i + 1;
313           i = values.substring(k).indexOf(";");
314         }
315         if (! (values.substring(k).trim().equals("") ||
316                values.substring(k).trim().equals(";"))) {
317           part = new String JavaDoc(values.substring(k));
318           int j = part.indexOf("=");
319           String JavaDoc strObject = part.substring(0, j);
320           String JavaDoc strValue = part.substring(j + 1);
321           if (strValue.equals(""))
322             strValue = null;
323           mapValues.put(strObject, strValue);
324         }
325       }
326       else {
327         int j = values.indexOf("=");
328         String JavaDoc strObject = values.substring(k, j);
329         String JavaDoc strValue = values.substring(j + 1);
330         if (strValue.equals(""))
331           strValue = null;
332         mapValues.put(strObject, strValue);
333       }
334       return mapValues;
335     }
336   }
337 }
338
Popular Tags