View Javadoc
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.generator; 18 19 import javax.xml.parsers.DocumentBuilder; 20 import javax.xml.parsers.DocumentBuilderFactory; 21 import javax.xml.parsers.ParserConfigurationException; 22 23 import java.util.Enumeration; 24 import java.util.Hashtable; 25 import java.io.File; 26 import java.io.*; 27 import java.util.*; 28 import org.apache.xml.serialize.OutputFormat; 29 import org.apache.xml.serialize.XMLSerializer; 30 import org.apache.xml.serialize.Method; 31 32 import org.w3c.dom.Document; 33 34 import org.w3c.dom.Element; 35 36 import org.webdocwf.util.loader.LoaderException; 37 import org.webdocwf.util.loader.logging.Logger; 38 import org.webdocwf.util.loader.logging.StandardLogger; 39 40 /*** 41 * Class LoadJobWriter creates and loads LoaderJob.xml file from the input 42 * parameters and source database. 43 * @author Radoslav Dutina 44 * @version 1.0 45 */ 46 public class LoadJobWriter { 47 48 private Document document; 49 private Logger logger; 50 51 /*** 52 * Construct object LoadJobWriter with associated parameter. 53 * @param generatorParameters represents the references to InputParameter object. 54 * @throws LoaderException 55 */ 56 57 public LoadJobWriter(InputParameters generatorParameters) throws LoaderException { 58 59 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 60 try { 61 setLogger(); 62 this.logger.write("normal", "Generating of LoaderJob.olj file is started."); 63 loadJobWriter(generatorParameters, factory); 64 this.logger.write("normal", "Generating of LoaderJob.olj file is finished."); 65 } catch (ParserConfigurationException pce) { 66 // Parser with specified options can't be built 67 String msg = "Parser with specified options can't be built! Exception has occurred when parser is" + "try to parse the LoaderJob.olj file!"; 68 LoaderException le = new LoaderException(msg + "\n" + pce.getMessage(), (Throwable) pce); 69 throw le; 70 } 71 } 72 /*** 73 * This method generate LoaderJob.olj fajl 74 * @param generatorParameters 75 * @param factory 76 * @throws ParserConfigurationException 77 * @throws LoaderException 78 */ 79 private void loadJobWriter(InputParameters generatorParameters, DocumentBuilderFactory factory) throws ParserConfigurationException, LoaderException { 80 81 this.logger.write("normal", "\tloadJobWriter method is started."); 82 DocumentBuilder builder = factory.newDocumentBuilder(); 83 document = builder.newDocument(); // Create from whole cloth 84 85 // Create root element (loaderJob) 86 Element root = (Element) document.createElement("loaderJob"); 87 document.appendChild(root); 88 89 LoaderJobAttributes loaderJob = new LoaderJobAttributes(); 90 91 root.setAttribute("logMode", loaderJob.getLogMode()); 92 root.setAttribute("objectIDIncrement", loaderJob.getObjectIDIncrement()); 93 root.setAttribute("objectIDTableName", loaderJob.getObjectIDTableName()); 94 root.setAttribute("objectIDColumnName", loaderJob.getObjectIDColumnName()); 95 96 // Create child (jdbcDefaultParameters) 97 Element childRoot = (Element) document.createElement("jdbcDefaultParameters"); 98 root.appendChild(childRoot); 99 100 // Create child (jdbcSourceParameters) 101 Element childRoot2 = (Element) document.createElement("jdbcSourceParameters"); 102 childRoot.appendChild(childRoot2); 103 104 JdbcParameters sourceJdbc = new JdbcParameters("source", generatorParameters); 105 106 childRoot2.setAttribute("dbVendor", sourceJdbc.getDbVendor()); 107 childRoot2.setAttribute("driverName", sourceJdbc.getDriverName()); 108 109 // Create child (jdbcSourceParameter) 110 Hashtable sourceTable = sourceJdbc.getAllParameters(); 111 Enumeration enumSource = sourceTable.keys(); 112 while (enumSource.hasMoreElements()) { 113 Element childRoot3 = (Element) document.createElement("jdbcSourceParameter"); 114 childRoot2.appendChild(childRoot3); 115 String key = (String) enumSource.nextElement(); 116 childRoot3.setAttribute("name", key); 117 childRoot3.setAttribute("value", (String) sourceTable.get(key)); 118 } 119 120 // Create child (jdbcTargetParameters) 121 Element childRoot5 = (Element) document.createElement("jdbcTargetParameters"); 122 childRoot.appendChild(childRoot5); 123 124 JdbcParameters targetJdbc = new JdbcParameters("target", generatorParameters); 125 126 //Reading the value of AlterTablePrimaryKey parameter. 127 // generatorParameters.setAlterTablePrimaryKey(targetJdbc.getAlterTablePrimaryKey()); 128 129 childRoot5.setAttribute("dbVendor", targetJdbc.getDbVendor()); 130 childRoot5.setAttribute("driverName", targetJdbc.getDriverName()); 131 132 // Create child (jdbcTargetParameter) 133 Hashtable targetTable = targetJdbc.getAllParameters(); 134 Enumeration enumTarget = targetTable.keys(); 135 while (enumTarget.hasMoreElements()) { 136 Element childRoot6 = (Element) document.createElement("jdbcTargetParameter"); 137 childRoot5.appendChild(childRoot6); 138 String key = (String) enumTarget.nextElement(); 139 childRoot6.setAttribute("name", key); 140 childRoot6.setAttribute("value", (String) targetTable.get(key)); 141 } 142 143 Vector sqlStatement = generatorParameters.getSqlToGenerate(); 144 int sqlFileType = 0; 145 while (sqlFileType < 6) { 146 // Create child (sql) 147 if (sqlFileType == 3) { 148 // Create child (definitionInclude) 149 Element childRoot20 = (Element) document.createElement("definitionInclude"); 150 root.appendChild(childRoot20); 151 // Create child (include) 152 Element childRoot21 = (Element) document.createElement("include"); 153 childRoot20.appendChild(childRoot21); 154 155 IncludeTagAttributes includeTagAttributes = new IncludeTagAttributes(); 156 157 //relative path from LoaderJob.olj file 158 String pathXml = includeTagAttributes.getHref(); 159 pathXml.trim(); 160 childRoot21.setAttribute("href", pathXml); 161 childRoot21.setAttribute("parse", includeTagAttributes.getParse()); 162 } 163 if (sqlFileType == 4 && generatorParameters.getAlterTablePrimaryKey().equalsIgnoreCase("false")) { 164 // only for hsql database 165 } else { 166 if (generatorParameters.getRestoreMode().equalsIgnoreCase("false")) { 167 if (sqlStatement.get(sqlFileType) != null) { 168 Element childRoot10 = (Element) document.createElement("sql"); 169 root.appendChild(childRoot10); 170 SqlTagAttributes sqlTagAttributes = new SqlTagAttributes(sqlFileType); 171 childRoot10.setAttribute("name", sqlTagAttributes.getName()); 172 // childRoot10.setAttribute("logMode", sqlTagAttributes.getLogMode()); 173 childRoot10.setAttribute("commit", sqlTagAttributes.getCommit()); 174 //ZK added next line 7.5.2004 175 childRoot10.setAttribute("onErrorContinue", sqlTagAttributes.getOnErrorContinue()); 176 177 // Create child (sqlStmt) 178 Element childRoot11 = (Element) document.createElement("sqlStmt"); 179 childRoot10.appendChild(childRoot11); 180 181 // Create child (include) 182 Element childRoot12 = (Element) document.createElement("include"); 183 childRoot11.appendChild(childRoot12); 184 185 //relative path from LoaderJob.olj file 186 String pathSql = sqlTagAttributes.getHref(); 187 pathSql.trim(); 188 childRoot12.setAttribute("href", pathSql); 189 childRoot12.setAttribute("parse", sqlTagAttributes.getParse()); 190 } //end of sqlStatement.get(sqlFileType) 191 192 } else if (generatorParameters.getRestoreMode().equalsIgnoreCase("true")) { 193 //this is use only for restoring the database 194 Element childRoot10 = (Element) document.createElement("sql"); 195 root.appendChild(childRoot10); 196 SqlTagAttributes sqlTagAttributes = new SqlTagAttributes(sqlFileType); 197 childRoot10.setAttribute("name", sqlTagAttributes.getName()); 198 // childRoot10.setAttribute("logMode", sqlTagAttributes.getLogMode()); 199 childRoot10.setAttribute("commit", sqlTagAttributes.getCommit()); 200 //ZK added next line 10.5.2004 201 childRoot10.setAttribute("onErrorContinue", sqlTagAttributes.getOnErrorContinue()); 202 // Create child (sqlStmt) 203 Element childRoot11 = (Element) document.createElement("sqlStmt"); 204 childRoot10.appendChild(childRoot11); 205 206 // Create child (include) 207 Element childRoot12 = (Element) document.createElement("include"); 208 childRoot11.appendChild(childRoot12); 209 //relative path from LoaderJob.olj file 210 String pathSql = sqlTagAttributes.getHref(); 211 pathSql.trim(); 212 childRoot12.setAttribute("href", pathSql); 213 childRoot12.setAttribute("parse", sqlTagAttributes.getParse()); 214 } 215 } 216 sqlFileType++; 217 } 218 if (generatorParameters.getGenerateXml().equalsIgnoreCase("true")) { 219 try { 220 File file = null; 221 String slash = null; 222 if (generatorParameters.getGeneratorOutput().equalsIgnoreCase("")) { 223 file = new File(""); 224 slash = ""; 225 } else { 226 file = new File(generatorParameters.getGeneratorOutput()); 227 slash = "/"; 228 } 229 if (!file.exists()) 230 file.mkdirs(); 231 232 FileOutputStream os = new FileOutputStream(file + slash + "LoaderJob.olj"); 233 OutputFormat of = new OutputFormat(); //xerces apache.xml.serializer 234 of.setIndenting(true); 235 of.setIndent(4); 236 of.setMethod(Method.XML); 237 of.setPreserveSpace(false); 238 of.setLineWidth(0); 239 XMLSerializer out = new XMLSerializer(os, of); 240 241 //IOException 242 out.serialize(document); 243 } catch (Exception e) { 244 String msg = "Exception has occurred when we try to set output format for LoaderJob.olj file."; 245 //if (this.logger != null) { 246 LoaderException le = new LoaderException(msg + "\n" + e.getMessage(), (Throwable) e); 247 this.logger.write("full", "Exception has occurred when we try to set output format for LoaderJob.olj file." + "\n" + le.getStackTraceAsString()); 248 //} 249 throw le; 250 } 251 } 252 this.logger.write("normal", "\tloadJobWriter method is finished."); 253 } 254 255 /*** 256 * This method will set logger object 257 * @param logger 258 */ 259 private void setLogger() { 260 this.logger = StandardLogger.getCentralLogger(); 261 } 262 263 }

This page was automatically generated by Maven