⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 insertrowqueryset.java

📁 数据仓库工具
💻 JAVA
字号:

/**
  CounterColumns - insert auto increment values in target counter columns.

    Copyright (C) 2002-2003  Together

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

 CounterColumns.java
 Date: 11.03.2003.
 @version 1.1.0
 @author: Milosevic Sinisa sinisa@prozone.co.yu
 */

package org.webdocwf.util.loader;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;

import org.webdocwf.util.loader.transformation.Transformation;
import org.webdocwf.util.loader.transformation.Transformations;

/**
 *
 * InsertRowQuerySet class creates insert in to statement for one import definition
 * @author Radoslav Dutina
 * @version 1.0
 */
public class InsertRowQuerySet {
  private String strQuery=null;
  private String tableName=null;
  private String tableID=null;
  private Vector vecRelationColumnTargetTableName=null;
  private Vector vecRelationColumnTargetTableID=null;
  private Vector vecRelationColumnTargetColumnName=null;
  private Vector indexDummyInsertNull=new Vector();
  private Vector indexDummyInsertRelation=new Vector();
  private Vector indexDummyIsNotRelationsColumn=new Vector();
  private Vector columnNamesPstmt=new Vector();
//  private Vector columnTypesPstmt=new Vector();
  private Connection conn;
  private String oidColumnName="oid";
  private String versionColumnName="version";
//  private Hashtable sqlToJavaMap=new Hashtable();


  /**
   * Construct object InsertRowQuerySet with associated parameters.
   * @param c Connetion to source tables
   * @param vecColumnNames is Vector of column names in a target table.
   * @param vecColumnMode is Vector of column modes in a target table.
   * @param tableName is current table name
   * @param tableID is current table id
   * @param iTableInt is the number of target table
   * @param vecTempConstantColumns is Vector of column names for target table.
   * @param vecVariableTimesTableName is Vector of variable times, for target table.
   * @param vecVariableTimesTableID is Vector of variable times id, for target table.
   * @param vecVariableTimesColumnName is Vector of variable (times) column names, for target table.
   * @param vecVariableColumnTargetTableName is Vector of variable table names.
   * @param vecVariableColumnTargetTableID is Vector of variable table id.
   * @param vecVariableColumnTargetColumnName is Vector of variable column names, for target table.
   * @param vecRelationColumnTargetColumnName is Vector of relations column names, for target table.
   * @param vecRelationColumnTargetTableName is Vector of relations table names, for target table.
   * @param vecRelationColumnTargetTableID is Vector of relations table id's, for target table.
   * @param vecRelationColumnRelationMode is Vector of relations modes, for target table.
   * @param counterColumns defines Vector of number of columns
   * @param bOidLogicValue is boolean object, which decide is oid logic true or false
   * @param isTOS is boolean object, which decide is oid logic true or false
   * @throws SQLException
   * @throws NullPointerException
   * @throws Exception
   */
  public InsertRowQuerySet(Connection c,
                           Vector vecColumnNames, Vector vecColumnMode, String tableName,
                           String tableID, int iTableInt,Vector vecTempConstantColumns,
                           Vector vecVariableTimesTableName, Vector vecVariableTimesTableID,
                           Vector vecVariableTimesColumnName, Vector vecVariableColumnTargetTableName,
                           Vector vecVariableColumnTargetTableID,Vector vecVariableColumnTargetColumnName,
                           Vector vecRelationColumnTargetColumnName, Vector vecRelationColumnTargetTableName,
                           Vector vecRelationColumnTargetTableID, Vector vecRelationColumnRelationMode,
                           CounterColumns counterColumns, Transformations transformations, boolean bOidLogicValue,
                           boolean isTOS, String oidColumnName, String versionColumnName)
      throws SQLException, NullPointerException, Exception {

    this.conn=c;
//    if(this.sqlToJavaMap.size()>0)
//      this.sqlToJavaMap.clear();
//    this.sqlToJavaMap=sqlToJavaMap;

    this.oidColumnName=oidColumnName;
    this.versionColumnName=versionColumnName;
    this.tableName=tableName;
    this.tableID=tableID;
    this.vecRelationColumnTargetTableName=vecRelationColumnTargetTableName;
    this.vecRelationColumnTargetTableID=vecRelationColumnTargetTableID;
    this.vecRelationColumnTargetColumnName=vecRelationColumnTargetColumnName;
    strQuery = "insert into " + tableName;

    if(bOidLogicValue){
      if(isTOS){
        strQuery+="("+this.oidColumnName+", ";
        columnNamesPstmt.add(this.oidColumnName);

      }else{
        strQuery +="("+this.oidColumnName+","+this.versionColumnName+", ";
        columnNamesPstmt.add(this.oidColumnName);
        columnNamesPstmt.add(this.versionColumnName);

      }
    }else
      strQuery+="(";

    for (int j = 0; j < vecColumnNames.size(); j++) {
      if (!this.isRelationColumn(vecColumnNames.get(j).toString(),iTableInt)) {
        strQuery += vecColumnNames.get(j).toString() + ", ";
        columnNamesPstmt.add(vecColumnNames.get(j).toString());
        indexDummyIsNotRelationsColumn.add(String.valueOf(j));
      }
    }

    for (int p = 0; p < vecTempConstantColumns.size(); p++){
      strQuery += vecTempConstantColumns.get(p).toString() + ", ";
      columnNamesPstmt.add(vecTempConstantColumns.get(p).toString());
    }

    for (int i = 0; i < vecVariableTimesTableName.size(); i++) {
      if (vecVariableTimesTableName.get(i).toString().equalsIgnoreCase(tableName)
          && vecVariableTimesTableID.get(i).toString().equalsIgnoreCase(tableID)) {
      strQuery += vecVariableTimesColumnName.get(i).toString()
               + ", ";
           columnNamesPstmt.add(vecVariableTimesColumnName.get(i).toString());
    }
    }
    for (int i = 0; i < vecVariableColumnTargetTableName.size(); i++) {
      if (vecVariableColumnTargetTableName.get(i).toString().equalsIgnoreCase(tableName)
          && vecVariableColumnTargetTableID.get(i).toString().equalsIgnoreCase(tableID)) {
      strQuery += vecVariableColumnTargetColumnName.get(i).toString()
               + ", ";
           columnNamesPstmt.add(vecVariableColumnTargetColumnName.get(i).toString());
    }
    }
    for (int i = 0; i < vecRelationColumnTargetColumnName.size(); i++) {
      if (vecRelationColumnTargetTableName.get(i).toString().equalsIgnoreCase(tableName)
          && vecRelationColumnTargetTableID.get(i).toString().equalsIgnoreCase(tableID)) {
        strQuery += vecRelationColumnTargetColumnName.get(i).toString()+ ", ";
        columnNamesPstmt.add(vecRelationColumnTargetColumnName.get(i).toString());
      }
    }

    Vector counterColNames = counterColumns.getTargetColumnName(tableName,tableID);

    for (int i = 0; i < counterColNames.size(); i++) {
      if(counterColNames.get(i)!=null)
        strQuery += counterColNames.get(i).toString() + ", ";
      columnNamesPstmt.add(counterColNames.get(i).toString());
    }
    Vector subCounterColNames = counterColumns.getSubTargetColumnName(tableName,tableID);
    for (int i = 0; i < subCounterColNames.size(); i++) {
      if(subCounterColNames.get(i)!=null)
        strQuery += subCounterColNames.get(i).toString() + ", ";
        columnNamesPstmt.add(subCounterColNames.get(i).toString());
    }
    //sinisa add transformations
    ArrayList trans = transformations.getTransformations();
    Iterator iTrans = trans.iterator();
      
    while(iTrans.hasNext()) {
         Transformation transformation = (Transformation)iTrans.next();
//		   String transTableID = transformation.getTargetTableID();
//		   if( !transTableID.equals(tableID) )
//		   	continue;
         Vector transColNames = transformation.getTargetColumnNames(Integer.parseInt(tableID));
         for (int i = 0; i < transColNames.size(); i++) {
            if(transColNames.get(i)!=null)
              strQuery += transColNames.get(i).toString() + ", ";
              columnNamesPstmt.add(transColNames.get(i).toString());
         }
   }
 
  }

  /**
   * This method read the value of strQuery parameter
   * @return value of paramter
   */
  public String getStrQuery(){
    strQuery = strQuery.substring(0, strQuery.length() - 2);
    return strQuery;
  }

  /**
   * This method read the value of indexDummyIsNotRelationsColumn parameter
   * @return value of paramter
   */
  public Vector getIndexDummyIsNotRelationsColumn(){
    return indexDummyIsNotRelationsColumn;
  }

  /**
   * This method construct prepare statement
   * @return string representation of prepareStatement
   * @throws Exception
   */
  public PreparedStatement getPreparedStatementForInsert() throws Exception{

    String strPstmt="insert into "+this.tableName+" (";
    int count=columnNamesPstmt.size();
    for (int i = 0; i < count; i++) {
      if(i!=count-1)
        strPstmt+=columnNamesPstmt.get(i).toString()+",";
      else
        strPstmt+=columnNamesPstmt.get(i).toString()+")";
    }
    strPstmt+=" VALUES (";
    for (int i = 0; i < count; i++) {
      if(i!=count-1)
        strPstmt+="?,";
      else
        strPstmt+="?)";
    }
    PreparedStatement pstmt;
    try{
      pstmt = this.conn.prepareStatement(strPstmt);
    }catch(Exception e){
      throw e;
    }
    return pstmt;
  }

//  public Hashtable getPreparedStatemetTypes() throws LoaderException{
//    Hashtable pstmtTypes=new Hashtable();
//    try {
//      Statement stmt=conn.createStatement();
//      ResultSet rs=stmt.executeQuery("select * from "+this.tableName);
//      int columnCount=rs.getMetaData().getColumnCount();
//      for (int i = 1; i < columnCount+1; i++) {
//        String columnName=rs.getMetaData().getColumnName(i).toUpperCase();
//        String columnType=rs.getMetaData().getColumnTypeName(i).toUpperCase();
//        String javaType=(String)sqlToJavaMap.get(columnType);
//        pstmtTypes.put(columnName,javaType);
//      }
//
//      stmt.close();
//      rs.close();
//    }
//    catch (Exception ex) {
//      throw new LoaderException(ex.getMessage());
//    }
//    return pstmtTypes;
//  }

  /**
   * This method read value form columnNamesPstmt parameter
   * @return value of parameter
   */
  public Vector getColumnNames(){
    return this.columnNamesPstmt;
  }


  private boolean isRelationColumn (String strColumnName, int iTable) {
    boolean bFind = false;
    endFor: for (int i = 0; i < this.vecRelationColumnTargetTableName.size(); i++) {
      if (this.vecRelationColumnTargetTableName.get(i).toString().equalsIgnoreCase(tableName)
          && this.vecRelationColumnTargetTableID.get(i).toString().equalsIgnoreCase(tableID)
          && this.vecRelationColumnTargetColumnName.get(i).toString().equalsIgnoreCase(strColumnName)) {
      bFind = true;
      break  endFor;
    }
    }
    return  bFind;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -