View Javadoc
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 java.sql.Connection; 26 import java.sql.ResultSet; 27 import java.util.ArrayList; 28 import java.util.Arrays; 29 import java.util.List; 30 31 import org.webdocwf.util.loader.LoaderException; 32 import org.webdocwf.util.loader.logging.Logger; 33 import org.webdocwf.util.loader.logging.StandardLogger; 34 35 /*** 36 * TableDesignReader class read the data which describe database tables. 37 * @author Radoslav Dutina 38 * @version 1.0 39 */ 40 public class TableDesignReader { 41 42 private static List listColumnNames = null; 43 private static List listTargetTableNames = null; 44 private static List listTargetTableID = null; 45 private static List listColumnType = null; 46 private static List listColumnLenght = null; 47 private static List listAllowNulls = null; 48 private Logger logger; 49 50 private ImportDefinitionAttributes importDefinitionAttributes = new ImportDefinitionAttributes(); 51 private MappingTypeData mappingTypeData; 52 /*** 53 * Construct object TableDesignReader with associated parameters. 54 * @param generatorParameters represents the references to InputParameter object. 55 * @param tableName is name of the table form which we retrieve data. 56 * @param conn is the named connection. 57 * @param catalogName is the name of the current database. 58 * @throws LoaderException 59 */ 60 61 public TableDesignReader(String tableName, Connection conn, String catalogName, InputParameters generatorParameters) throws LoaderException { 62 setLogger(); 63 this.logger.write("full", "TableDesignReader is started."); 64 listColumnNames = new ArrayList(); 65 listTargetTableNames = new ArrayList(); 66 listTargetTableID = new ArrayList(); 67 listColumnType = new ArrayList(); 68 listColumnLenght = new ArrayList(); 69 listAllowNulls = new ArrayList(); 70 71 importDefinitionAttributes.setName(tableName); 72 importDefinitionAttributes.setTableName(tableName); 73 74 try { 75 if(generatorParameters.getSourceType() != null && 76 (generatorParameters.getSourceType().equals("Hsqldb") || 77 generatorParameters.getSourceType().equals("HypersonicSQL") || 78 generatorParameters.getSourceType().equals("DB2")) 79 ) { 80 catalogName = null; 81 } 82 ResultSet rs = conn.getMetaData().getColumns(catalogName, null, tableName, "%"); 83 84 while (rs.next()) { 85 listColumnNames.add(rs.getString(4)); 86 listTargetTableNames.add(tableName); 87 listTargetTableID.add("0"); 88 //if types of databases are same, do not perform data type transformation 89 if (generatorParameters.getSourceType().equalsIgnoreCase(generatorParameters.getTargetType())) { 90 listColumnType.add(rs.getString(6)); 91 } else { 92 mappingTypeData = new MappingTypeData(rs.getString(6), generatorParameters); 93 listColumnType.add(mappingTypeData.getSQLType()); 94 } 95 if (generatorParameters.getIsDecimal(rs.getString(6)).equalsIgnoreCase("true") && 96 generatorParameters.getHasSize(rs.getString(6)).equalsIgnoreCase("true")) { 97 //TODO ZK change this 8.7 2004 because of problem with decimal type on DB2 98 if ((generatorParameters.getTargetType()).equalsIgnoreCase("DB2")) { 99 int lenght = new Integer(rs.getString(7)).intValue(); 100 int dec = new Integer(rs.getString(9)).intValue(); 101 int result = lenght + dec; 102 listColumnLenght.add(" (" + result + "," + rs.getString(9) + ") "); 103 } else { 104 listColumnLenght.add(" (" + rs.getString(7) + "," + rs.getString(9) + ") "); 105 } 106 } else if (generatorParameters.getHasSize(rs.getString(6)).equalsIgnoreCase("false")) { 107 108 listColumnLenght.add(" "); 109 110 } else { 111 //ZK change this 5.5.2004 112 listColumnLenght.add("(" + rs.getString(7) + ") "); 113 // listColumnLenght.add(rs.getString(7)); 114 } 115 116 if (rs.getString(18).equalsIgnoreCase("YES")) { 117 listAllowNulls.add(""); 118 } else { 119 listAllowNulls.add("NOT NULL"); 120 } 121 } 122 123 importDefinitionAttributes.setTagSourceColumnName(getColumnNames()); 124 importDefinitionAttributes.setTagTargetColumnName(getColumnNames()); 125 importDefinitionAttributes.setTagTargetTableName(getTargetTableNames()); 126 importDefinitionAttributes.setTagTargetTableID(getTargetTableID()); 127 importDefinitionAttributes.setTagColumnType(getColumnType()); 128 importDefinitionAttributes.setTagAllowNulls(getAllowNulls()); 129 importDefinitionAttributes.setTagColumnLenght(getColumnLenght()); 130 131 rs.close(); 132 133 } catch (java.sql.SQLException e) { 134 String msg = "Can't get the connection, to " + tableName + " table. "; 135 LoaderException le = new LoaderException(msg + e.getMessage(), (Throwable) e); 136 this.logger.write("full", "Exception:" + msg + "\n" + le.getStackTraceAsString()); 137 throw le; 138 } catch (Exception e) { 139 String msg = "Exception in class TableDesignReader! "; 140 LoaderException le = new LoaderException(msg + e.getMessage(), (Throwable) e); 141 this.logger.write("full", "Exception:" + msg + "\n" + le.getStackTraceAsString()); 142 throw le; 143 } 144 this.logger.write("full", "TableDesignReader is finished."); 145 } 146 147 /*** 148 * This method read value of importDefinitionAttributes parameters. 149 * @return references to ImportDefinitionAttributes objects. 150 */ 151 public ImportDefinitionAttributes getImportDefinition() { 152 return importDefinitionAttributes; 153 } 154 155 /*** 156 * This method sets value of listColumnNames parameters. 157 * @param list_ColumnNames is value of parameters. 158 */ 159 public static void setColumnNames(String[] list_ColumnNames) { 160 listColumnNames = Arrays.asList(list_ColumnNames); 161 } 162 163 /*** 164 * This method read value of listColumnNames parameters. 165 * @return value of parameters. 166 */ 167 public static String[] getColumnNames() { 168 String[] ret = new String[listColumnNames.size()]; 169 listColumnNames.toArray(ret); 170 return ret; 171 } 172 173 /*** 174 * This method sets value of listTargetTableNames parameters. 175 * @param list_TargetTableNames is value of parameters. 176 */ 177 public static void setTargetTableNames(String[] list_TargetTableNames) { 178 listTargetTableNames = Arrays.asList(list_TargetTableNames); 179 } 180 181 /*** 182 * This method read value of listTargetTableNames parameters. 183 * @return value of parameters. 184 */ 185 public static String[] getTargetTableNames() { 186 String[] ret = new String[listTargetTableNames.size()]; 187 listTargetTableNames.toArray(ret); 188 return ret; 189 } 190 191 /*** 192 * This method sets value of listTargetTableID parameters. 193 * @param list_TargetTableID is value of parameter. 194 */ 195 public static void setTargetTableID(String[] list_TargetTableID) { 196 listTargetTableID = Arrays.asList(list_TargetTableID); 197 } 198 199 /*** 200 * This method read value of listTargetTableID parameters. 201 * @return value of parameters. 202 */ 203 public static String[] getTargetTableID() { 204 String[] ret = new String[listTargetTableID.size()]; 205 listTargetTableID.toArray(ret); 206 return ret; 207 } 208 209 /*** 210 * This method sets value of listColumnType parameters. 211 * @param list_ColumnType is value of parameters. 212 */ 213 public static void setColumnType(String[] list_ColumnType) { 214 listColumnType = Arrays.asList(list_ColumnType); 215 } 216 217 /*** 218 * This method read value of listColumnType parameters. 219 * @return value of parameters. 220 */ 221 public static String[] getColumnType() { 222 String[] ret = new String[listColumnType.size()]; 223 listColumnType.toArray(ret); 224 return ret; 225 } 226 227 /*** 228 * This method sets value of listColumnLenght parameters. 229 * @param list_ColumnLenght is value of parameter. 230 */ 231 public static void setColumnLenght(String[] list_ColumnLenght) { 232 listColumnLenght = Arrays.asList(list_ColumnLenght); 233 } 234 235 /*** 236 * This method read value of listColumnLenght parameters. 237 * @return value of parameters. 238 */ 239 public static String[] getColumnLenght() { 240 String[] ret = new String[listColumnLenght.size()]; 241 listColumnLenght.toArray(ret); 242 return ret; 243 } 244 245 /*** 246 * This method sets value of listAllowNulls parameters. 247 * @param list_AllowNulls is value of parameters. 248 */ 249 public static void setAllowNulls(String[] list_AllowNulls) { 250 listAllowNulls = Arrays.asList(list_AllowNulls); 251 } 252 253 /*** 254 * This method read value of listAllowNulls parameters. 255 * @return value of parameters. 256 */ 257 public static String[] getAllowNulls() { 258 String[] ret = new String[listAllowNulls.size()]; 259 listAllowNulls.toArray(ret); 260 return ret; 261 } 262 /*** 263 * This method will set logger object 264 * @param logger 265 */ 266 private void setLogger() { 267 this.logger = StandardLogger.getCentralLogger(); 268 } 269 }

This page was automatically generated by Maven