KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > webdocwf > util > loader > generator > SearchXmlFile


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

22
23 package org.webdocwf.util.loader.generator;
24
25 import javax.xml.parsers.DocumentBuilder JavaDoc;
26 import javax.xml.parsers.DocumentBuilderFactory JavaDoc;
27
28 import org.w3c.dom.Document JavaDoc;
29 import org.w3c.dom.Element JavaDoc;
30 import org.w3c.dom.NodeList JavaDoc;
31 import java.io.File JavaDoc;
32
33 import java.io.*;
34 import java.util.*;
35
36 import org.enhydra.xml.*;
37 import org.webdocwf.util.loader.ConfigReader;
38 import org.webdocwf.util.loader.LoaderException;
39 import org.webdocwf.util.loader.logging.Logger;
40 import org.webdocwf.util.loader.logging.StandardLogger;
41
42 /**
43  *
44  * SearchXmlFile class search the named xml document.
45  * @author Radoslav Dutina
46  * @version 1.0
47  */

48 public class SearchXmlFile {
49
50     private SearchElement searchDocument;
51     private Document JavaDoc document;
52     private String JavaDoc fileName;
53     private String JavaDoc jdbcType = null;
54     private String JavaDoc sqlType = null;
55     private String JavaDoc javaType = null;
56     private String JavaDoc oidDbType = null;
57     private String JavaDoc versionDbType = null;
58     private String JavaDoc oidDbColumnName = null;
59     private String JavaDoc versionDbColumnName = null;
60     private InputStream is = null;
61     private File JavaDoc file = null;
62     private String JavaDoc octopusPath = null;
63     private String JavaDoc msg = null;
64     private Vector allVendors = new Vector();
65     private Logger logger = null;
66     /**
67      * Construct object SearchXmlFile with associated parameters.
68      * @param typePath defines the type of the path. Path can be relative, absolute and jar.
69      * If the parameter has value jar, then the xml file is placed in jar file.
70      * @param path is the path to named xml file.
71      * @throws LoaderException
72      */

73     public SearchXmlFile(String JavaDoc typePath, String JavaDoc path, String JavaDoc confJarStructure) throws LoaderException {
74                 
75                 
76                 setLogger();
77 // if (this.logger!=null){
78
// this.logger.write("full", "SearchXmlFile is started.");
79
// }
80
DocumentBuilderFactory JavaDoc factory = DocumentBuilderFactory.newInstance();
81
82         try {
83             octopusPath = System.getProperty("OCTOPUS_HOME");
84             if (octopusPath == null) {
85                 if (confJarStructure != null && !confJarStructure.equalsIgnoreCase("")) {
86                     is = getClass().getClassLoader().getResourceAsStream(confJarStructure + "/" + path);
87                 } else {
88                     is = getClass().getClassLoader().getResourceAsStream("xml/conf/" + path);
89                 }
90             } else {
91                 //make the diference if the path is apsolute or relative!
92
if (typePath.equalsIgnoreCase("relative")) {
93                     fileName = octopusPath + "/conf/" + path;
94                 } else if (typePath.equalsIgnoreCase("absolute")) {
95                     fileName = path;
96 // check if absolute databaseConfigFile path exist,and if not try to find it in current directory
97
if(!(new File JavaDoc(fileName).exists())) {
98                         fileName = octopusPath + "/conf/" + path;
99                     }
100                 }
101             }
102             if (fileName != null) {
103                 file = new File JavaDoc(fileName);
104                 if (!file.exists()) {
105                     msg = "This " + fileName + " file doesn't exists!!";
106                     LoaderException le = new LoaderException("Exception:", (Throwable JavaDoc) new Exception JavaDoc(msg));
107                                         if (this.logger!=null){
108                                             this.logger.write("full", "Exception in SearchXmlFile." + le.getStackTraceAsString());
109                                         }
110                     throw le;
111                 }
112             }
113
114             DocumentBuilder JavaDoc builder = factory.newDocumentBuilder();
115
116             try {
117                 if (octopusPath != null)
118                     document = builder.parse(file);
119                 else
120                     document = builder.parse(is);
121
122             } catch (Exception JavaDoc e) {
123                 if (fileName != null)
124                     msg = "Exception has occurred when application try to parse " + fileName + " file." + "\n";
125                 else
126                     msg = "Exception has occurred when application try to parse " + path + " file placed in jar file." + "\n";
127                                 LoaderException le = new LoaderException("Exception:" + msg + e.getMessage(), (Throwable JavaDoc) e);
128                                 if (this.logger!=null){
129                                     this.logger.write("full", "Exception in SearchXmlFile." + msg +"\n" + le.getStackTraceAsString());
130                                 }
131                 
132                 throw le;
133             }
134
135         } catch (Exception JavaDoc e) {
136             String JavaDoc msg = "Exception in SearchXmlFile.";
137                         LoaderException le = new LoaderException(msg + "\n" + e.getMessage(), (Throwable JavaDoc) e);
138                         if (this.logger!=null){
139                 this.logger.write("full", "Exception in SearchXmlFile." + "\n" + le.getStackTraceAsString());
140                         }
141             throw le;
142         }
143 // if (this.logger!=null){
144
// this.logger.write("full", "SearchXmlFile is finished.");
145
// }
146

147     }
148
149     /**
150      * This method read value of allVendors parameter
151      * @return value of parameter
152      */

153     public Vector getAllVendors() {
154         setLogger();
155 // if (this.logger!=null){
156
// this.logger.write("full", "\tgetAllVendors is started.");
157
// }
158
searchDocument = (SearchElement) SearchElement.newInstance(document);
159         NodeList JavaDoc databaseVendors = searchDocument.getSubElementsByTagName("Database/Vendor");
160         if (databaseVendors.getLength() != 0) {
161             for (int i = 0; i < databaseVendors.getLength(); i++) {
162                 String JavaDoc vendorName = ((Element JavaDoc) databaseVendors.item(i)).getAttribute("name");
163                 String JavaDoc vendorPath = getPathToConf(vendorName);
164                 allVendors.add(vendorName);
165             }
166         }
167 // if (this.logger!=null){
168
// this.logger.write("full", "\tgetAllVendors is finished.");
169
// }
170
return allVendors;
171     }
172
173     /**
174      * This method read value of allVendorsPath parameter
175      * @return value of parameter
176      */

177     public Vector getAllVendorsPath() {
178         setLogger();
179 // if (this.logger!=null){
180
// this.logger.write("full", "\tgetAllVendorsPath is started.");
181
// }
182
searchDocument = (SearchElement) SearchElement.newInstance(document);
183         Vector allVendorsPath = new Vector();
184         NodeList JavaDoc databaseVendors = searchDocument.getSubElementsByTagName("Database/Vendor");
185         if (databaseVendors.getLength() != 0) {
186             for (int i = 0; i < databaseVendors.getLength(); i++) {
187                 String JavaDoc vendorName = ((Element JavaDoc) databaseVendors.item(i)).getAttribute("name");
188                 String JavaDoc vendorPath = getPathToConf(vendorName);
189                 allVendorsPath.add(vendorPath);
190             }
191         }
192 // if (this.logger!=null){
193
// this.logger.write("full", "\tgetAllVendorsPath is finished.");
194
// }
195
return allVendorsPath;
196     }
197
198     /**
199      * This method read value of drivers parameter
200      * @return value of parameter
201      */

202     public Vector getAllDriversForVendor() {
203         setLogger();
204 // if (this.logger!=null){
205
// this.logger.write("full", "\tgetAllDriversForVendor is started.");
206
// }
207
Vector allDriversForVendor = new Vector();
208         Vector drivers = new Vector();
209         Vector metaDataDriver = new Vector();
210         String JavaDoc sourceVendor = "false";
211         searchDocument = (SearchElement) SearchElement.newInstance(document);
212         NodeList JavaDoc driverTag = searchDocument.getSubElementsByTagName("Driver");
213
214         for (int i = 0; i < driverTag.getLength(); i++) {
215             String JavaDoc driverName = ((Element JavaDoc) driverTag.item(i)).getAttribute("name");
216             allDriversForVendor.add(driverName);
217
218             NodeList JavaDoc metaData = ((Element JavaDoc) driverTag.item(i)).getElementsByTagName("MetaData");
219             String JavaDoc supportMetaData = ((Element JavaDoc) metaData.item(0)).getAttribute("value");
220
221             if (supportMetaData.equalsIgnoreCase("true")) {
222                 metaDataDriver.add(driverName);
223                 sourceVendor = "true";
224             }
225         }
226         drivers.add(allDriversForVendor);
227         drivers.add(metaDataDriver);
228         drivers.add(sourceVendor);
229 // if (this.logger!=null){
230
// this.logger.write("full", "\tgetAllDriversForVendor is finished.");
231
// }
232
return drivers;
233
234     }
235
236     /**
237      * This method search the named xml document, and read the value of pathToConf parameter
238      * which represents the path of the conf file, for the named database.
239      * @param database_Type is the type of the database.
240      * @return value of paramter.
241      */

242     public String JavaDoc getPathToConf(String JavaDoc database_Type) {
243         setLogger();
244 // if (this.logger!=null){
245
// this.logger.write("full", "\tgetPathToConf is started.");
246
// }
247
searchDocument = (SearchElement) SearchElement.newInstance(document);
248         //ZK 18.6 2004 commented this. It was problem with reading xml file from jar.
249
//if(octopusPath!=null){
250
NodeList JavaDoc databaseType = searchDocument.getSubElementsByCondition("Database/Vendor@name=" + database_Type);
251         if (databaseType.getLength() != 0) {
252             String JavaDoc pathToConf = databaseType.item(0).getFirstChild().getNodeValue();
253 // if (this.logger!=null){
254
// this.logger.write("full", "\tgetPathToConf is finished.");
255
// }
256
return pathToConf;
257         } else {
258 // if (this.logger!=null){
259
// this.logger.write("full", "\tgetPathToConf is finished.");
260
// }
261
return null;
262         }
263                 
264     }
265
266     /**
267      * This method search the named xml document, and read the value of driverClassName parameter,
268      * which represents driver class for the named driver.
269      * @param driverName is the name of the driver.
270      * @param jdbcParameters is reference to JdbcParameters object.
271      * @param generatorParameters is object of InputParameters class
272      * @throws LoaderException
273      */

274     public void getClassName(String JavaDoc driverName, JdbcParameters jdbcParameters, InputParameters generatorParameters) throws LoaderException {
275         setLogger();
276 // if (this.logger!=null){
277
// this.logger.write("full", "\tgetClassName is started.");
278
// }
279
searchDocument = (SearchElement) SearchElement.newInstance(document);
280         NodeList JavaDoc driverTag = null;
281         if (driverName.equalsIgnoreCase("")) {
282             driverTag = searchDocument.getSubElementsByTagName("Driver");
283         } else {
284             driverTag = searchDocument.getSubElementsByCondition("Driver@name=" + driverName);
285         }
286         if (driverTag.getLength() != 0) {
287             NodeList JavaDoc classNameTag = ((Element JavaDoc) driverTag.item(0)).getElementsByTagName("ClassName");
288             if (classNameTag.getLength() == 0) {
289                 if (fileName != null)
290                     msg = "In " + fileName + " file for this database, you don't have ClassName tag!";
291                 else
292                     msg = "In " + octopusPath + " ( in .jar) file for this database, you don't have ClassName tag!";
293                                         
294                                         LoaderException le = new LoaderException("Exception:", (Throwable JavaDoc) new Exception JavaDoc(msg));
295                                         if (this.logger!=null){
296                                                         this.logger.write("full", "Exception:"+"\n"+le.getStackTraceAsString());
297                                         }
298                 
299                 throw le;
300             }
301             jdbcParameters.setDriverClassName(((Element JavaDoc) classNameTag.item(0)).getAttribute("value"));
302
303             NodeList JavaDoc connectionTag = ((Element JavaDoc) driverTag.item(0)).getElementsByTagName("Connection");
304             if (connectionTag.getLength() == 0) {
305                 if (fileName != null)
306                     msg = "In " + fileName + " file for this database, you don't have Connection tag!";
307                 else
308                     msg = "In " + octopusPath + " ( in .jar) file for this database, you don't have Connection tag!";
309                                 LoaderException le = new LoaderException("Exception:", (Throwable JavaDoc) new Exception JavaDoc(msg));
310                                 if (this.logger!=null){
311                                         this.logger.write("full", "Exception:"+"\n"+le.getStackTraceAsString());
312                                 }
313                 throw le;
314             }
315             jdbcParameters.setConnection(((Element JavaDoc) connectionTag.item(0)).getAttribute("value"));
316             // NodeList alterTableTag= ((Element)driverTag.item(0)).getElementsByTagName("AlterTablePrimaryKey");
317
// if(alterTableTag.getLength()==0){
318
// if(fileName!=null)
319
// msg= "In "+fileName+" file for this database, you don't have AlterTablePrimaryKey tag!";
320
// else
321
// msg= "In "+octopusPath+" ( in .jar) file for this database, you don't have AlterTablePrimaryKey tag!";
322
// LoaderException le = new LoaderException(msg);
323
// throw le;
324
// }
325
// jdbcParameters.setAlterTablePrimaryKey(((Element)alterTableTag.item(0)).getAttribute("value"));
326
// generatorParameters.setAlterTablePrimaryKey(((Element)alterTableTag.item(0)).getAttribute("value"));
327
} else {
328             if (fileName != null)
329                 msg = "In " + fileName + " file for this database, specified driver name (" + driverName + ") is not valid!";
330             else
331             msg = "In " + octopusPath + " ( in .jar) file for this database, specified driver name (" + driverName + ") is not valid!";
332                         LoaderException le = new LoaderException("Exception:", (Throwable JavaDoc) new Exception JavaDoc(msg));
333                         if (this.logger!=null){
334                                     this.logger.write("full", "Exception:"+"\n"+le.getStackTraceAsString());
335                         }
336             
337             throw le;
338         }
339 // if (this.logger!=null){
340
// this.logger.write("full", "\tgetClassName is finished.");
341
// }
342
}
343
344     public Vector getFileSystemDatabase(String JavaDoc driverName) throws LoaderException {
345         setLogger();
346 // if (this.logger!=null){
347
// this.logger.write("full", "\tgetFileSystemDatabase is started.");
348
// }
349
Vector driverProperties = new Vector();
350         String JavaDoc strFileSystemDatabase = "";
351         String JavaDoc strConnection = "";
352
353         searchDocument = (SearchElement) SearchElement.newInstance(document);
354         NodeList JavaDoc driverTag = null;
355         if (driverName.equalsIgnoreCase("")) {
356             driverTag = searchDocument.getSubElementsByTagName("Driver");
357         } else {
358             driverTag = searchDocument.getSubElementsByCondition("Driver@name=" + driverName);
359         }
360         if (driverTag.getLength() != 0) {
361             //FileSystemDatabase tag
362
NodeList JavaDoc fileSystemDatabaseTag = ((Element JavaDoc) driverTag.item(0)).getElementsByTagName("FileSystemDatabase");
363             if (fileSystemDatabaseTag.getLength() == 0) {
364                 if (fileName != null)
365                     msg = "In " + fileName + " file for this database, you don't have FileSystemDatabase tag!";
366                 else
367                     msg = "In " + octopusPath + " ( in .jar) file for this database, you don't have FileSystemDatabase tag!";
368                 LoaderException le = new LoaderException("Exception:", (Throwable JavaDoc) new Exception JavaDoc(msg));
369                                 if (this.logger!=null){
370                                     this.logger.write("full", "Exception:"+le.getStackTraceAsString());
371                                 }
372                 throw le;
373             } else {
374                 strFileSystemDatabase = ((Element JavaDoc) fileSystemDatabaseTag.item(0)).getAttribute("value");
375             }
376
377             //Connection
378
NodeList JavaDoc connectionTag = ((Element JavaDoc) driverTag.item(0)).getElementsByTagName("Connection");
379             if (connectionTag.getLength() == 0) {
380                 if (fileName != null)
381                     msg = "In " + fileName + " file for this database, you don't have Connection tag!";
382                 else
383                     msg = "In " + octopusPath + " ( in .jar) file for this database, you don't have Connection tag!";
384                 LoaderException le = new LoaderException("Exception:", (Throwable JavaDoc) new Exception JavaDoc(msg));
385                                 if (this.logger!=null){
386                                     this.logger.write("full", "Exception:"+le.getStackTraceAsString());
387                                 }
388             
389                 throw le;
390             } else {
391                 strConnection = ((Element JavaDoc) connectionTag.item(0)).getAttribute("value");
392             }
393
394         } else {
395             if (fileName != null)
396                 msg = "In " + fileName + " file for this database, specified driver name (" + driverName + ") is not valid!";
397             else
398                 msg = "In " + octopusPath + " ( in .jar) file for this database, specified driver name (" + driverName + ") is not valid!";
399                         LoaderException le = new LoaderException("Exception:", (Throwable JavaDoc) new Exception JavaDoc(msg));
400                         if (this.logger!=null){
401                             this.logger.write("full", "Exception:"+le.getStackTraceAsString());
402                         }
403             throw le;
404         }
405         driverProperties.add(strFileSystemDatabase);
406         driverProperties.add(strConnection);
407 // if (this.logger!=null){
408
// this.logger.write("full", "\tgetFileSystemDatabase is finished.");
409
// }
410
return driverProperties;
411     }
412
413     public String JavaDoc getMaxConstraintLength(String JavaDoc driverName) throws LoaderException {
414         setLogger();
415 // if (this.logger!=null){
416
// this.logger.write("full", "\tgetMaxConstraintLength is started.");
417
// }
418
String JavaDoc maxConstraintLength = "-1";
419         searchDocument = (SearchElement) SearchElement.newInstance(document);
420         NodeList JavaDoc driverTag = null;
421         if (driverName.equalsIgnoreCase("")) {
422             driverTag = searchDocument.getSubElementsByTagName("Driver");
423         } else {
424             driverTag = searchDocument.getSubElementsByCondition("Driver@name=" + driverName);
425         }
426         if (driverTag.getLength() != 0) {
427             try {
428                 NodeList JavaDoc maxConstraintLengthTag = ((Element JavaDoc) driverTag.item(0)).getElementsByTagName("MaxConstraintLength");
429
430                 maxConstraintLength = ((Element JavaDoc) maxConstraintLengthTag.item(0)).getAttribute("value");
431
432             } catch (Exception JavaDoc ex) {
433                 if (fileName != null)
434                     msg = "In " + fileName + " file for this database, you don't have maxConstraintLenght tag!";
435                 else
436                     msg = "In " + octopusPath + " ( in .jar) file for this database, you don't have maxConstraintLenght tag!";
437                                 LoaderException le = new LoaderException("Exception:", new Exception JavaDoc(msg));
438                                 if (this.logger!=null){
439                                     this.logger.write("full", "Exception:"+"\n"+le.getStackTraceAsString());
440                                 }
441                 
442                 throw le;
443             }
444
445         }
446 // if (this.logger!=null){
447
// this.logger.write("full", "\tgetMaxConstraintLength is finished.");
448
// }
449
return maxConstraintLength;
450     }
451
452     /**
453      * This method set value of alterTablePrimaryKey parameter
454      * @param driverName is name of the driver
455      * @return value of parameter
456      * @throws LoaderException
457      */

458     public String JavaDoc getAlterTablePrimaryKey(String JavaDoc driverName) throws LoaderException {
459         setLogger();
460 // if (this.logger!=null){
461
// this.logger.write("full", "\tgetAlterTablePrimaryKey is started.");
462
// }
463
searchDocument = (SearchElement) SearchElement.newInstance(document);
464         NodeList JavaDoc driverTag = null;
465         if (driverName.equalsIgnoreCase("")) {
466             driverTag = searchDocument.getSubElementsByTagName("Driver");
467         } else {
468             driverTag = searchDocument.getSubElementsByCondition("Driver@name=" + driverName);
469         }
470         if (driverTag.getLength() != 0) {
471             NodeList JavaDoc alterTableTag = ((Element JavaDoc) driverTag.item(0)).getElementsByTagName("AlterTablePrimaryKey");
472             if (alterTableTag.getLength() == 0) {
473                 if (fileName != null)
474                     msg = "In " + fileName + " file for this database, you don't have AlterTablePrimaryKey tag!";
475                 else
476                     msg = "In " + octopusPath + " ( in .jar) file for this database, you don't have AlterTablePrimaryKey tag!";
477                                 LoaderException le = new LoaderException("Exception:", (Throwable JavaDoc) new Exception JavaDoc(msg));
478                                 if (this.logger!=null){
479                                     this.logger.write("full", "Exception:"+le.getStackTraceAsString());
480                                 }
481                 throw le;
482             } else {
483                 String JavaDoc ret = ((Element JavaDoc) alterTableTag.item(0)).getAttribute("value");
484 // if (this.logger!=null){
485
// this.logger.write("full", "\tgetAlterTablePrimaryKey is finished.");
486
// }
487
return ret;
488             }
489             
490         } else {
491             if (fileName != null)
492                 msg = "In " + fileName + " file for this database, specified driver name (" + driverName + ") is not valid!";
493             else
494                 msg = "In " + octopusPath + " ( in .jar) file for this database, specified driver name (" + driverName + ") is not valid!";
495             LoaderException le = new LoaderException("Exception:", (Throwable JavaDoc) new Exception JavaDoc(msg));
496                         if (this.logger!=null){
497                             this.logger.write("full", "Exception:"+le.getStackTraceAsString());
498                         }
499             throw le;
500         }
501         
502     }
503
504     /**
505      * This method search the named xml document, and read the value of jdbcType parameter,
506      * which represents the jdbc type of data of the named sql type of data.
507      * @param sql_Type is the sql type of data.
508      * @return jdbc type of data.
509      * @throws LoaderException
510      */

511     public String JavaDoc getJDBCFromSQLType(String JavaDoc sql_Type) throws LoaderException {
512         setLogger();
513 // if (this.logger!=null){
514
// this.logger.write("full", "\tgetJDBCFromSQLType is started.");
515
// }
516
searchDocument = (SearchElement) SearchElement.newInstance(document);
517         //TODO zoran added this line
518
sql_Type = Utils.replaceAll(sql_Type, " ", ConfigReader.SPACE_ESCAPE);
519         NodeList JavaDoc SQLTypeTag = searchDocument.getSubElementsByTagName("SQLType/" + sql_Type.toUpperCase());
520         if (SQLTypeTag.getLength() != 0) {
521             jdbcType = SQLTypeTag.item(0).getFirstChild().getNodeValue();
522         } else {
523             String JavaDoc msg = "This type of data (" + sql_Type + ") doesn't exists in the source table conf file!";
524                         LoaderException le = new LoaderException("Exception:", new Exception JavaDoc(msg));
525                         if (this.logger!=null){
526                             this.logger.write("full", "Exception:"+le.getStackTraceAsString());
527                         }
528             
529             throw le;
530         }
531 // if (this.logger!=null){
532
// this.logger.write("full", "\tgetJDBCFromSQLType is finished.");
533
// }
534
return jdbcType;
535     }
536
537     //ZK added this method 5.5 2004
538
/**
539          * This method search the named xml document, and read the value of hasSize parameter
540          * @return hasSize.
541          * @throws LoaderException
542          */

543     public Hashtable getHasSize() throws LoaderException {
544         setLogger();
545 // if (this.logger!=null){
546
// this.logger.write("full", "\tgetHasSize is started.");
547
// }
548
Hashtable resHashtable = new Hashtable();
549         searchDocument = (SearchElement) SearchElement.newInstance(document);
550         NodeList JavaDoc SQLTypesTagX = searchDocument.getSubElementsByTagName("SQLType");
551         NodeList JavaDoc SQLTypesTag = SQLTypesTagX.item(0).getChildNodes();
552         if (SQLTypesTag.getLength() != 0) {
553             for (int i = 0; i < SQLTypesTag.getLength(); i++) {
554                 if (!(SQLTypesTag.item(i) instanceof org.enhydra.xml.SearchElement))
555                     continue;
556                 String JavaDoc hasSize = ((Element JavaDoc) SQLTypesTag.item(i)).getAttribute("hasSize");
557                 if (hasSize == null || hasSize.equalsIgnoreCase(""))
558                     hasSize = "false";
559                 String JavaDoc nodeName = ((Element JavaDoc) SQLTypesTag.item(i)).getNodeName();
560                 nodeName = Utils.replaceAll(nodeName, ConfigReader.SPACE_ESCAPE, " ");
561                 resHashtable.put(nodeName, hasSize);
562             }
563         } else {
564                         String JavaDoc msg = "Exception in method getHasSize in class SearchXmlFile.";
565             LoaderException le = new LoaderException("Exception:", (Throwable JavaDoc) new Exception JavaDoc(msg));
566                         if (this.logger!=null){
567                             this.logger.write("full", "Error:"+le.getStackTraceAsString());
568                         }
569             throw le;
570         }
571 // if (this.logger!=null){
572
// this.logger.write("full", "\tgetHasSize is finished.");
573
// }
574
return resHashtable;
575     }
576     /**
577       * This method search the named xml document, and read the value of isDecimal parameter
578         * @return hasSize.
579         * @throws LoaderException
580         */

581     public Hashtable getIsDecimal() throws LoaderException {
582         setLogger();
583 // if (this.logger!=null){
584
// this.logger.write("full", "\tgetIsDecimal is started.");
585
// }
586
Hashtable resHashtable = new Hashtable();
587         searchDocument = (SearchElement) SearchElement.newInstance(document);
588         NodeList JavaDoc SQLTypesTagX = searchDocument.getSubElementsByTagName("SQLType");
589         NodeList JavaDoc SQLTypesTag = SQLTypesTagX.item(0).getChildNodes();
590         if (SQLTypesTag.getLength() != 0) {
591             for (int i = 0; i < SQLTypesTag.getLength(); i++) {
592                 if (!(SQLTypesTag.item(i) instanceof org.enhydra.xml.SearchElement))
593                     continue;
594                 String JavaDoc hasSize = ((Element JavaDoc) SQLTypesTag.item(i)).getAttribute("isDecimal");
595                 if (hasSize == null || hasSize.equalsIgnoreCase(""))
596                     hasSize = "false";
597                 String JavaDoc nodeName = ((Element JavaDoc) SQLTypesTag.item(i)).getNodeName();
598                 nodeName = Utils.replaceAll(nodeName, ConfigReader.SPACE_ESCAPE, " ");
599                 resHashtable.put(nodeName, hasSize);
600             }
601         } else {
602                         String JavaDoc msg = "Exception in method getIsDecimal in class SearchXmlFile.";
603             LoaderException le = new LoaderException("Exception:", new Exception JavaDoc(msg));
604                         if (this.logger!=null){
605                             this.logger.write("full", "Error:"+le.getStackTraceAsString());
606                         }
607             throw le;
608         }
609 // if (this.logger!=null){
610
// this.logger.write("full", "\tgetIsDecimal is finished.");
611
// }
612
return resHashtable;
613     }
614     /**
615      * This method search the named xml document, and read the value of sqlType parameter,
616      * which represents the sql type of data of the named jdbc type of data.
617      * @param jdbc_Type is the jdbc type of data.
618      * @return the sql type of data.
619      * @throws LoaderException
620      */

621     public String JavaDoc getSQLFromJDBCType(String JavaDoc jdbc_Type) throws LoaderException {
622         setLogger();
623 // if (this.logger!=null){
624
// this.logger.write("full", "\tgetSQLFromJDBCType is started.");
625
// }
626
searchDocument = (SearchElement) SearchElement.newInstance(document);
627         NodeList JavaDoc JDBCTypeTag = searchDocument.getSubElementsByTagName("JDBCType/" + jdbc_Type.toUpperCase());
628         if (JDBCTypeTag.getLength() != 0) {
629             sqlType = JDBCTypeTag.item(0).getFirstChild().getNodeValue();
630         } else {
631             String JavaDoc msg = "This type of data (" + jdbc_Type + ") doesn't exists on the target table conf file!";
632             LoaderException le = new LoaderException("Exception:", new Exception JavaDoc(msg));
633                         if (this.logger!=null){
634                             this.logger.write("full", "Error:"+le.getStackTraceAsString());
635                         }
636             throw le;
637         }
638 // if (this.logger!=null){
639
// this.logger.write("full", "\tgetSQLFromJDBCType is finished.");
640
// }
641
return sqlType;
642     }
643
644     /**
645      * This method search the named xml document, and read the value of javaType parameter,
646      * which represents the java type of data of the named jdbc type of data.
647      * @param java_Type is the jdbc type of data.
648      * @return java type of data.
649      * @throws LoaderException
650      */

651     public String JavaDoc getJAVAType(String JavaDoc java_Type) throws LoaderException {
652         setLogger();
653 // if (this.logger!=null){
654
// this.logger.write("full", "\tgetJAVAType is started.");
655
// }
656
searchDocument = (SearchElement) SearchElement.newInstance(document);
657         java_Type = Utils.replaceAll(java_Type, " ", ConfigReader.SPACE_ESCAPE);
658         NodeList JavaDoc JAVATypeTag = searchDocument.getSubElementsByTagName("JAVAType/" + java_Type.toUpperCase());
659         if (JAVATypeTag.getLength() != 0) {
660             javaType = JAVATypeTag.item(0).getFirstChild().getNodeValue();
661         } else {
662             String JavaDoc msg = "This type of data (" + java_Type + ") doesn't exists in Java Type class!";
663             LoaderException le = new LoaderException("Exception:", new Exception JavaDoc(msg));
664                         if (this.logger!=null){
665                             this.logger.write("full", "Error:"+le.getStackTraceAsString());
666                         }
667             throw le;
668         }
669 // if (this.logger!=null){
670
// this.logger.write("full", "\tgetJAVAType is finished.");
671
// }
672
return javaType;
673     }
674
675     /**
676      * This method search the named xml document, and read the value of oidDbType parameter, which
677      * represents the oid type for the named database.
678      * @return oid type.
679      * @throws LoaderException
680      */

681     public String JavaDoc getOidDB() throws LoaderException {
682         setLogger();
683 // if (this.logger!=null){
684
// this.logger.write("full", "\tgetOidDB is started.");
685
// }
686
searchDocument = (SearchElement) SearchElement.newInstance(document);
687         NodeList JavaDoc OidDb = searchDocument.getSubElementsByTagName("OidDbType");
688         if (OidDb.getLength() != 0) {
689             this.oidDbType = OidDb.item(0).getFirstChild().getNodeValue();
690         } else {
691             String JavaDoc msg = "You must cofigure your conf file for this Oid type!";
692             LoaderException le = new LoaderException("Exception:", new Exception JavaDoc(msg));
693                         if (this.logger!=null){
694                             this.logger.write("full", "Error:"+le.getStackTraceAsString());
695                         }
696             throw le;
697         }
698 // if (this.logger!=null){
699
// this.logger.write("full", "\tgetOidDB is finished.");
700
// }
701
return oidDbType;
702     }
703
704     /**
705      * This method search the named xml document, and read the value of versionDbType parameter, which
706      * represents the version type of the named database.
707      * @return version type.
708      * @throws LoaderException
709      */

710     public String JavaDoc getVersionDb() throws LoaderException {
711         setLogger();
712 // if (this.logger!=null){
713
// this.logger.write("full", "\tgetVersionDb is started.");
714
// }
715
searchDocument = (SearchElement) SearchElement.newInstance(document);
716         NodeList JavaDoc VersionDb = searchDocument.getSubElementsByTagName("VersionDbType");
717         if (VersionDb.getLength() != 0) {
718             this.versionDbType = VersionDb.item(0).getFirstChild().getNodeValue();
719         } else {
720             String JavaDoc msg = "You must cofigure yoor conf file for this Version type!";
721             LoaderException le = new LoaderException("Exception:", new Exception JavaDoc(msg));
722                         if (this.logger!=null){
723                             this.logger.write("full", "Error:"+le.getStackTraceAsString());
724                         }
725             throw le;
726         }
727 // if (this.logger!=null){
728
// this.logger.write("full", "\tgetVersionDb is finished.");
729
// }
730
return versionDbType;
731     }
732
733     /**
734      * This method search the named xml document, and read the value of oidDbColumnName parameter,
735      * which represents the oid name for the named database.
736      * @return oid name.
737      * @throws LoaderException
738      */

739     public String JavaDoc getOidDbColumn() throws LoaderException {
740         setLogger();
741 // if (this.logger!=null){
742
// this.logger.write("full", "\tgetOidDbColumn is started.");
743
// }
744
searchDocument = (SearchElement) SearchElement.newInstance(document);
745         NodeList JavaDoc OidDbColumn = searchDocument.getSubElementsByTagName("OidDbColumnName");
746         if (OidDbColumn.getLength() != 0) {
747             this.oidDbColumnName = OidDbColumn.item(0).getFirstChild().getNodeValue();
748         } else {
749             String JavaDoc msg = "You must cofigure yoor conf file for this Oid name!";
750             LoaderException le = new LoaderException("Exception:", new Exception JavaDoc(msg));
751                         if (this.logger!=null){
752                             this.logger.write("full", "Error:"+le.getStackTraceAsString());
753                         }
754             throw le;
755         }
756 // if (this.logger!=null){
757
// this.logger.write("full", "\tgetOidDbColumn is finished.");
758
// }
759
return oidDbColumnName;
760     }
761
762     /**
763      * This method search the named xml document, and read the value of versionDbColumnName parameter,
764      * which represents the version name of the named database.
765      * @return version name.
766      * @throws LoaderException
767      */

768     public String JavaDoc getVersionDbColumn() throws LoaderException {
769         setLogger();
770 // if (this.logger!=null){
771
// this.logger.write("full", "\tgetVersionDbColumn is started.");
772
// }
773
searchDocument = (SearchElement) SearchElement.newInstance(document);
774         NodeList JavaDoc VersionDbColumn = searchDocument.getSubElementsByTagName("VersionDbColumnName");
775         if (VersionDbColumn.getLength() != 0) {
776             this.versionDbColumnName = VersionDbColumn.item(0).getFirstChild().getNodeValue();
777         } else {
778             String JavaDoc msg = "You must cofigure yoor conf file for this Version name!";
779             LoaderException le = new LoaderException("Exception:", new Exception JavaDoc(msg));
780                         if (this.logger!=null){
781                             this.logger.write("full", "Error:"+le.getStackTraceAsString());
782                         }
783             throw le;
784         }
785 // if (this.logger!=null){
786
// this.logger.write("full", "\tgetVersionDbColumn is finished.");
787
// }
788
return versionDbColumnName;
789     }
790
791     /**
792      * This method search the named xml document, and read the value of name (Driver) parameter,
793      * which represents the driver name.
794      * @return value of parameter.
795      */

796     public String JavaDoc getDriverName() {
797         setLogger();
798 // if (this.logger!=null){
799
// this.logger.write("full", "\tgetDriverName is started.");
800
// }
801
searchDocument = (SearchElement) SearchElement.newInstance(document);
802         NodeList JavaDoc driverTag = searchDocument.getSubElementsByTagName("Driver");
803 // if (this.logger!=null){
804
// this.logger.write("full", "\tgetDriverName is finished.");
805
// }
806
return ((Element JavaDoc) driverTag.item(0)).getAttribute("name");
807
808     }
809
810     public String JavaDoc getExcludedTables() throws LoaderException {
811         setLogger();
812 // if (this.logger!=null){
813
// this.logger.write("full", "\tgetExcludedTables is started.");
814
// }
815
String JavaDoc ret = "";
816         searchDocument = (SearchElement) SearchElement.newInstance(document);
817         NodeList JavaDoc excludeTableTag = searchDocument.getSubElementsByTagName("ExcludeTables");
818         if (excludeTableTag.getLength() != 0) {
819             if (excludeTableTag.item(0).getFirstChild() != null)
820                 ret = excludeTableTag.item(0).getFirstChild().getNodeValue();
821             else
822                 ret = "";
823         } else {
824             String JavaDoc msg = "ExcludeTables tag doesn't exist in source conf file!";
825             LoaderException le = new LoaderException("Exception:", (Throwable JavaDoc) new Exception JavaDoc(msg));
826                         if (this.logger!=null){
827                                 this.logger.write("full", "Error:"+le.getStackTraceAsString());
828                         }
829             throw le;
830         }
831 // if (this.logger!=null){
832
// this.logger.write("full", "\tgetExcludedTables is finished.");
833
// }
834
return ret;
835     }
836     /**
837           * This method will set logger object
838           * @param logger
839           */

840     private void setLogger() {
841         this.logger = StandardLogger.getCentralLogger();
842     }
843 }
844
Popular Tags