View Javadoc
1 2 /*** 3 CounterColumns - insert auto increment values in target counter columns. 4 5 Copyright (C) 2002-2003 Together 6 7 This library is free software; you can redistribute it and/or 8 modify it under the terms of the GNU Lesser General Public 9 License as published by the Free Software Foundation; either 10 version 2.1 of the License, or (at your option) any later version. 11 12 This library is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 Lesser General Public License for more details. 16 17 You should have received a copy of the GNU Lesser General Public 18 License along with this library; if not, write to the Free Software 19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 21 CounterColumns.java 22 Date: 11.03.2003. 23 @version 1.1.0 24 @author: Milosevic Sinisa sinisa@prozone.co.yu 25 */ 26 27 package org.webdocwf.util.loader; 28 29 import java.sql.Connection; 30 import java.sql.PreparedStatement; 31 import java.sql.SQLException; 32 import java.util.ArrayList; 33 import java.util.Iterator; 34 import java.util.Vector; 35 36 import org.webdocwf.util.loader.transformation.Transformation; 37 import org.webdocwf.util.loader.transformation.Transformations; 38 39 /*** 40 * 41 * InsertRowQuerySet class creates insert in to statement for one import definition 42 * @author Radoslav Dutina 43 * @version 1.0 44 */ 45 public class InsertRowQuerySet { 46 private String strQuery=null; 47 private String tableName=null; 48 private String tableID=null; 49 private Vector vecRelationColumnTargetTableName=null; 50 private Vector vecRelationColumnTargetTableID=null; 51 private Vector vecRelationColumnTargetColumnName=null; 52 private Vector indexDummyInsertNull=new Vector(); 53 private Vector indexDummyInsertRelation=new Vector(); 54 private Vector indexDummyIsNotRelationsColumn=new Vector(); 55 private Vector columnNamesPstmt=new Vector(); 56 // private Vector columnTypesPstmt=new Vector(); 57 private Connection conn; 58 private String oidColumnName="oid"; 59 private String versionColumnName="version"; 60 // private Hashtable sqlToJavaMap=new Hashtable(); 61 62 63 /*** 64 * Construct object InsertRowQuerySet with associated parameters. 65 * @param c Connetion to source tables 66 * @param vecColumnNames is Vector of column names in a target table. 67 * @param vecColumnMode is Vector of column modes in a target table. 68 * @param tableName is current table name 69 * @param tableID is current table id 70 * @param iTableInt is the number of target table 71 * @param vecTempConstantColumns is Vector of column names for target table. 72 * @param vecVariableTimesTableName is Vector of variable times, for target table. 73 * @param vecVariableTimesTableID is Vector of variable times id, for target table. 74 * @param vecVariableTimesColumnName is Vector of variable (times) column names, for target table. 75 * @param vecVariableColumnTargetTableName is Vector of variable table names. 76 * @param vecVariableColumnTargetTableID is Vector of variable table id. 77 * @param vecVariableColumnTargetColumnName is Vector of variable column names, for target table. 78 * @param vecRelationColumnTargetColumnName is Vector of relations column names, for target table. 79 * @param vecRelationColumnTargetTableName is Vector of relations table names, for target table. 80 * @param vecRelationColumnTargetTableID is Vector of relations table id's, for target table. 81 * @param vecRelationColumnRelationMode is Vector of relations modes, for target table. 82 * @param counterColumns defines Vector of number of columns 83 * @param bOidLogicValue is boolean object, which decide is oid logic true or false 84 * @param isTOS is boolean object, which decide is oid logic true or false 85 * @throws SQLException 86 * @throws NullPointerException 87 * @throws Exception 88 */ 89 public InsertRowQuerySet(Connection c, 90 Vector vecColumnNames, Vector vecColumnMode, String tableName, 91 String tableID, int iTableInt,Vector vecTempConstantColumns, 92 Vector vecVariableTimesTableName, Vector vecVariableTimesTableID, 93 Vector vecVariableTimesColumnName, Vector vecVariableColumnTargetTableName, 94 Vector vecVariableColumnTargetTableID,Vector vecVariableColumnTargetColumnName, 95 Vector vecRelationColumnTargetColumnName, Vector vecRelationColumnTargetTableName, 96 Vector vecRelationColumnTargetTableID, Vector vecRelationColumnRelationMode, 97 CounterColumns counterColumns, Transformations transformations, boolean bOidLogicValue, 98 boolean isTOS, String oidColumnName, String versionColumnName) 99 throws SQLException, NullPointerException, Exception { 100 101 this.conn=c; 102 // if(this.sqlToJavaMap.size()>0) 103 // this.sqlToJavaMap.clear(); 104 // this.sqlToJavaMap=sqlToJavaMap; 105 106 this.oidColumnName=oidColumnName; 107 this.versionColumnName=versionColumnName; 108 this.tableName=tableName; 109 this.tableID=tableID; 110 this.vecRelationColumnTargetTableName=vecRelationColumnTargetTableName; 111 this.vecRelationColumnTargetTableID=vecRelationColumnTargetTableID; 112 this.vecRelationColumnTargetColumnName=vecRelationColumnTargetColumnName; 113 strQuery = "insert into " + tableName; 114 115 if(bOidLogicValue){ 116 if(isTOS){ 117 strQuery+="("+this.oidColumnName+", "; 118 columnNamesPstmt.add(this.oidColumnName); 119 120 }else{ 121 strQuery +="("+this.oidColumnName+","+this.versionColumnName+", "; 122 columnNamesPstmt.add(this.oidColumnName); 123 columnNamesPstmt.add(this.versionColumnName); 124 125 } 126 }else 127 strQuery+="("; 128 129 for (int j = 0; j < vecColumnNames.size(); j++) { 130 if (!this.isRelationColumn(vecColumnNames.get(j).toString(),iTableInt)) { 131 strQuery += vecColumnNames.get(j).toString() + ", "; 132 columnNamesPstmt.add(vecColumnNames.get(j).toString()); 133 indexDummyIsNotRelationsColumn.add(String.valueOf(j)); 134 } 135 } 136 137 for (int p = 0; p < vecTempConstantColumns.size(); p++){ 138 strQuery += vecTempConstantColumns.get(p).toString() + ", "; 139 columnNamesPstmt.add(vecTempConstantColumns.get(p).toString()); 140 } 141 142 for (int i = 0; i < vecVariableTimesTableName.size(); i++) { 143 if (vecVariableTimesTableName.get(i).toString().equalsIgnoreCase(tableName) 144 && vecVariableTimesTableID.get(i).toString().equalsIgnoreCase(tableID)) { 145 strQuery += vecVariableTimesColumnName.get(i).toString() 146 + ", "; 147 columnNamesPstmt.add(vecVariableTimesColumnName.get(i).toString()); 148 } 149 } 150 for (int i = 0; i < vecVariableColumnTargetTableName.size(); i++) { 151 if (vecVariableColumnTargetTableName.get(i).toString().equalsIgnoreCase(tableName) 152 && vecVariableColumnTargetTableID.get(i).toString().equalsIgnoreCase(tableID)) { 153 strQuery += vecVariableColumnTargetColumnName.get(i).toString() 154 + ", "; 155 columnNamesPstmt.add(vecVariableColumnTargetColumnName.get(i).toString()); 156 } 157 } 158 for (int i = 0; i < vecRelationColumnTargetColumnName.size(); i++) { 159 if (vecRelationColumnTargetTableName.get(i).toString().equalsIgnoreCase(tableName) 160 && vecRelationColumnTargetTableID.get(i).toString().equalsIgnoreCase(tableID)) { 161 strQuery += vecRelationColumnTargetColumnName.get(i).toString()+ ", "; 162 columnNamesPstmt.add(vecRelationColumnTargetColumnName.get(i).toString()); 163 } 164 } 165 166 Vector counterColNames = counterColumns.getTargetColumnName(tableName,tableID); 167 168 for (int i = 0; i < counterColNames.size(); i++) { 169 if(counterColNames.get(i)!=null) 170 strQuery += counterColNames.get(i).toString() + ", "; 171 columnNamesPstmt.add(counterColNames.get(i).toString()); 172 } 173 Vector subCounterColNames = counterColumns.getSubTargetColumnName(tableName,tableID); 174 for (int i = 0; i < subCounterColNames.size(); i++) { 175 if(subCounterColNames.get(i)!=null) 176 strQuery += subCounterColNames.get(i).toString() + ", "; 177 columnNamesPstmt.add(subCounterColNames.get(i).toString()); 178 } 179 //sinisa add transformations 180 ArrayList trans = transformations.getTransformations(); 181 Iterator iTrans = trans.iterator(); 182 183 while(iTrans.hasNext()) { 184 Transformation transformation = (Transformation)iTrans.next(); 185 // String transTableID = transformation.getTargetTableID(); 186 // if( !transTableID.equals(tableID) ) 187 // continue; 188 Vector transColNames = transformation.getTargetColumnNames(Integer.parseInt(tableID)); 189 for (int i = 0; i < transColNames.size(); i++) { 190 if(transColNames.get(i)!=null) 191 strQuery += transColNames.get(i).toString() + ", "; 192 columnNamesPstmt.add(transColNames.get(i).toString()); 193 } 194 } 195 196 } 197 198 /*** 199 * This method read the value of strQuery parameter 200 * @return value of paramter 201 */ 202 public String getStrQuery(){ 203 strQuery = strQuery.substring(0, strQuery.length() - 2); 204 return strQuery; 205 } 206 207 /*** 208 * This method read the value of indexDummyIsNotRelationsColumn parameter 209 * @return value of paramter 210 */ 211 public Vector getIndexDummyIsNotRelationsColumn(){ 212 return indexDummyIsNotRelationsColumn; 213 } 214 215 /*** 216 * This method construct prepare statement 217 * @return string representation of prepareStatement 218 * @throws Exception 219 */ 220 public PreparedStatement getPreparedStatementForInsert() throws Exception{ 221 222 String strPstmt="insert into "+this.tableName+" ("; 223 int count=columnNamesPstmt.size(); 224 for (int i = 0; i < count; i++) { 225 if(i!=count-1) 226 strPstmt+=columnNamesPstmt.get(i).toString()+","; 227 else 228 strPstmt+=columnNamesPstmt.get(i).toString()+")"; 229 } 230 strPstmt+=" VALUES ("; 231 for (int i = 0; i < count; i++) { 232 if(i!=count-1) 233 strPstmt+="?,"; 234 else 235 strPstmt+="?)"; 236 } 237 PreparedStatement pstmt; 238 try{ 239 pstmt = this.conn.prepareStatement(strPstmt); 240 }catch(Exception e){ 241 throw e; 242 } 243 return pstmt; 244 } 245 246 // public Hashtable getPreparedStatemetTypes() throws LoaderException{ 247 // Hashtable pstmtTypes=new Hashtable(); 248 // try { 249 // Statement stmt=conn.createStatement(); 250 // ResultSet rs=stmt.executeQuery("select * from "+this.tableName); 251 // int columnCount=rs.getMetaData().getColumnCount(); 252 // for (int i = 1; i < columnCount+1; i++) { 253 // String columnName=rs.getMetaData().getColumnName(i).toUpperCase(); 254 // String columnType=rs.getMetaData().getColumnTypeName(i).toUpperCase(); 255 // String javaType=(String)sqlToJavaMap.get(columnType); 256 // pstmtTypes.put(columnName,javaType); 257 // } 258 // 259 // stmt.close(); 260 // rs.close(); 261 // } 262 // catch (Exception ex) { 263 // throw new LoaderException(ex.getMessage()); 264 // } 265 // return pstmtTypes; 266 // } 267 268 /*** 269 * This method read value form columnNamesPstmt parameter 270 * @return value of parameter 271 */ 272 public Vector getColumnNames(){ 273 return this.columnNamesPstmt; 274 } 275 276 277 private boolean isRelationColumn (String strColumnName, int iTable) { 278 boolean bFind = false; 279 endFor: for (int i = 0; i < this.vecRelationColumnTargetTableName.size(); i++) { 280 if (this.vecRelationColumnTargetTableName.get(i).toString().equalsIgnoreCase(tableName) 281 && this.vecRelationColumnTargetTableID.get(i).toString().equalsIgnoreCase(tableID) 282 && this.vecRelationColumnTargetColumnName.get(i).toString().equalsIgnoreCase(strColumnName)) { 283 bFind = true; 284 break endFor; 285 } 286 } 287 return bFind; 288 } 289 }

This page was automatically generated by Maven