Ian在北京做的CFCA的Java代码

简介: Ian在北京做的CFCA的Java代码
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import com.sap.conn.jco.JCoFunction;
import com.sap.conn.jco.JCoTable;
class CFCAFunctionHandler 
{
  private JCoFunction jFunction = null;
  //private final String remote_prefix = "sr1.";
  //private final String local_prefix = "sr2.";
  private final String remote_prefix = "";
  private final String local_prefix = "";
  //AND ( HEADER.CREATED_BY = 'PURCHMANAGER' OR HEADER.CREATED_BY = 'KAPOORK' )
  //AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
  private String user1 = "PURCHASER_US";
  private String user2 = "KAPOORK";
  public CFCAFunctionHandler(JCoFunction function)
  {
    try 
    {          
      jFunction = function;
      System.out.println("CFCAFunctionHandler");
        } 
    catch (Exception ex) 
        {
            System.out.println("Initialized Error!");
            System.exit(-1);
        }
  }
  public void Dowork()
  {
         if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_GET_RFX_DETAIL))
           RetrieveRFxDetailInformation();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_UPDATE_QUTO_PRICE))
           UpdateQuotationPrice();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_GET_RFX_LIST))
           RetrieveRFxListInfo();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_GET_QUOT_LIST))
           RetrieveQuotListInfo();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_GET_QUOT_ITEM_LIST))
           RetrieveQuotItemListInfo();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_GET_QUOT_ITEM_DETAIL))
           RetrieveQuotItemDetailInfo();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_SYNC_FROM_REMOTE))
           TableSyncRead();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_SYNC_TO_REMOTE))
           TableSyncWrite();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_CLEAR_LOCAL_DATA))
           ClearLocalData();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_SYNC_RFX))
           RFxSyncRead();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_WRITE_RFX))
           RFxSyncWrite();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_RESPONSE_WRITE))
           rfxResponseWrite();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_PUBLISH))
           rfxPublish();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_BRIEF_READ))
           rfxBriefRead();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_BRIEF_WRITE))
           rfxBriefWrite();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_ITEM_READ))
             rfxItemRead();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_BRIEF_ID_READ))
             rfxBriefIDRead();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_SUCCEED_READ))
           rfxSucceedRead();
         else if ( jFunction.getName().equalsIgnoreCase(CFCAServer.FUNC_RFX_SUCCEED_DETAIL))
           rfxSucceedDetail();
  }
  public void RetrieveRFxListInfo()
  {
    try {
      //Get input Parameter
      JCoTable cg_table = jFunction.getChangingParameterList().getTable("OUT_RFX_LIST");
      //Connect to DB
      DBFactory factory = new DBFactory();
      Connection con = factory.getConnection();
      PreparedStatement ps = null;
      ps = con.prepareStatement("select GUID, OBJECT_ID, DESCRIPTION from sr1.CRMD_ORDERADM_H where CLIENT = ? and OBJECT_TYPE = ?");
      ps.setString(1, "800");
      ps.setString(2, "BUS2200");
      ResultSet queryResult = ps.executeQuery();
      String lv_guid = "";
      String lv_description = "";
      String lv_object_id = "";
      int count = 0;
      while (queryResult.next()) {
        count++;
        lv_guid = queryResult.getString(1);
        lv_object_id = queryResult.getString(2);
        lv_description = queryResult.getString(3);
        System.out.println("GUID:" + lv_guid);
        System.out.println("Description:" + lv_description);
        System.out.println("Object_ID:" + lv_object_id);
        cg_table.appendRow();
        cg_table.setValue("OBJECT_ID", lv_object_id);
        cg_table.setValue("GUID", lv_guid);
        cg_table.setValue("DESCRIPTION", lv_description);
      }
      jFunction.getExportParameterList().setValue("OUT_RFX_COUNT", count);
      jFunction.getChangingParameterList().setValue("OUT_RFX_LIST",cg_table);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  public void RetrieveQuotListInfo()
  {
    try {     //Get input Parameter
      //JCoTable cg_table = jFunction.getChangingParameterList().getTable("OUT_RFX_LIST");
      JCoTable cg_table = jFunction.getExportParameterList().getTable("OUT_QUOT_LIST");
      //Connect to DB
      DBFactory factory = new DBFactory();
      Connection con = factory.getConnection();
      PreparedStatement ps = null;
      ps = con.prepareStatement("select GUID, OBJECT_ID, DESCRIPTION from sr1.CRMD_ORDERADM_H where CLIENT = ? and OBJECT_TYPE = ?");
      ps.setString(1, "800");
      ps.setString(2, "BUS2202");
      ResultSet queryResult = ps.executeQuery();
      String lv_guid = "";
      String lv_description = "";
      String lv_object_id = "";
      int count = 0;
      while (queryResult.next()) {
        count++;
        lv_guid = queryResult.getString(1);
        lv_object_id = queryResult.getString(2);
        lv_description = queryResult.getString(3);
        System.out.println("GUID:" + lv_guid);
        System.out.println("Description:" + lv_description);
        System.out.println("Object_ID:" + lv_object_id);
        cg_table.appendRow();
        cg_table.setValue("OBJECT_ID", lv_object_id);
        cg_table.setValue("GUID", lv_guid);
        cg_table.setValue("DESCRIPTION", lv_description);
      }
      jFunction.getExportParameterList().setValue("OUT_QUOT_COUNT", count);
      jFunction.getExportParameterList().setValue("OUT_QUOT_LIST",cg_table);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  public void RetrieveQuotItemListInfo()
  {
    try {
      //Get input Parameter
      String lv_quot_id = jFunction.getImportParameterList().getString("IN_QUOT_ID");
      JCoTable cg_table = jFunction.getExportParameterList().getTable("OUT_QUOT_ITEM_LIST");
      //Connect to DB
      DBFactory factory = new DBFactory();
      Connection con = factory.getConnection();
      PreparedStatement ps = null;
      //Retrieve GUID for Quotation Header
      ps = con.prepareStatement("select GUID from sr1.CRMD_ORDERADM_H where CLIENT = ? and OBJECT_ID = ?");
      ps.setString(1, "800");
      ps.setString(2, lv_quot_id);
      ResultSet queryResult = ps.executeQuery();
      byte[] lv_guid = new byte[0];
      if (queryResult.next()) {
        lv_guid = queryResult.getBytes(1);
      }
      queryResult.close();
      ps = con.prepareStatement("select GUID, DESCRIPTION from sr1.CRMD_ORDERADM_I where CLIENT = ? and HEADER = ?");
      ps.setString(1, "800");
      //InputStream lv_bytes_guid = new ByteArrayInputStream(lv_guid);
      //ps.setBinaryStream(2, lv_bytes_guid, 16);
      ps.setBytes(2, lv_guid);
      queryResult = ps.executeQuery();
      String lv_item_guid = "";
      String lv_product_id = "";
      int count = 0;
      while (queryResult.next()) {
        count++;
        lv_item_guid = queryResult.getString(1);
        lv_product_id = queryResult.getString(2);
        System.out.println("GUID:" + lv_item_guid);
        System.out.println("Description:" + lv_product_id);
        cg_table.appendRow();
        cg_table.setValue("DESCRIPTION", lv_product_id);
        cg_table.setValue("GUID", lv_item_guid);
      }
      jFunction.getExportParameterList().setValue("OUT_QUOT_ITEM_COUNT", count);
      jFunction.getExportParameterList().setValue("OUT_QUOT_ITEM_LIST",cg_table);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  public void UpdateQuotationPrice()
  {
    try {
      //Get input Parameter
      //String lv_item_guid = jFunction.getImportParameterList().getString("IN_RFX_ITEM_GUID");
      byte[] lv_item_guid = jFunction.getImportParameterList().getByteArray("IN_RFX_ITEM_GUID");
      double lv_price = jFunction.getImportParameterList().getDouble("IN_NET_PRICE");
      System.out.println("Price:" + lv_price);
      //Connect to DB
      DBFactory factory = new DBFactory();
      Connection con = factory.getConnection();
      PreparedStatement ps = null;
      //Retrieve quantity from table BBP_PDIGP
      ps = con.prepareStatement("select QUANTITY from sr1.BBP_PDIGP where CLIENT = ? and GUID = ?");
      ps.setString(1, "800");
      //InputStream lv_bytes_guid = new ByteArrayInputStream(lv_item_guid);
      //ps.setBinaryStream(2, lv_bytes_guid, 16);
      ps.setBytes(2, lv_item_guid);
      ResultSet queryResult = ps.executeQuery();
      double lv_quantity = 0;
      if (queryResult.next()) {
        lv_quantity = queryResult.getDouble(1);
        System.out.println("Quantity:" + lv_quantity);
      }
      queryResult.close();
      ps.close();
      ps = con.prepareStatement("update sr1.BBP_PDIGP set PRICE = ? , VALUE = ? where GUID = ? and CLIENT = ?");
      ps.setDouble(1, lv_price);
      ps.setDouble(2, lv_price*lv_quantity);
      //InputStream lv_bytes_guid1 = new ByteArrayInputStream(lv_item_guid);
      //ps.setBinaryStream(3, lv_bytes_guid1, 16);
      ps.setBytes(3, lv_item_guid);
      ps.setString(4, "800");
      System.out.println("before:");
      //ps.executeUpdate();
      int result1 = ps.executeUpdate();
      System.out.println("test result:" + result1);
      ps = con.prepareStatement("update sr1.BBP_PDISS set PS_VALUE_RU = ? where GUID = ? and CLIENT = ?");
      ps.setDouble(1, lv_price*lv_quantity);
      //InputStream lv_bytes_guid2 = new ByteArrayInputStream(lv_item_guid);
      //ps.setBinaryStream(2, lv_bytes_guid2, 16);
      ps.setBytes(2, lv_item_guid);
      ps.setString(3, "800");
      int result2 = ps.executeUpdate();
      jFunction.getExportParameterList().setValue("OUT_RC",result1+result2);
      //jFunction.getExportParameterList().setValue("OUT_RC",result2);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  public void TableSyncWrite()
  {
    String lv_table_name = jFunction.getImportParameterList().getString("IN_TABLE_NAME");
    JCoTable lt_keys = jFunction.getImportParameterList().getTable("IN_TABLE_KEYS");
    if(lv_table_name.equals("CFX_FOL")){
      Sync_CFX_FOL();
      return;
    }
    try {
      //Get input Parameter
      //Retrieve keys from input parameters
      String[] str_keys = new String[lt_keys.getNumRows()];
      String str_condition = " where ";
      System.out.print("Key for table:");
      for (int i = 0; i < lt_keys.getNumRows();i++)
        {
        lt_keys.setRow(i);
        str_keys[i] = lt_keys.getString(0);
        System.out.print(str_keys[i]+" ");
        str_condition = str_condition + ((i==0)?"":" and ") + str_keys[i] + " = ? ";
        }
      System.out.println();
      //Connect to DB
      DBFactory factory = new DBFactory();
      Connection con = factory.getConnection();
      Connection local_conn = factory.getLocalConnection();
      PreparedStatement ps_insert = null;
      PreparedStatement ps_update = null;
      PreparedStatement local_ps = null;
      //Retrieve data from Local DB
      local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name);
      ResultSet queryResult = local_ps.executeQuery();
      int count = 0;
      //Retrieve Meta Data
      ResultSetMetaData oMetaData = queryResult.getMetaData(); 
      int i_columns = oMetaData.getColumnCount();
      System.out.println("The number of columns for table " + lv_table_name + " is " + i_columns);
      String[] str_columns = new String[i_columns];
      String field_list = "";
      String value_list = "";     
      String update_list = "";
      System.out.print("Fields List:");
      for(int i=0; i< i_columns; i++){
        str_columns[i] = oMetaData.getColumnName(i+1);
        System.out.print(str_columns[i]);
        field_list = field_list + ((i==0)?str_columns[i]:(","+str_columns[i]));
        value_list = value_list +  ((i==0)?"?":",?");
      }
      System.out.println();
      for(int i=0; i< i_columns; i++){
        update_list = update_list + ((i==0)?"":", ") + str_columns[i] + " = ? ";
      }
      //Prepare insert statement
      String sql = "insert into "+ remote_prefix +lv_table_name + " ("+field_list + ") values (" + value_list + ")";
      System.out.println(sql);
      ps_insert = con.prepareStatement(sql);
      //Prepare update statement
      sql = "update "+ remote_prefix +lv_table_name + " set " + update_list + str_condition;
      System.out.println(sql);
      ps_update = con.prepareStatement(sql);
      int b_insert = 0;
      int b_update = 0;
      while (queryResult.next()) {
        count++;
        //Check whether the data record exists
        PreparedStatement ps = null;
        sql= "select count(*) from "+ remote_prefix + lv_table_name + str_condition;
        ps = con.prepareStatement(sql);
        Object[] obj_keys_value = new Object[str_keys.length];
        for(int i=0;i< str_keys.length;i++){
          obj_keys_value[i] = queryResult.getObject(str_keys[i]);
          ps.setObject(i+1, obj_keys_value[i]);
        }
        ResultSet queryResult1 = ps.executeQuery();
        int flag = 0;
        if(queryResult1.next()){
          flag = queryResult1.getInt(1);
        }
        ps.close();
        if(flag==0){
          //Insert new record
          for(int j=0;j<str_columns.length; j++){
            ps_insert.setObject(j+1, queryResult.getObject(str_columns[j]));
          }
          ps_insert.addBatch();
          b_insert++;
        }else{
          //Update existing record
          for(int j=0;j<str_columns.length; j++){
            ps_update.setObject(j+1, queryResult.getObject(str_columns[j]));
          }
          for(int j=0; j<str_keys.length; j++){
            ps_update.setObject(j+1+ str_columns.length, obj_keys_value[j]);
          }
          ps_update.addBatch();
          b_update++;
        }
      }
      //with batch
      if(b_insert>0){
        ps_insert.executeBatch();
        System.out.println("insert"+b_insert);
      }
      ps_insert.close();
      if(b_update>0){
        ps_update.executeBatch();
        System.out.println("update"+b_update);
      }
      ps_update.close();
      queryResult.close();
      local_ps.close();
      con.close();
      local_conn.close();
      jFunction.getExportParameterList().setValue("OUT_RC",count);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      jFunction.getExportParameterList().setValue("OUT_RC",-1);
    }
  }
  private void Sync_CFX_FOL()
  {
    try {
      //Get input Parameter
      //String lv_table_name = jFunction.getImportParameterList().getString("IN_TABLE_NAME");
      String lv_client_name = "CLIENT";
      //String[] table_list = {"CFX_OBJ_DESCR","CFX_AREA_VISITOR","CFX_HIERARCHY","CFX_FOL","CFX_AREA"};
      String[] table_list = {"CFX_AREA_VISITOR","CFX_HIERARCHY","CFX_FOL","CFX_AREA"};
      int count = 0;
      //Connect to DB
      DBFactory factory = new DBFactory();
      Connection con = factory.getLocalConnection();
      Connection local_conn = factory.getConnection();
      PreparedStatement ps = null;
      PreparedStatement local_ps = null;
      for (int k = 0; k < table_list.length;k++)
        {
        String lv_table_name = table_list[k];
        WriteLog("Table:" + lv_table_name + "\n");
        //Retrieve data from Inner DB
        ps = con.prepareStatement("select * from "+ remote_prefix + lv_table_name +" where " + lv_client_name + " = ?");
        ps.setString(1, "800");
        ResultSet queryResult = ps.executeQuery();
        ResultSetMetaData oMetaData = queryResult.getMetaData(); 
        int i_columns = oMetaData.getColumnCount();
        WriteLog("The number of columns for table " + lv_table_name + " is " + i_columns + "\n");
        String[] str_columns = new String[i_columns];
        String field_list = "";
        String value_list = "";
        WriteLog("Fields List:");
        for(int i=0; i< i_columns; i++){
          str_columns[i] = oMetaData.getColumnName(i+1);
          WriteLog(str_columns[i]+" ");
          field_list = field_list + ((i==0)?str_columns[i]:(","+str_columns[i]));
          value_list = value_list +  ((i==0)?"?":",?");
        }
        WriteLog("\n");
        //Clear local table first
        local_ps = local_conn.prepareStatement("delete from " +  local_prefix + lv_table_name);
        local_ps.executeUpdate();
        local_ps.close();
        //Prepare statement for local insert
        String sql = "insert into " + local_prefix + lv_table_name + " ("+field_list + ") values (" + value_list + ")";
        WriteLog(sql+ "\n");
        local_ps = local_conn.prepareStatement(sql);
        count =0;
        while (queryResult.next()) {
          count++;
          for(int j=0;j<str_columns.length; j++){
            local_ps.setObject(j+1, queryResult.getObject(str_columns[j]));
          }
          //add to batch
          local_ps.addBatch();
        }
        //execute the batch
        local_ps.executeBatch();
        local_ps.close();
        queryResult.close();
        ps.close();
        WriteLog("Count:" + count + "\n");
        }
      con.close();
      local_conn.close();
      jFunction.getExportParameterList().setValue("OUT_RC",count);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      WriteLog(e.getMessage());
      jFunction.getExportParameterList().setValue("OUT_RC",-1);
    }
  }
  public void ClearLocalData()
  {
    try {
      //Get input Parameter
      String lv_table_name = jFunction.getImportParameterList().getString("IN_TABLE_NAME");
      //JCoTable lt_table = jFunction.getExportParameterList().getTable("OUT_DATA_TABLE");
      //Connect to DB
      DBFactory factory = new DBFactory();
      Connection local_conn = factory.getLocalConnection();
      PreparedStatement local_ps = null;
      //Clear local table first
      local_ps = local_conn.prepareStatement("delete from "+ local_prefix + lv_table_name);
      local_ps.executeUpdate();
      local_ps.close();
      jFunction.getExportParameterList().setValue("OUT_RC",0);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      jFunction.getExportParameterList().setValue("OUT_RC",-1);
    }
  }
  public void TableSyncRead()
  {
    try {
      //Get input Parameter
      //String lv_table_name = jFunction.getImportParameterList().getString("IN_TABLE_NAME");
      String lv_client_name = jFunction.getImportParameterList().getString("IN_CLIENT_NAME");
      JCoTable lt_table_name = jFunction.getImportParameterList().getTable("IN_TABLE_LIST");
      int count = 0;
      //Connect to DB
      DBFactory factory = new DBFactory();
      Connection con = factory.getConnection();
      Connection local_conn = factory.getLocalConnection();
      PreparedStatement ps = null;
      PreparedStatement local_ps = null;
      for (int k = 0; k < lt_table_name.getNumRows();k++)
        {
        lt_table_name.setRow(k);
        String lv_table_name = lt_table_name.getString(0);
        WriteLog("Table:" + lv_table_name + "\n");
        //Retrieve data from Inner DB
        ps = con.prepareStatement("select * from "+ remote_prefix + lv_table_name +" where " + lv_client_name + " = ?");
        ps.setString(1, "800");
        ResultSet queryResult = ps.executeQuery();
        ResultSetMetaData oMetaData = queryResult.getMetaData(); 
        int i_columns = oMetaData.getColumnCount();
        WriteLog("The number of columns for table " + lv_table_name + " is " + i_columns + "\n");
        String[] str_columns = new String[i_columns];
        String field_list = "";
        String value_list = "";
        WriteLog("Fields List:");
        for(int i=0; i< i_columns; i++){
          str_columns[i] = oMetaData.getColumnName(i+1);
          WriteLog(str_columns[i]+" ");
          field_list = field_list + ((i==0)?str_columns[i]:(","+str_columns[i]));
          value_list = value_list +  ((i==0)?"?":",?");
        }
        WriteLog("\n");
        //Clear local table first
        local_ps = local_conn.prepareStatement("delete from " +  local_prefix + lv_table_name);
        local_ps.executeUpdate();
        local_ps.close();
        //Prepare statement for local insert
        String sql = "insert into " + local_prefix + lv_table_name + " ("+field_list + ") values (" + value_list + ")";
        WriteLog(sql+ "\n");
        local_ps = local_conn.prepareStatement(sql);
        count =0;
        while (queryResult.next()) {
          count++;
          for(int j=0;j<str_columns.length; j++){
            local_ps.setObject(j+1, queryResult.getObject(str_columns[j]));
          }
          //add to batch
          local_ps.addBatch();
        }
        //execute the batch
        local_ps.executeBatch();
        local_ps.close();
        queryResult.close();
        ps.close();
        WriteLog("Count:" + count + "\n");
        }
      con.close();
      local_conn.close();
      jFunction.getExportParameterList().setValue("OUT_RC",count);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      WriteLog(e.getMessage());
      jFunction.getExportParameterList().setValue("OUT_RC",-1);
    }
  }
  public void RetrieveQuotItemDetailInfo()
  {
    DBFactory factory = null;
    Connection con = null;
    try {
      //Get input Parameter
      //String lv_item_guid = jFunction.getImportParameterList().getString("IN_RFX_ITEM_GUID");
      byte[] lv_item_guid = jFunction.getImportParameterList().getByteArray("IN_QUOT_ITEM_GUID");
      //Connect to DB
      factory = new DBFactory();
      con = factory.getConnection();
      PreparedStatement ps = null;
      //Retrieve quantity from table BBP_PDIGP
      ps = con.prepareStatement("select QUANTITY, PRICE, VALUE from sr1.BBP_PDIGP where CLIENT = ? and GUID = ?");
      ps.setString(1, "800");
      //InputStream lv_bytes_guid = new ByteArrayInputStream(lv_item_guid);
      //ps.setBinaryStream(2, lv_bytes_guid, 16);
      ps.setBytes(2, lv_item_guid);
      ResultSet queryResult = ps.executeQuery();
      double lv_quantity = 0;
      double lv_price = 0;
      double lv_value = 0;
      if (queryResult.next()) {
        lv_quantity = queryResult.getDouble(1);
        lv_price = queryResult.getDouble(2);
        lv_value = queryResult.getDouble(3);
        System.out.println("Quantity:" + lv_quantity);
        System.out.println("Price:" + lv_price);
        System.out.println("Value:" + lv_value);
      }
      jFunction.getExportParameterList().setValue("OUT_PRICE", lv_price);
      jFunction.getExportParameterList().setValue("OUT_QTY", lv_quantity);
      jFunction.getExportParameterList().setValue("OUT_VALUE", lv_value);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } finally{
      con = null;
    }
  }
  public void RetrieveRFxDetailInformation()
  {
    try {
      //Get input Parameter
      String lv_rfx_id = jFunction.getImportParameterList().getString("IN_RFX_ID");
      //Connect to DB
      DBFactory factory = new DBFactory();
      Connection con = factory.getConnection();
      PreparedStatement ps = null;
      ps = con.prepareStatement("select GUID, DESCRIPTION from sr1.CRMD_ORDERADM_H where CLIENT = ? and OBJECT_ID = ?");
      ps.setString(1, "800");
      ps.setString(2, lv_rfx_id);
      ResultSet queryResult = ps.executeQuery();
      String lv_guid = "";
      String lv_description = "";
      //JCoTable table = new JCoTable();
      if (queryResult.next()) {
        lv_guid = queryResult.getString(1);
        lv_description = queryResult.getString(2);
        System.out.println("GUID:" + lv_guid);
        System.out.println("Description:" + lv_description);
        jFunction.getExportParameterList().setValue("OUT_RFX_DESCRIPTION",lv_description);
      }
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  public void WriteLog(String conent) {   
        BufferedWriter out = null;
        String file = "c:/SGCC_LOG.txt";
        try {   
            out = new BufferedWriter(new OutputStreamWriter(   
                    new FileOutputStream(file, true)));   
            out.write(conent);
        } catch (Exception e) {   
            e.printStackTrace();   
        } finally {   
            try {   
                out.close();   
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
        }   
    }
  public void WriteLogln(String conent) {   
        BufferedWriter out = null;
        String file = "c:/SGCC_LOG.txt";
        try {   
            out = new BufferedWriter(new OutputStreamWriter(   
                    new FileOutputStream(file, true)));   
            out.write(conent+"\r\n");
        } catch (Exception e) {   
            e.printStackTrace();   
        } finally {   
            try {   
                out.close();   
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
        }   
    }
  private BigDecimal getSyncDate(){
    //
    BigDecimal result = new BigDecimal(20100330000000.0);
    return result;
  }
  private String getDeleteSql(String sql, String table_name, String key){
    //delete <table_name> where exists ( select 1 from () ttt where ttt.GUID = <table_name>.GUID )
    String result = "delete ";
    result += table_name;
    result += " where exists ( select 1 from (";
    result += sql;
    result += ") ttt where ttt.";
    result += key;
    result += " = ";
    result += table_name;
    result += ".";
    result += key;
    result += " )";
    WriteLogln(result);
    return result;
  }
  public void RFxSyncRead()
  {
    Connection con = null;
    Connection local_conn = null;
    user1 = jFunction.getImportParameterList().getString("IN_PUR_USER");
    user2 = jFunction.getImportParameterList().getString("IN_CURR_USER");
    BigDecimal dtEnd = getSyncDate();
    String sql_se = "";
    String sql_de = "";
    try {
      //Connect to DB
      DBFactory factory = new DBFactory();
      con = factory.getConnection();
      local_conn = factory.getLocalConnection();
      PreparedStatement ps = null;
      PreparedStatement local_ps = null;
      ResultSet queryResult;
      /*
       * BBP_PDBGP
             * select * from sr1.BBP_PDBGP where CLIENT = '800'
       * delete from sr2.BBP_PDBGP where CLIENT = '800'
       */
      //Clear local table first
      local_ps = local_conn.prepareStatement("delete from BBP_PDBGP where CLIENT = ?");
      local_ps.setString(1, "800");
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement("select * from BBP_PDBGP where CLIENT = ?");
      ps.setString(1, "800");
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "BBP_PDBGP", local_conn);
      queryResult.close();
      ps.close();
      /*
       * BBP_PDIGP
             * select ITEM.* from sr1.CRMD_ORDERADM_I as HEADER, sr1.BBP_PDIGP as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200001' OR HEADER.OBJECT_TYPE = 'BUS2202001') AND HEADER.GUID = ITEM.GUID
       * delete ITEM from sr2.CRMD_ORDERADM_I as HEADER, sr2.BBP_PDIGP as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200001' OR HEADER.OBJECT_TYPE = 'BUS2202001') AND HEADER.GUID = ITEM.GUID
       */
      //Clear local table first
      sql_se = "select ITEM.* from CRMD_ORDERADM_I HEADER, BBP_PDIGP ITEM where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ? ) AND HEADER.GUID = ITEM.GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "BBP_PDIGP", "GUID");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200001");
      local_ps.setString(2, "BUS2202001");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      //local_ps.setObject(5, dtEnd);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200001");
      ps.setString(2, "BUS2202001");
      ps.setString(3, user1);
      ps.setString(4, user2);
      //ps.setObject(5, dtEnd);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "BBP_PDIGP", local_conn);
      System.out.println("--------Done");
      queryResult.close();
      ps.close();
      /*
       * BBP_PDDYN_FIX for item
       * fix answer for item
       * --select FIX.* from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART, sr1.BBP_PDDYN_FIX as FIX where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND PART.GUID = FIX.SET_LINE_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
       * --delete FIX from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART, sr1.BBP_PDDYN_FIX as FIX where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND PART.GUID = FIX.SET_LINE_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
       */
      //Clear local table first
      sql_se = "select FIX.* from CRMD_ORDERADM_I HEADER, CRMD_LINK LINK, BBP_PDDYN PART, BBP_PDDYN_FIX FIX where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND PART.GUID = FIX.SET_LINE_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "BBP_PDDYN_FIX", "SET_LINE_GUID");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200001");
      local_ps.setString(2, "BUS2202001");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200001");
      ps.setString(2, "BUS2202001");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "BBP_PDDYN_FIX", local_conn);
      queryResult.close();
      ps.close();
      /*
       * BBP_PDDYN for item
       * questions for item
       * --select PART.* from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
       * --select PART.* from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART where ( HEADER.OBJECT_TYPE = 'BUS2200001' OR HEADER.OBJECT_TYPE = 'BUS2202001') AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID
       *
       */
      //Clear local table first
      sql_se = "select PART.* from CRMD_ORDERADM_I HEADER, CRMD_LINK LINK, BBP_PDDYN PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "BBP_PDDYN", "SET_GUID");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200001");
      local_ps.setString(2, "BUS2202001");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200001");
      ps.setString(2, "BUS2202001");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "BBP_PDDYN", local_conn);
      queryResult.close();
      ps.close();
      /*
       * BBP_PDWGT for item
       * the weight of questions for item
       * --select PART.* from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDWGT as PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
       *
       */
      //Clear local table first
      sql_se = "select PART.* from CRMD_ORDERADM_I HEADER, CRMD_LINK LINK, BBP_PDWGT PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "BBP_PDWGT", "SET_GUID");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200001");
      local_ps.setString(2, "BUS2202001");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200001");
      ps.setString(2, "BUS2202001");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "BBP_PDWGT", local_conn);
      queryResult.close();
      ps.close();
      /*
       * CRMD_LINK for items
             * select LINK.* from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.OBJTYPE_SET = '07'
       * delete LINK from sr1.CRMD_ORDERADM_I as HEADER, sr1.CRMD_LINK as LINK where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.OBJTYPE_SET = '07'
      */
      sql_se="select LINK.* from CRMD_ORDERADM_I HEADER, CRMD_LINK LINK where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ? ) AND HEADER.GUID = LINK.GUID_HI AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "CRMD_LINK", "GUID_HI");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200001");
      local_ps.setString(2, "BUS2202001");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200001");
      ps.setString(2, "BUS2202001");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "CRMD_LINK", local_conn);
      queryResult.close();
      ps.close();
      /*
       * CRMD_ORDERADM_I
       * select * from sr1.CRMD_ORDERADM_I where OBJECT_TYPE = 'BUS2200001' OR OBJECT_TYPE = 'BUS2202001'
       * delete from sr2.CRMD_ORDERADM_I where OBJECT_TYPE = 'BUS2200001' OR OBJECT_TYPE = 'BUS2202001'
       */
      //Clear local table first
      sql_se = "select * from CRMD_ORDERADM_I where (OBJECT_TYPE = ? OR OBJECT_TYPE = ?) AND ( CREATED_BY = ? OR CREATED_BY = ? ) AND CREATED_AT > ?";
      //not necessary to process delete
      local_ps = local_conn.prepareStatement("delete from CRMD_ORDERADM_I where (OBJECT_TYPE = ? OR OBJECT_TYPE = ?) AND ( CREATED_BY = ? OR CREATED_BY = ? ) AND CREATED_AT > ?");
      local_ps.setString(1, "BUS2200001");
      local_ps.setString(2, "BUS2202001");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200001");
      ps.setString(2, "BUS2202001");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "CRMD_ORDERADM_I", local_conn);
      queryResult.close();
      ps.close();
      /*
       * --BBP_PDHGP
       * --select ITEM.* from sr2.CRMD_ORDERADM_H as HEADER, sr2.BBP_PDHGP as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.GUID
       * --delete ITEM from sr2.CRMD_ORDERADM_H as HEADER, sr2.BBP_PDHGP as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.GUID
       */
      //Clear local table first
      sql_se = "select ITEM.* from CRMD_ORDERADM_H HEADER, BBP_PDHGP ITEM where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ? ) AND HEADER.GUID = ITEM.GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "BBP_PDHGP", "GUID");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200");
      ps.setString(2, "BUS2202");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "BBP_PDHGP", local_conn);
      queryResult.close();
      ps.close();
      /*  
       * --BBP_PDHSB
       * --select ITEM.* from sr2.CRMD_ORDERADM_H as HEADER, sr2.BBP_PDHSB as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.GUID
       * --delete ITEM from sr2.CRMD_ORDERADM_H as HEADER, sr2.BBP_PDHSB as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.GUID
       */
      //Clear local table first
      sql_se = "select ITEM.* from CRMD_ORDERADM_H HEADER, BBP_PDHSB ITEM where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ? ) AND HEADER.GUID = ITEM.GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "BBP_PDHSB", "GUID");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200");
      ps.setString(2, "BUS2202");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "BBP_PDHSB", local_conn);
      queryResult.close();
      ps.close();
      /*  
       * --BBP_PDHSS
       * --select ITEM.* from sr2.CRMD_ORDERADM_H as HEADER, sr2.BBP_PDHSS as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.GUID
       * --delete ITEM from sr2.CRMD_ORDERADM_H as HEADER, sr2.BBP_PDHSS as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.GUID
       */
      //Clear local table first
      sql_se = "select ITEM.* from CRMD_ORDERADM_H HEADER, BBP_PDHSS ITEM where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = ITEM.GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "BBP_PDHSS", "GUID");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200");
      ps.setString(2, "BUS2202");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "BBP_PDHSS", local_conn);
      queryResult.close();
      ps.close();
      /*
       * CRMD_PARTNER
       * select PART.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.CRMD_PARTNER as PART where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = '07'
       * delete PART from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.CRMD_PARTNER as PART where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = '07'
       */
      //Clear local table first
      sql_se = "select PART.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK, CRMD_PARTNER PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = ? AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "CRMD_PARTNER", "GUID");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, "07");
      local_ps.setString(4, user1);
      local_ps.setString(5, user2);
      local_ps.setBigDecimal(6, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200");
      ps.setString(2, "BUS2202");
      ps.setString(3, "07");
      ps.setString(4, user1);
      ps.setString(5, user2);
      ps.setBigDecimal(6, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "CRMD_PARTNER", local_conn);
      queryResult.close();
      ps.close();
      /*
       * BBP_PDDYN_FIX for header
       * fix answer for header
       * --select FIX.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART, sr1.BBP_PDDYN_FIX as FIX where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND PART.GUID = FIX.SET_LINE_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
       * --delete FIX from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART, sr1.BBP_PDDYN_FIX as FIX where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND PART.GUID = FIX.SET_LINE_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
       */
      //Clear local table first
      sql_se = "select FIX.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK, BBP_PDDYN PART, BBP_PDDYN_FIX FIX where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND PART.GUID = FIX.SET_LINE_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "BBP_PDDYN_FIX", "SET_LINE_GUID");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200");
      ps.setString(2, "BUS2202");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "BBP_PDDYN_FIX", local_conn);
      queryResult.close();
      ps.close();
      /*
       * BBP_PDDYN for header
       * questions for header
       * --select PART.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
       * --select PART.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDDYN as PART where ( HEADER.OBJECT_TYPE = 'BUS2200001' OR HEADER.OBJECT_TYPE = 'BUS2202001') AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID
       *
       */
      //Clear local table first
      sql_se = "select PART.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK, BBP_PDDYN PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "BBP_PDDYN", "SET_GUID");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200");
      ps.setString(2, "BUS2202");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "BBP_PDDYN", local_conn);
      queryResult.close();
      ps.close();
      /*
       * BBP_PDWGT for header
       * the weight of questions for header
       * --select PART.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDWGT as PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
       *
       */
      //Clear local table first
      sql_se = "select PART.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK, BBP_PDWGT PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "BBP_PDWGT", "SET_GUID");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200");
      ps.setString(2, "BUS2202");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "BBP_PDWGT", local_conn);
      queryResult.close();
      ps.close();
      /*
       * BBP_PDATT for header
       * attachment or c-folder
       * --select PART.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.BBP_PDWGT as PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )
       *
       */
      //Clear local table first
      sql_se = "select PART.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK, BBP_PDATT PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.SET_GUID AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "BBP_PDATT", "SET_GUID");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200");
      ps.setString(2, "BUS2202");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "BBP_PDATT", local_conn);
      queryResult.close();
      ps.close();
      /*
       * CRMD_LINK
             * select LINK.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.OBJTYPE_SET = '07'
       * delete LINK from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.OBJTYPE_SET = '07'
      */
      sql_se = "select LINK.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ? ) AND HEADER.GUID = LINK.GUID_HI AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "CRMD_LINK", "GUID_HI");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200");
      ps.setString(2, "BUS2202");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "CRMD_LINK", local_conn);
      queryResult.close();
      ps.close();
      /*
       * --CRM_JSTO
       * --select ITEM.* from sr2.CRMD_ORDERADM_H as HEADER, sr2.CRM_JSTO as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.OBJNR
       * --delete ITEM from sr2.CRMD_ORDERADM_H as HEADER, sr2.CRM_JSTO as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.OBJNR
       */
      //Clear local table first
      sql_se = "select ITEM.* from CRMD_ORDERADM_H HEADER, CRM_JSTO ITEM where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = ITEM.OBJNR AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "CRM_JSTO", "OBJNR");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      //local_ps = local_conn.prepareStatement("delete from sr2.CRM_JSTO");
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200");
      ps.setString(2, "BUS2202");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "CRM_JSTO", local_conn);
      queryResult.close();
      ps.close();
      /*
       * --CRM_JEST
       * --select ITEM.* from sr2.CRMD_ORDERADM_H as HEADER, sr2.CRM_JEST as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.OBJNR
       * --delete ITEM from sr2.CRMD_ORDERADM_H as HEADER, sr2.CRM_JEST as ITEM where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = ITEM.OBJNR
       */
      //Clear local table first
      sql_se = "select ITEM.* from CRMD_ORDERADM_H HEADER, CRM_JEST ITEM where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = ITEM.OBJNR AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? ) AND HEADER.CREATED_AT > ?";
      sql_de = getDeleteSql(sql_se, "CRM_JEST", "OBJNR");
      local_ps = local_conn.prepareStatement(sql_de);
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      //local_ps = local_conn.prepareStatement("delete from sr2.CRM_JEST");
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement(sql_se);
      ps.setString(1, "BUS2200");
      ps.setString(2, "BUS2202");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "CRM_JEST", local_conn);
      queryResult.close();
      ps.close();
      /*
       * Process table CRMD_ORDERADM_H start 
       * select * from sr1.CRMD_ORDERADM_H where OBJECT_TYPE = 'BUS2200' OR OBJECT_TYPE = 'BUS2202' 
       * delete from sr2.CRMD_ORDERADM_H where OBJECT_TYPE = 'BUS2200' OR OBJECT_TYPE = 'BUS2202'
       */
      //Clear local table first
      local_ps = local_conn.prepareStatement("delete from CRMD_ORDERADM_H where (OBJECT_TYPE = ? OR OBJECT_TYPE = ?) AND ( CREATED_BY = ? OR CREATED_BY = ? ) AND CREATED_AT > ?");
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, user1);
      local_ps.setString(4, user2);
      local_ps.setBigDecimal(5, dtEnd);
      local_ps.executeUpdate();
      local_ps.close();
      //Retrieve data from Inner DB
      ps = con.prepareStatement("select * from CRMD_ORDERADM_H where (OBJECT_TYPE = ? OR OBJECT_TYPE = ?) AND ( CREATED_BY = ? OR CREATED_BY = ? ) AND CREATED_AT > ?");
      ps.setString(1, "BUS2200");
      ps.setString(2, "BUS2202");
      ps.setString(3, user1);
      ps.setString(4, user2);
      ps.setBigDecimal(5, dtEnd);
      queryResult = ps.executeQuery();
      ProcessTableInsert(queryResult, "CRMD_ORDERADM_H", local_conn);
      queryResult.close();
      ps.close();
      jFunction.getExportParameterList().setValue("OUT_RC",0);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      WriteLogln(e.getMessage());
      jFunction.getExportParameterList().setValue("OUT_RC",-1);
    } finally{
      try {
        con.close();
        local_conn.close();
      } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }
  public void RFxSyncWrite()
  {
    try {
      String lv_table_name = "";
      String[] str_keys;
      //Connect to DB
      DBFactory factory = new DBFactory();
      Connection con = factory.getConnection();
      Connection local_conn = factory.getLocalConnection();
      PreparedStatement local_ps = null;
      ResultSet queryResult;
      //Process Table BBP_PDBGP
      lv_table_name = "BBP_PDBGP";
      str_keys = new String[2];
      str_keys[0] = "CLIENT";
      str_keys[1] = "PARTNER_GUID";
      //Retrieve data from Local DB
      local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name +" where CLIENT = ?");
      local_ps.setString(1, "800");
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, str_keys, con);
      queryResult.close();
      local_ps.close();
      //Process Table CRMD_PARTNER
      /*
       * CRMD_PARTNER
       * select PART.* from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.CRMD_PARTNER as PART where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = '07'
       * delete PART from sr1.CRMD_ORDERADM_H as HEADER, sr1.CRMD_LINK as LINK, sr1.CRMD_PARTNER as PART where ( HEADER.OBJECT_TYPE = 'BUS2200' OR HEADER.OBJECT_TYPE = 'BUS2202') AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = '07'
       */
      lv_table_name = "CRMD_PARTNER";
      str_keys = new String[2];
      str_keys[0] = "CLIENT";
      str_keys[1] = "PARTNER_GUID";
      //Retrieve data from Local DB
      local_ps = local_conn.prepareStatement("select PART.* from CRMD_ORDERADM_H HEADER, CRMD_LINK LINK, CRMD_PARTNER PART where ( HEADER.OBJECT_TYPE = ? OR HEADER.OBJECT_TYPE = ?) AND HEADER.GUID = LINK.GUID_HI AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = ? AND ( HEADER.CREATED_BY = ? OR HEADER.CREATED_BY = ? )");
      local_ps.setString(1, "BUS2200");
      local_ps.setString(2, "BUS2202");
      local_ps.setString(3, "07");
      local_ps.setString(4, user1);
      local_ps.setString(5, user2);
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, str_keys, con);
      queryResult.close();
      local_ps.close();
      jFunction.getExportParameterList().setValue("OUT_RC",0);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      jFunction.getExportParameterList().setValue("OUT_RC",-1);
    }
  }
  public void rfxResponseWrite()
  {
    try {
    //Connect to DB
    DBFactory factory = new DBFactory();
    Connection con = factory.getConnection();
    Connection local_conn = factory.getLocalConnection();
    PreparedStatement local_ps = null;
    ResultSet queryResult;
    String lv_table_name = "";
    String tbl_keys[];
    // Update CRMD_ORDERADM_H
    lv_table_name = "CRMD_ORDERADM_H";
    String lv_tbl_version = "BBP_PDHGP";
    tbl_keys = new String[2];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "GUID";
    // Get Object ID (Response ID)
    String objectID = String.valueOf(jFunction.getImportParameterList().getValue("IN_OBJECT_ID"));
    // Get Header Info. of Response Document from local DB
    local_ps = local_conn.prepareStatement("select HEADER.GUID from "+ local_prefix + lv_table_name + " HEADER, "+local_prefix+lv_tbl_version+" VERSION where HEADER.OBJECT_TYPE = ? AND HEADER.OBJECT_ID = ? AND VERSION.GUID = HEADER.GUID AND VERSION.VERSION_TYPE = ' '");
      local_ps.setString(1, "BUS2202");
      local_ps.setString(2, objectID);
      queryResult = local_ps.executeQuery();
      // Get Response GUID
      queryResult.next();
      byte[] responseGuid = queryResult.getBytes("GUID");
      queryResult.close();
    local_ps.close();
      local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name + " where OBJECT_TYPE = ? AND GUID = ?");
      local_ps.setString(1, "BUS2202");
      local_ps.setBytes(2, responseGuid);
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
    local_ps.close();
    //Update BBP_PDHGP
    lv_table_name = "BBP_PDHGP";
    tbl_keys =  new String [2];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "GUID";
    local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name +" HEADER where HEADER.GUID = ?");
    local_ps.setBytes(1, responseGuid);
    queryResult = local_ps.executeQuery();
    ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
    queryResult.close();
    local_ps.close();
    // Update item
    lv_table_name = "CRMD_ORDERADM_I";
    tbl_keys = new String[2];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "GUID";
    local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name + " ITEM where ITEM.HEADER = ?");
    local_ps.setBytes(1, responseGuid);
    queryResult = local_ps.executeQuery();
    // Get Item GUID List
    ArrayList<byte[]> itemList = new ArrayList<byte[]>();
    while (queryResult.next())
    {
       byte[] itemGuid = queryResult.getBytes("GUID");
       itemList.add(itemGuid);
    }
    queryResult.close();
    local_ps.close();
    local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name + " ITEM where ITEM.HEADER = ?");
    local_ps.setBytes(1, responseGuid);
    queryResult = local_ps.executeQuery();
        ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
    queryResult.close();
    local_ps.close();
    // Update Item table BBP_PDIGP
    lv_table_name = "BBP_PDIGP";
    tbl_keys = new String[2];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "GUID";
    for(int i=0;i<itemList.size();i++)
    {
      local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name + " ITEM where ITEM.GUID = ?");
      local_ps.setBytes(1, itemList.get(i));
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
        queryResult.close();
      local_ps.close();
    }
    // Update Item table BBP_PDIGP
    lv_table_name = "BBP_PDISS";
    tbl_keys = new String[2];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "GUID";
    for(int i=0;i<itemList.size();i++)
    {
      local_ps = local_conn.prepareStatement("select * from "+ local_prefix + lv_table_name + " ITEM where ITEM.GUID = ?");
      local_ps.setBytes(1, itemList.get(i));
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
        queryResult.close();
      local_ps.close();
    }
    // Update Response Status table CRM_JEST
    lv_table_name = "CRM_JEST";
    tbl_keys = new String[3];
    tbl_keys[0] = "MANDT";
    tbl_keys[1] = "OBJNR";
    tbl_keys[2] = "STAT";
    local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where OBJNR = ?");
    local_ps.setBytes(1, responseGuid);
    queryResult = local_ps.executeQuery();
    ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
    local_ps.close();
    // Update status table CRM_JSTO
    lv_table_name = "CRM_JSTO";
    tbl_keys = new String[2];
    tbl_keys[0] = "MANDT";
    tbl_keys[1] = "OBJNR";
    local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where OBJNR = ?");
    local_ps.setBytes(1, responseGuid);
    queryResult = local_ps.executeQuery();
        ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
    local_ps.close();
    // Update link
    lv_table_name = "CRMD_LINK";
    tbl_keys = new String[3];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "GUID_HI";
    tbl_keys[2] = "GUID_SET";
      local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where GUID_HI = ?");
      local_ps.setBytes(1, responseGuid);
      queryResult = local_ps.executeQuery();
        ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
    local_ps.close();
    // Update Partner table CRMD_PARTNER
    lv_table_name = "CRMD_PARTNER";
  //  String lv_header_tbl = "CRMD_ORDERADM_H";
    String lv_link_tbl   = "CRMD_LINK";
    tbl_keys    = new String[2];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "PARTNER_GUID";
    local_ps = local_conn.prepareStatement("select PART.* from "+local_prefix+lv_table_name+" PART, "+local_prefix+lv_link_tbl+" LINK where LINK.GUID_HI = ? AND LINK.GUID_SET = PART.GUID AND LINK.OBJTYPE_SET = ?");
    local_ps.setBytes(1, responseGuid);
    local_ps.setString(2, "07");
    queryResult = local_ps.executeQuery();
        ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
    local_ps.close();
    // Update Attachments
    lv_table_name = "BBP_PDATT";
    lv_link_tbl   = "CRMD_LINK";
    tbl_keys = new String[2];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "GUID";
    local_ps =  local_conn.prepareStatement("select ATT.* from "+local_prefix+lv_link_tbl+" LINK, "+local_prefix+lv_table_name+" ATT where LINK.GUID_HI = ? AND LINK.GUID_SET = ATT.SET_GUID AND LINK.OBJTYPE_SET = ?");
    local_ps.setBytes(1, responseGuid);
    local_ps.setString(2, "33");
      queryResult = local_ps.executeQuery();
      // Get logical object ID == attachment ID == physical object ID
      ArrayList<String> attList = new ArrayList<String>();
      while(queryResult.next())
      {
        attList.add(queryResult.getString("LOIO_OBJID"));
      }
      System.out.println("SIZE:  "+ attList.size());
      System.out.println();
      queryResult.close();
    local_ps.close();
      local_ps =  local_conn.prepareStatement("select ATT.* from "+local_prefix+lv_link_tbl+" LINK, "+local_prefix+lv_table_name+" ATT where LINK.GUID_HI = ? AND ATT.SET_GUID = LINK.GUID_SET AND LINK.OBJTYPE_SET = ?");
    local_ps.setBytes(1, responseGuid);
      local_ps.setString(2, "33");
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
    local_ps.close();
    // Update BBP_LOIO
    lv_table_name = "BBP_LOIO";
    tbl_keys[0] = "MANDT";
    tbl_keys[1] = "LOIO_ID";
    for (int i=0;i<attList.size();i++)
    {
      local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where LOIO_ID = ?");
      local_ps.setString(1, attList.get(i));
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
        local_ps.close();
    }
    // Update BBP_LOIOT
    lv_table_name = "BBP_LOIOT";
    tbl_keys = new String[3];
    tbl_keys[0] = "MANDT";
    tbl_keys[1] = "LANGU";
    tbl_keys[2] = "LOIO_ID";
    for (int i=0;i<attList.size();i++)
    {
      local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where LOIO_ID = ?");
      local_ps.setString(1, attList.get(i));
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
        local_ps.close();
    }
    // Update BBP_PHIO
    lv_table_name = "BBP_PHIO";
    tbl_keys = new String[2];
    tbl_keys[0] = "MANDT";
    tbl_keys[1] = "PHIO_ID";
    for (int i=0;i<attList.size();i++)
    {
      local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where PHIO_ID = ?");
      local_ps.setString(1, attList.get(i));
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
        local_ps.close();
    }
    // Update BBPCONT
    lv_table_name = "BBPCONT";
    tbl_keys = new String[4];
    tbl_keys[0] = "MANDT";
    tbl_keys[1] = "RELID";
    tbl_keys[2] = "PHIO_ID";
    tbl_keys[3] = "SRTF2";
    for (int i=0;i<attList.size();i++)
    {
      local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where PHIO_ID = ?");
      local_ps.setString(1, attList.get(i));
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
        local_ps.close();
    }
    // Update BBP_PHF
    lv_table_name = "BBP_PHF";
    tbl_keys = new String[3];
    tbl_keys[0] = "MANDT";
    tbl_keys[1] = "PHIO_ID";
    tbl_keys[2] = "FILE_NUM";
    for (int i=0;i<attList.size();i++)
    {
      local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where PHIO_ID = ?");
      local_ps.setString(1, attList.get(i));
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
        local_ps.close();
    }
    // Update Question
    lv_table_name = "BBP_PDDYN";
    tbl_keys = new String[2];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "GUID";
    local_ps = local_conn.prepareStatement("select DA.* from "+local_prefix+lv_table_name+" DA, "+local_prefix+lv_link_tbl+" LINK where LINK.GUID_HI = ? AND LINK.GUID_SET = DA.SET_GUID AND LINK.OBJTYPE_SET = ?");
    local_ps.setBytes(1, responseGuid);
    local_ps.setString(2, "61");
    queryResult = local_ps.executeQuery();
    ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
    queryResult.close();
      local_ps.close();
      // Update Question on Item level
      for (int i=0;i<itemList.size();i++)
      {
        local_ps = local_conn.prepareStatement("select DA.* from "+local_prefix+lv_table_name+" DA, "+local_prefix+lv_link_tbl+" LINK where LINK.GUID_HI = ? AND LINK.GUID_SET = DA.SET_GUID AND LINK.OBJTYPE_SET = ?");
        local_ps.setBytes(1, itemList.get(i));
        local_ps.setString(2, "61");
        queryResult = local_ps.executeQuery();
        ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
        queryResult.close();
        local_ps.close();
      }
      // Update item CRMD_Link
      lv_table_name = "CRMD_LINK";
      tbl_keys = new String[3];
      tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "GUID_HI";
    tbl_keys[2] = "GUID_SET";
      for (int i=0;i<itemList.size();i++)
      {
        local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where GUID_HI = ?");
        local_ps.setBytes(1, itemList.get(i));
        queryResult = local_ps.executeQuery();
            ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
        queryResult.close();
        local_ps.close();
      }
      // Update reference to Rfx HEADER
      lv_table_name = "BBP_PDHGP";
      tbl_keys = new String[2];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "GUID";
    local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where GUID = ?");
    local_ps.setBytes(1, responseGuid);
    queryResult = local_ps.executeQuery();
    queryResult.next();
    byte[] srcGuid = queryResult.getBytes("SRC_GUID");
    queryResult.close();
      local_ps.close();
      lv_table_name = "SRRELROLES";
      tbl_keys = new String[5];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "OBJKEY";
    tbl_keys[2] = "OBJTYPE";
    tbl_keys[3] = "LOGSYS";
    tbl_keys[4] = "ROLETYPE";
    // Convert byte[] to hex string
      String srcKey = byte2HexStr(srcGuid);
      String responseKey = byte2HexStr(responseGuid);
    local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where OBJKEY = ? ");
      local_ps.setString(1, srcKey);
        queryResult = local_ps.executeQuery();
        // Find Source Role ID
        queryResult.next();
        String srcRoleID = queryResult.getString("ROLEID");
        queryResult.close();
      local_ps.close();
      local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where OBJKEY = ? OR OBJKEY = ?");
      local_ps.setString(1, srcKey);
      local_ps.setString(2, responseKey);
      queryResult = local_ps.executeQuery();
        ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
    queryResult.close();
      local_ps.close();
      lv_table_name = "BBP_PDBINREL";
      tbl_keys = new String[3];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "ROLE_A";
    tbl_keys[2] = "ROLE_B";
    local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where ROLE_A = ?");
    local_ps.setString(1, srcRoleID);
    queryResult = local_ps.executeQuery();
    ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
    queryResult.close();
      local_ps.close();
      // Update Reference to Rfx item
      lv_table_name = "CRMD_ORDERADM_I";
      local_ps = local_conn.prepareStatement("select GUID from "+local_prefix+lv_table_name+" where HEADER = ?");
      local_ps.setBytes(1, srcGuid);
      queryResult = local_ps.executeQuery();
      ArrayList<String> srcItemList = new ArrayList<String>();
      ArrayList<String> srcRoleList = new ArrayList<String>();
      ArrayList<String> itemStrList = new ArrayList<String>();
      for (int i=0;i<itemList.size();i++)
      {
        itemStrList.add(byte2HexStr(itemList.get(i)));
      }
      // Get source item guid(in Hex String) list
      while (queryResult.next())
      {
        srcItemList.add(byte2HexStr(queryResult.getBytes("GUID")));
      }
      queryResult.close();
      local_ps.close();
      lv_table_name = "SRRELROLES";
      tbl_keys = new String[5];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "OBJKEY";
    tbl_keys[2] = "OBJTYPE";
    tbl_keys[3] = "LOGSYS";
    tbl_keys[4] = "ROLETYPE";
    for (int i=0;i<srcItemList.size();i++)
    {
      local_ps = local_conn.prepareStatement("select ROLEID from "+local_prefix+lv_table_name+" where OBJKEY = ? ");
      local_ps.setString(1, srcItemList.get(i));
      queryResult = local_ps.executeQuery();
      // Find Source Role ID
      queryResult.next();
      srcRoleList.add(queryResult.getString("ROLEID"));
      queryResult.close();
        local_ps.close();
    }     
    for (int i=0;i<srcItemList.size();i++)
    {
      local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where OBJKEY = ?");
      local_ps.setString(1, srcItemList.get(i));
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
        local_ps.close();
    }
    for (int i=0;i<itemStrList.size();i++)
    {
      local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where OBJKEY = ?");
      local_ps.setString(1, itemStrList.get(i));
      queryResult = local_ps.executeQuery();
            ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
        local_ps.close();
    }
    lv_table_name = "BBP_PDBINREL";
      tbl_keys = new String[3];
    tbl_keys[0] = "CLIENT";
    tbl_keys[1] = "ROLE_A";
    tbl_keys[2] = "ROLE_B";
    for (int i=0;i<srcRoleList.size();i++)
    {
      local_ps = local_conn.prepareStatement("select * from "+local_prefix+lv_table_name+" where ROLE_A = ?");
      local_ps.setString(1, srcRoleList.get(i));
      queryResult = local_ps.executeQuery();
      ProcessTableUpdate(queryResult, lv_table_name, tbl_keys, con);
      queryResult.close();
        local_ps.close();
    }
    jFunction.getExportParameterList().setValue("OUT_RC",0);
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      jFunction.getExportParameterList().setValue("OUT_RC",-1);
    }
  }
  public void rfxPublish()
  {
    //Need read table: CRMD_ORDERADM_H; BBP_PDHSB; CRM_JEST; CRM_JSTO
    try {
      //Get input Parameter
      JCoTable cg_table = jFunction.getChangingParameterList().getTable("CT_RFX_LIST");
      //Connect to DB
      DBFactory factory = new DBFactory();
      Connection con = factory.getConnection();
      PreparedStatement ps = null;
      String lv_hdr_tbl     = "CRMD_ORDERADM_H";
      String lv_qt_dead_tbl = "BBP_PDHSB";
//      String lv_stat_tbl    = "CRM_JEST";
      String lv_zstat_tbl   = "ZSTATUS"; // USE Z table to retrieve status
//      ps = con.prepareStatement("select HEADER.GUID, HEADER.OBJECT_ID, HEADER.CREATED_AT, HEADER.DESCRIPTION, DEAD.QUOT_DEAD, DEAD.QUOT_DEAD_TIME from "+remote_prefix+lv_hdr_tbl+" HEADER, "+remote_prefix+lv_qt_dead_tbl+" DEAD, "+remote_prefix+lv_stat_tbl+" STAT where HEADER.CLIENT = ? and HEADER.OBJECT_TYPE = ? AND HEADER.GUID = DEAD.GUID AND HEADER.GUID = STAT.OBJNR AND STAT.STAT = ? order by HEADER.CREATED_AT DESC");
//      ps.setString(1, "800");
//      ps.setString(2, "BUS2200");
//      ps.setString(3, "I1011");
      ps = con.prepareStatement("select HEADER.GUID, HEADER.OBJECT_ID, HEADER.CREATED_AT, HEADER.DESCRIPTION, DEAD.QUOT_DEAD, DEAD.QUOT_DEAD_TIME from "+remote_prefix+lv_hdr_tbl+" HEADER, "+remote_prefix+lv_qt_dead_tbl+" DEAD, "+remote_prefix+lv_zstat_tbl+" STAT where HEADER.CLIENT = ? and HEADER.OBJECT_TYPE = ? AND HEADER.GUID = DEAD.GUID AND HEADER.OBJECT_ID = substr(STAT.RFX, 1, 10) AND substr(STAT.RFX, 11, 14) = '0001' AND STAT.STATUS = ? order by HEADER.CREATED_AT DESC");
      ps.setString(1, "800");
      ps.setString(2, "BUS2200");
      ps.setString(3, "A");
      ResultSet queryResult = ps.executeQuery();
      byte[] rfxGuid = null;
      String objID = "";
      double createAt =  new Double(0);
      String description = "";
      String qtDead = "";
      String qtTime = "";
      while (queryResult.next()) {
        rfxGuid = queryResult.getBytes(1);
        objID = queryResult.getString(2);
        createAt =  queryResult.getDouble(3);
        description = queryResult.getString(4);
        qtDead = queryResult.getString(5);
          qtTime = queryResult.getString(6);
        //System.out.println("RFX ID:" + objID);
        cg_table.appendRow();
        cg_table.setValue("RFX_GUID", rfxGuid);
        cg_table.setValue("RFX_ID", objID);
        cg_table.setValue("CREATED_AT", createAt);
        cg_table.setValue("DESCRIPTION", description);
        cg_table.setValue("QUOT_DEAD_DT", qtDead);
        cg_table.setValue("QUOT_DEAD_TIME", qtTime);
        cg_table.setValue("STAT", "I1011");
      }
      jFunction.getChangingParameterList().setValue("CT_RFX_LIST",cg_table);
      queryResult.close();
      ps.close();
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
//  public void rfxSucceed()
//  {
//    JCoTable cg_table = jFunction.getExportParameterList().getTable("ET_RFX_SUCCEED");
//    
//    DBFactory factory = new DBFactory();
//    Connection con = factory.getConnection();
//    PreparedStatement ps = null;
//  }
    public void rfxBriefIDRead() 
    {
      try{
        JCoTable etRfxID = jFunction.getExportParameterList().getTable("ET_RFX_ID");
        DBFactory factory = new DBFactory();
        Connection con = factory.getConnection();
        PreparedStatement ps = null;
        String lv_brief_tbl = "ZBID_BRIEF";
        ps = con.prepareStatement("select distinct RFX_ID, RFX_DESC from "+remote_prefix+lv_brief_tbl+" where PUB_FLAG = ?");
        ps.setString(1, "1");
        ResultSet queryResult = ps.executeQuery();
        while(queryResult.next())
        {
          etRfxID.appendRow();
          etRfxID.setValue("RFX_ID", queryResult.getString("RFX_ID"));
          etRfxID.setValue("RFX_DESCRIPTION", queryResult.getString("RFX_DESC"));
        }
        queryResult.close();
        ps.close();
        jFunction.getExportParameterList().setValue("ET_RFX_ID", etRfxID);
      }catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();}
    }
  public void rfxBriefRead()
  {
    try {
    JCoTable cg_table = jFunction.getExportParameterList().getTable("ET_RFX_BRIEF");
    char publish = jFunction.getImportParameterList().getChar("PUBLISH");
    String rfxID = jFunction.getImportParameterList().getString("RFX_ID");
    String requester = jFunction.getImportParameterList().getString("REQUESTER");
    DBFactory factory = new DBFactory();
    Connection con = factory.getConnection();
    PreparedStatement ps = null;
    String lv_brief_tbl = "ZBID_BRIEF";
    if (publish == '1')  // used in publish of bidding clarification(澄清公告), pub_flag = 1
    {
      ps = con.prepareStatement("select * from "+remote_prefix+lv_brief_tbl+" where MANDT = ? AND PUB_FLAG = 1 AND RFX_ID = ?");
      ps.setString(1, "800");
      ps.setString(2, rfxID);
      ResultSet queryResult = ps.executeQuery();
            while (queryResult.next()) {
              cg_table.appendRow();
              cg_table.setValue("MANDT", queryResult.getString("MANDT"));
              cg_table.setValue("RFX_ID", queryResult.getString("RFX_ID"));
              cg_table.setValue("ITEM_ID", queryResult.getString("ITEM_ID"));
              cg_table.setValue("QUS_ID", queryResult.getBytes("QUS_ID"));
              cg_table.setValue("RFX_DESC", queryResult.getString("RFX_DESC"));
              cg_table.setValue("ITEM_DESC",queryResult.getString("ITEM_DESC"));
              cg_table.setValue("QUESTION", queryResult.getString("QUESTION"));
              cg_table.setValue("REPLY", queryResult.getString("REPLY"));
              cg_table.setValue("REQUESTER", queryResult.getString("REQUESTER"));
              cg_table.setValue("BIDDER", queryResult.getString("BIDDER"));
              cg_table.setValue("BI_COMPANY", queryResult.getString("BI_COMPANY"));
              cg_table.setValue("REPLYER", queryResult.getString("REPLYER"));
              cg_table.setValue("RE_DESC",queryResult.getString("RE_DESC"));
              cg_table.setValue("APPROVER", queryResult.getString("APPROVER"));
              cg_table.setValue("AP_DESC", queryResult.getString("AP_DESC"));
              cg_table.setValue("STATUS", queryResult.getString("STATUS"));
              cg_table.setValue("PUB_FLAG", queryResult.getString("PUB_FLAG"));
              cg_table.setValue("REQUEST_DAT", queryResult.getString("REQUEST_DAT"));
              cg_table.setValue("REPLY_DAT", queryResult.getString("REPLY_DAT"));
              cg_table.setValue("PRD_ID", queryResult.getString("ORDERED_PROD"));
              cg_table.setValue("QUS_ID_32", queryResult.getString("QUS_ID_32"));
      }
      jFunction.getExportParameterList().setValue("ET_RFX_BRIEF", cg_table);
      queryResult.close();
      ps.close();
    }
    else // used in clarification webdynpro, pub_flag != 1
    {
      ps = con.prepareStatement("select * from "+remote_prefix+lv_brief_tbl+" where MANDT = ? AND RFX_ID = ? AND REQUESTER = ?");
      ps.setString(1, "800");
      ps.setString(2, rfxID);
      ps.setString(3, requester);
      ResultSet queryResult = ps.executeQuery();
            while (queryResult.next()) {
              cg_table.appendRow();
              cg_table.setValue("MANDT", queryResult.getString("MANDT"));
              cg_table.setValue("RFX_ID", queryResult.getString("RFX_ID"));
              cg_table.setValue("ITEM_ID", queryResult.getString("ITEM_ID"));
              cg_table.setValue("QUS_ID", queryResult.getBytes("QUS_ID"));
              cg_table.setValue("RFX_DESC", queryResult.getString("RFX_DESC"));
              cg_table.setValue("ITEM_DESC",queryResult.getString("ITEM_DESC"));
              cg_table.setValue("QUESTION", queryResult.getString("QUESTION"));
              cg_table.setValue("REPLY", queryResult.getString("REPLY"));
              cg_table.setValue("REQUESTER", queryResult.getString("REQUESTER"));
              cg_table.setValue("BIDDER", queryResult.getString("BIDDER"));
              cg_table.setValue("BI_COMPANY", queryResult.getString("BI_COMPANY"));
              cg_table.setValue("REPLYER", queryResult.getString("REPLYER"));
              cg_table.setValue("RE_DESC",queryResult.getString("RE_DESC"));
              cg_table.setValue("APPROVER", queryResult.getString("APPROVER"));
              cg_table.setValue("AP_DESC", queryResult.getString("AP_DESC"));
              cg_table.setValue("STATUS", queryResult.getString("STATUS"));
              cg_table.setValue("PUB_FLAG", queryResult.getString("PUB_FLAG"));
              cg_table.setValue("REQUEST_DAT", queryResult.getString("REQUEST_DAT"));
              cg_table.setValue("REPLY_DAT", queryResult.getString("REPLY_DAT"));
              cg_table.setValue("PRD_ID", queryResult.getString("ORDERED_PROD"));
              cg_table.setValue("QUS_ID_32", queryResult.getString("QUS_ID_32"));
      }
      jFunction.getExportParameterList().setValue("ET_RFX_BRIEF", cg_table);
      queryResult.close();
      ps.close();
    }
  } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();}}
  public void rfxItemRead()
  {
    JCoTable cg_table = jFunction.getExportParameterList().getTable("ET_RFX_ITEM");
    String rfxID = jFunction.getImportParameterList().getString("RFX_ID");
    DBFactory factory = new DBFactory();
    Connection con = factory.getConnection();
    PreparedStatement ps = null;
    String lv_rfx_tbl = "CRMD_ORDERADM_H";
    String lv_item_tbl = "CRMD_ORDERADM_I";
    String lv_version  = "BBP_PDHGP";
    try{
    ps = con.prepareStatement("select HEADER.DESCRIPTION, ITEM.NUMBER_INT, ITEM.DESCRIPTION, ITEM.ORDERED_PROD from "+remote_prefix+lv_rfx_tbl+" HEADER, "+remote_prefix+lv_item_tbl+" ITEM, "+remote_prefix+lv_version+" VERSION where HEADER.OBJECT_ID = ? AND ITEM.HEADER = HEADER.GUID AND HEADER.OBJECT_TYPE = ? AND VERSION.GUID = HEADER.GUID AND VERSION.VERSION_TYPE = ' '");
    ps.setString(1, rfxID);
    ps.setString(2, "BUS2200");
    ResultSet queryResult = ps.executeQuery();
    while (queryResult.next())
    {
      System.out.println("ITEM :"+queryResult.getString(3));
      cg_table.appendRow();
      cg_table.setValue("RFX_DESCRIPTION", queryResult.getString(1));
      cg_table.setValue("ITEM_NUMBER", queryResult.getString(2));
      cg_table.setValue("ITEM_DESCRIPTION", queryResult.getString(3));
      cg_table.setValue("PRD_ID", queryResult.getString(4));
      cg_table.setValue("RFX_ID", rfxID);
    }
    jFunction.getExportParameterList().setValue("ET_RFX_ITEM", cg_table);
    queryResult.close();
    ps.close();
       } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();}
  }
  public void rfxBriefWrite()
  {
    JCoTable questionTbl = jFunction.getImportParameterList().getTable("IT_RFX_QUESTIONS");
    System.out.println("!!!");
    String[] fieldName = new String[14];
    Object[] fieldValue = new Object[14];
    String tblName = "ZBID_BRIEF";
    DBFactory factory = new DBFactory();
    Connection con = factory.getConnection();
    PreparedStatement ps = null;
    PreparedStatement ps_insert = null;
    PreparedStatement ps_update = null;
    fieldName[0] = "RFX_ID";
    fieldName[1] = "RFX_DESC";
    fieldName[2] = "ITEM_ID";
    fieldName[3] = "ITEM_DESC";
    fieldName[4] = "ORDERED_PROD";
    fieldName[5] = "QUS_ID";
    fieldName[6] = "QUESTION";
    fieldName[7] = "REQUESTER";
    fieldName[8] = "BIDDER";
    fieldName[9] = "BI_COMPANY";
    fieldName[10] = "REQUEST_DAT";
    fieldName[11] = "STATUS";
    fieldName[12] = "MANDT";
    fieldName[13] = "QUS_ID_32";
    try{
      int rows = questionTbl.getNumRows();
      System.out.println("rows = "+ rows);
      String nameList = "";
      String valueList = "";
      for(int i=0;i<14;i++)
      {
        nameList  = nameList + ((i==0)?fieldName[i]:(","+fieldName[i]));
        valueList = valueList + ((i==0)?"?":",?");
      }
      ps_insert = con.prepareStatement("insert into "+remote_prefix +tblName+" ("+nameList + ") values (" + valueList + ")");
      ps_update = con.prepareStatement("update "+remote_prefix+tblName+" SET "+fieldName[11]+" = ? where QUS_ID_32 = ? AND MANDT = ? AND RFX_ID = ? AND ITEM_ID = ?");
      do
      { 
        System.out.println(questionTbl.getValue(1));
        fieldValue[0] = questionTbl.getValue("RFX_ID");
        fieldValue[1] = questionTbl.getValue("RFX_DESC");
        fieldValue[2] = questionTbl.getValue("ITEM_ID");
        fieldValue[3] = questionTbl.getValue("ITEM_DESC");
        fieldValue[4] = questionTbl.getValue("PRD_ID");
        fieldValue[5] = questionTbl.getValue("QUS_ID");
        fieldValue[6] = questionTbl.getValue("QUESTION");
        fieldValue[7] = questionTbl.getValue("REQUESTER");
        fieldValue[8] = questionTbl.getValue("BIDDER");
        fieldValue[9] = questionTbl.getValue("BI_COMPANY");
        fieldValue[10] = questionTbl.getValue("REQUEST_DAT");
        fieldValue[11] = questionTbl.getValue("STATUS");
        fieldValue[12] = "800";
        fieldValue[13] = questionTbl.getValue("QUS_ID_32");
        // Check if new record
        System.out.println("Question GUID in String: "+fieldValue[13]);
        ps = con.prepareStatement("select count(*) from "+remote_prefix+tblName+" where MANDT = ? AND RFX_ID = ? AND ITEM_ID = ? AND QUS_ID_32 = ?");
        ps.setObject(1, fieldValue[12]);
        ps.setObject(2, fieldValue[0]);
        ps.setObject(3, fieldValue[2]);
        ps.setObject(4, fieldValue[13]);
        ResultSet rs = ps.executeQuery();
        int flag  = 0;
          if (rs.next())
          {
            flag = rs.getInt(1);
          }
          rs.close();
          ps.close();
          if (flag == 0) // Insert
          {
          fieldValue[11] = "0"; //New Record, status = 0
          for(int i=0;i<14;i++)
          {
            if (fieldValue[i] == null)
            {
              ps_insert.setObject(i+1, " ");
            }
            else
            {
              if(fieldValue[i].equals(""))
              {
                ps_insert.setObject(i+1, " ");
              }
              else
              {
                if (fieldName[i] == "REQUEST_DAT") // convert java.util.Date into String
                {
                  SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
                  String reqDate = sdf.format(questionTbl.getDate("REQUEST_DAT"));
                    //Date sd = new Date(questionTbl.getDate("REQUEST_DAT").getTime());
                  ps_insert.setString(i+1, reqDate);
                }
                else
                {
                  ps_insert.setObject(i+1, fieldValue[i]);  
                }
              }
            }       
          }
          ps_insert.addBatch();
          }
          else          // Update - Only Status
          {
            ps_update.setObject(1, fieldValue[11]);
            ps_update.setObject(2, fieldValue[13]);
            ps_update.setObject(3, fieldValue[12]);
            ps_update.setObject(4, fieldValue[0]);
            ps_update.setObject(5, fieldValue[2]);
            ps_update.addBatch();
          }
      }
      while(questionTbl.nextRow());
         /**
          *  Output result to Function Module
          */
        int [] resultInsert = ps_insert.executeBatch();
        for (int i=0;i<resultInsert.length;i++)
        {
          if (resultInsert[i] >= 0 || resultInsert[i] == Statement.SUCCESS_NO_INFO)
          {
            System.out.println("insert sucessfully: "+ resultInsert[i]);
          }
          else 
          {
            jFunction.getExportParameterList().setValue("OUT_RC", -1);
          }
        }
        if (jFunction.getExportParameterList().getValue("OUT_RC") == null)
        {
          jFunction.getExportParameterList().setValue("OUT_RC", 0);
        }
        ps_insert.close();
        int[] resultUpdate = ps_update.executeBatch();
        for (int i=0;i<resultUpdate.length;i++)
        {
          if (resultUpdate[i]>=0 || resultUpdate[i] == Statement.SUCCESS_NO_INFO)
          {
            System.out.println("Update successully"+ resultUpdate[i]);
          }
          else
          {
            jFunction.getExportParameterList().setValue("OUT_RC", -1);
          }
        }
        if (jFunction.getExportParameterList().getValue("OUT_RC") == null)
        {
          jFunction.getExportParameterList().setValue("OUT_RC", 0);
        }
        ps_update.close();
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();}
  }
  /**
   *  Read successful RFX ID & Description
   */
  public void rfxSucceedRead()
  {
    JCoTable tblRfxSucceed = jFunction.getExportParameterList().getTable("ET_RFX_SUCCEED_READ");
    DBFactory factory = new DBFactory();
    Connection con = factory.getConnection();
    PreparedStatement ps = null;
    String lv_hdr_tbl     = "CRMD_ORDERADM_H";
    String lv_stat_tbl    = "ZSTATUS";  // USE Z table to retrieve status
    try {
//      ps = con.prepareStatement("select HEADER.OBJECT_ID, HEADER.DESCRIPTION from "+remote_prefix+lv_hdr_tbl+" HEADER, "+remote_prefix+lv_stat_tbl+" STAT where HEADER.CLIENT = ? and HEADER.OBJECT_TYPE = ? AND HEADER.GUID = STAT.OBJNR AND STAT.STAT = ? order by HEADER.CREATED_AT DESC");
//      ps.setString(1, "800");
//      ps.setString(2, "BUS2200");
//      ps.setString(3, "I1011"); // Adapt to status succceed later
      ps = con.prepareStatement("select HEADER.OBJECT_ID, HEADER.DESCRIPTION from "+remote_prefix+lv_hdr_tbl+" HEADER, "+remote_prefix+lv_stat_tbl+" STAT where HEADER.CLIENT = ? and HEADER.OBJECT_TYPE = ? AND HEADER.OBJECT_ID = substr(STAT.RFX, 1, 10) AND substr(STAT.RFX, 11, 14) = '0007' AND STAT.STATUS = ? order by HEADER.CREATED_AT DESC");
      ps.setString(1, "800");
      ps.setString(2, "BUS2200");
      ps.setString(3, "A");
      ResultSet queryResult = ps.executeQuery();
      String objID = "";
      String description = "";
      while (queryResult.next()) {
        objID   = queryResult.getString(1);
        description = queryResult.getString(2);
        //System.out.println("RFX ID:" + objID);
        tblRfxSucceed.appendRow();
        tblRfxSucceed.setValue("RFX_ID", objID);
        tblRfxSucceed.setValue("DESCRIPTION", description);
        tblRfxSucceed.setValue("STAT", "I1011");
      }
      jFunction.getExportParameterList().setValue("ET_RFX_SUCCEED_READ", tblRfxSucceed);
      queryResult.close();
      ps.close();
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  /**
   *  Read successful RFX detail
   * 
   */
  public void rfxSucceedDetail()
  {
    JCoTable tblRfxDetail = jFunction.getExportParameterList().getTable("ET_RFX_SUC_DETAIL");
    String rfxID = jFunction.getImportParameterList().getString("RFX_ID");
    DBFactory factory = new DBFactory();
    Connection con = factory.getConnection();
    PreparedStatement ps = null;
    String tblHeader = "CRMD_ORDERADM_H";
    String tblItem   = "CRMD_ORDERADM_I";
    String tblVersion = "BBP_PDHGP";
    String tblRoles  = "SRRELROLES";
    String tblRoleRel = "BBP_PDBINREL";
    String tblPDIGP  = "BBP_PDIGP";
    String tblBut    = "BUT000";
    String tblPart   = "CRMD_PARTNER";
    String tblLink   = "CRMD_LINK";
    ResultSet queryResult = null;
    try {
      ps = con.prepareStatement("select ITEM.GUID, ITEM.NUMBER_INT, ITEM.DESCRIPTION_UC, HEADER.DESCRIPTION FROM "+remote_prefix+tblHeader+" HEADER, "+remote_prefix+tblItem+" ITEM, "+remote_prefix+tblVersion+" VERSION where HEADER.OBJECT_ID =? AND HEADER.GUID = ITEM.HEADER AND HEADER.OBJECT_TYPE = ? AND VERSION.GUID = HEADER.GUID AND VERSION.VERSION_TYPE = ' ' AND HEADER.CLIENT = '800' AND ITEM.CLIENT = '800' AND VERSION.CLIENT = '800'");
      ps.setString(1, rfxID);
      ps.setString(2, "BUS2200");
        queryResult = ps.executeQuery();
        ArrayList<byte[]> rfxItemGuidList = new ArrayList<byte[]>();
        ArrayList<String> rfxItemGuidStrList = new ArrayList<String>();
        ArrayList<String> rfxBidderNameList = new ArrayList<String>();
        while (queryResult.next())
        {
          tblRfxDetail.appendRow();
          tblRfxDetail.setValue("RFX_ID", rfxID);
            tblRfxDetail.setValue("ITEM_NUM", queryResult.getString(2));
            tblRfxDetail.setValue("ITEM_DESC", queryResult.getString(3));
            tblRfxDetail.setValue("HDR_DESC", queryResult.getString(4));
            rfxItemGuidList.add(queryResult.getBytes(1));
            String itemStrGuid = byte2HexStr(queryResult.getBytes(1));
            rfxItemGuidStrList.add(itemStrGuid);
            System.out.println("RFX item GUID: "+itemStrGuid);
        }
        queryResult.close();
        ps.close();
        for(int i=0;i<rfxItemGuidStrList.size();i++)
        {
               ps = con.prepareStatement("select REL.ROLE_B FROM "+remote_prefix+tblRoles+" ROLE, "+remote_prefix+tblRoleRel+" REL WHERE ROLE.OBJKEY = ? AND ROLE.ROLEID = REL.ROLE_A AND ROLE.CLIENT = '800' AND REL.CLIENT = '800'");
               ps.setString(1, rfxItemGuidStrList.get(i));
               queryResult = ps.executeQuery();
               ArrayList<String> roleBList = new ArrayList<String>();
               while (queryResult.next())
               {
                 roleBList.add(queryResult.getString(1));
               }
               queryResult.close();
               ps.close();
               String awardedResItemGuidStr = "";
               for(int j=0;j<roleBList.size();j++)
               {
                 ps = con.prepareStatement("select OBJKEY from "+remote_prefix+tblRoles+" where ROLEID = ? AND CLIENT = '800'");
                 ps.setString(1, roleBList.get(j));
                 queryResult = ps.executeQuery();
                 String responseItemStrGuid = "";
                 if (queryResult.next());
                 {
                   responseItemStrGuid = queryResult.getString(1);
                   System.out.println("Response Item GUID: "+responseItemStrGuid);   
                 }
                 queryResult.close();
                   ps.close();
                   if (!responseItemStrGuid.equals(""))
                   {
                     ps = con.prepareStatement("select BB.DEDUCT_IND, BB.DEL_IND, BB.ACCEPT_STAT_CODE from "+remote_prefix+tblPDIGP+" BB, "+remote_prefix+tblRoles+" ROLE where BB.GUID = ROLE.OBJKEY AND ROLE.OBJKEY = ? AND BB.CLIENT = '800'");
                     ps.setString(1, responseItemStrGuid);
                     queryResult = ps.executeQuery();
                     String deductInd = "";
                     String delInd    = "";
                     String acceptStatCode = "";
                     if (queryResult.next())
                     {
                       deductInd      = queryResult.getString(1);
                         delInd         = queryResult.getString(2);
                         acceptStatCode = queryResult.getString(3); 
                         System.out.println("!!deductInd:"+ deductInd+";del_IND:"+delInd+";acceptCode:"+ acceptStatCode+"!!");
                     }                     
                     queryResult.close();
                     ps.close();
                     if (deductInd.equals(" ") && delInd.equals(" ") && !acceptStatCode.equals("R"))
                     {
                       System.out.println("Awarded item is found: "+responseItemStrGuid);
                       awardedResItemGuidStr = responseItemStrGuid;
                       break;
                     }
                   }
               }
               if (awardedResItemGuidStr.equals("") )
               {
                 System.out.println("Awarded vendor is NOT found for Item "+ i);
                 rfxBidderNameList.add("Successful bidder is not found for this item");
                 continue;
               }
               ps = con.prepareStatement("select ITEM.HEADER from "+remote_prefix+tblItem+" ITEM, "+remote_prefix+tblRoles+" ROLE where ITEM.GUID = ROLE.OBJKEY AND ROLE.OBJKEY = ? AND ITEM.CLIENT = '800'");
               ps.setString(1, awardedResItemGuidStr);
               queryResult = ps.executeQuery();
               byte[] resHdrGuid = null;
               String resHdrGuidStr = "";
               if (queryResult.next())
               {
                resHdrGuid = queryResult.getBytes(1); 
                resHdrGuidStr = byte2HexStr(resHdrGuid);
               }
               queryResult.close();
               ps.close();
               if (!resHdrGuidStr.equals(""))
               {
                 ps = con.prepareStatement("select BU.NAME_ORG1 from "+remote_prefix+tblBut+" BU, "+remote_prefix+tblPart+" PART, "+remote_prefix+tblHeader+" HEADER, "+remote_prefix+tblLink+" LINK, "+remote_prefix+tblRoles+" ROLE where PART.PARTNER_NO = BU.PARTNER_GUID AND HEADER.GUID = LINK.GUID_HI AND PART.GUID = LINK.GUID_SET AND LINK.OBJTYPE_SET = '07' AND PART.PARTNER_FCT = '00000018' AND HEADER.GUID = ROLE.OBJKEY AND ROLE.OBJKEY = ? AND HEADER.CLIENT = '800'");
                   ps.setString(1, resHdrGuidStr);
                   queryResult = ps.executeQuery();
                   if (queryResult.next())
                   {
                     String orgName = queryResult.getString(1);
                     rfxBidderNameList.add(orgName);
                     System.out.println("Awarded bidder found for item "+i+": "+orgName);
                   }
                   queryResult.close();
                   ps.close();
               }
        }
        for(int i=0;i<rfxBidderNameList.size();i++)
        {
          tblRfxDetail.setRow(i);
          tblRfxDetail.setValue("BIDDER_NAME", rfxBidderNameList.get(i));
        }
        jFunction.getExportParameterList().setValue("ET_RFX_SUC_DETAIL", tblRfxDetail);
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } 
  }
  /**
   * Convert byte array to string
   * @param byte array
   * @return string 
   */
  public static String byte2HexStr(byte[] b) {
        String hs="";
        String stmp="";
        for (int n=0;n<b.length;n++) {
            stmp=(Integer.toHexString(b[n] & 0XFF));
            if (stmp.length()==1) hs=hs+"0"+stmp;
            else hs=hs+stmp;
            //if (n<b.length-1)  hs=hs+":";
        }
        return hs.toUpperCase();
    }
  /**
     * Convert hex string to byte[]
     * @param hex String
     * @return byte[]
     */
  /**
   * 
    public static byte[] hexStr2Bytes(String src) {
        int m=0,n=0;
        int l=src.length()/2;
        System.out.println(l);
        byte[] ret = new byte[l];
        for (int i = 0; i < l; i++) {
            m=i*2+1;
            n=m+1;
            ret[i] = uniteBytes(src.substring(i*2, m),src.substring(m,n));
        }
        return ret;
    }
    private static byte uniteBytes(String src0, String src1) {
        byte b0 = Byte.decode("0x" + src0).byteValue();
        b0 = (byte) (b0 << 4);
        byte b1 = Byte.decode("0x" + src1).byteValue();
        byte ret = (byte) (b0 | b1);
        return ret;
    }
  */
  private void ProcessTableUpdate(ResultSet queryResult, String lv_table_name, String[] str_keys, Connection con){
    try {
      String str_condition = " where ";
      System.out.print("Key for table:");
      for (int i = 0; i < str_keys.length;i++)
      {
        str_condition = str_condition + ((i==0)?"":" and ") + str_keys[i] + " = ? ";
      }
      System.out.println();
      int count = 0;
      PreparedStatement ps_insert = null;
      PreparedStatement ps_update = null;
      //Retrieve Meta Data
      ResultSetMetaData oMetaData = queryResult.getMetaData(); 
      int i_columns = oMetaData.getColumnCount();
      System.out.println("The number of columns for table " + lv_table_name + " is " + i_columns);
      String[] str_columns = new String[i_columns];
      String field_list = "";
      String value_list = "";     
      String update_list = "";
      System.out.print("Fields List:");
      for(int i=0; i< i_columns; i++){
        str_columns[i] = oMetaData.getColumnName(i+1);
        System.out.print(str_columns[i]);
        field_list = field_list + ((i==0)?str_columns[i]:(","+str_columns[i]));
        value_list = value_list +  ((i==0)?"?":",?");
      }
      System.out.println();
      for(int i=0; i< i_columns; i++){
        update_list = update_list + ((i==0)?"":", ") + str_columns[i] + " = ? ";
      }
      //Prepare insert statement
      String sql = "insert into "+ remote_prefix +lv_table_name + " ("+field_list + ") values (" + value_list + ")";
      System.out.println(sql);
      ps_insert = con.prepareStatement(sql);
      //Prepare update statement
      sql = "update "+ remote_prefix +lv_table_name + " set " + update_list + str_condition;
      System.out.println(sql);
      ps_update = con.prepareStatement(sql);
      while (queryResult.next()) {
        count++;
        //Check whether the data record exists
        PreparedStatement ps = null;
        sql= "select count(*) from "+ remote_prefix + lv_table_name + str_condition;
        ps = con.prepareStatement(sql);
        Object[] obj_keys_value = new Object[str_keys.length];
        for(int i=0;i< str_keys.length;i++){
          obj_keys_value[i] = queryResult.getObject(str_keys[i]);
          ps.setObject(i+1, obj_keys_value[i]);
        }
        ResultSet queryResult1 = ps.executeQuery();
        int flag = 0;
        if(queryResult1.next()){
          flag = queryResult1.getInt(1);
        }
        ps.close();
        if(flag==0){
          //Insert new record
          for(int j=0;j<str_columns.length; j++){
            ps_insert.setObject(j+1, queryResult.getObject(str_columns[j]));
          }
          ps_insert.addBatch();
        }else{
          //Update existing record
          for(int j=0;j<str_columns.length; j++){
            ps_update.setObject(j+1, queryResult.getObject(str_columns[j]));
          }
          for(int j=0; j<str_keys.length; j++){
            ps_update.setObject(j+1+ str_columns.length, obj_keys_value[j]);
          }
          ps_update.addBatch();
        }
      }
      //with batch
      ps_insert.executeBatch();
      ps_insert.close();
      ps_update.executeBatch();
      ps_update.close();
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  private void ProcessTableInsert(ResultSet queryResult, String lv_table_name, Connection local_conn){
    try {
      WriteLogln("Processing table " + lv_table_name);
      ResultSetMetaData oMetaData = queryResult.getMetaData(); 
      int i_columns = oMetaData.getColumnCount();
      WriteLogln("The number of columns for table " + lv_table_name + " is " + i_columns);
      String[] str_columns = new String[i_columns];
      String field_list = "";
      String value_list = "";
      WriteLog("Fields List:");
      for(int i=0; i< i_columns; i++){
        str_columns[i] = oMetaData.getColumnName(i+1);
        WriteLog(str_columns[i]+" ");
        field_list = field_list + ((i==0)?str_columns[i]:(","+str_columns[i]));
        value_list = value_list +  ((i==0)?"?":",?");
      }
      WriteLogln("");
      //Prepare statement for local insert
      String sql = "insert into " + local_prefix + lv_table_name + " ("+field_list + ") values (" + value_list + ")";
      WriteLogln(sql);
      PreparedStatement local_ps = local_conn.prepareStatement(sql);
      int count = 0;
      while (queryResult.next()) {
        count++;
        for(int j=0;j<str_columns.length; j++){
          local_ps.setObject(j+1, queryResult.getObject(str_columns[j]));
        }
        //add to batch
        local_ps.addBatch();
      }
      WriteLogln("Total records:" + count);
      //execute the batch
      local_ps.executeBatch();
      local_ps.close();
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      WriteLogln(e.getMessage());
      WriteLogln(e.getSQLState());
    }
  }
}
相关文章
|
7天前
|
搜索推荐 Java 索引
|
7天前
|
搜索推荐 Java 索引
|
7天前
|
搜索推荐 Java 索引
|
7天前
|
搜索推荐 Java 索引
|
3天前
|
Java 开发者
Java中的Lambda表达式:简化你的代码之旅
【8月更文挑战第17天】 在编程的海洋中,简洁是航行的风帆。Lambda表达式,作为Java 8的一大亮点,为开发者提供了一种更为紧凑、易读的编码方式。本篇文章将带你领略Lambda表达式的魅力,从基础概念到实际应用,让你的代码像诗句一样流畅。
13 4
|
1天前
|
Java 开发者
在Java编程的广阔天地中,if-else与switch语句犹如两位老练的舵手,引领着代码的流向,决定着程序的走向。
在Java编程中,if-else与switch语句是条件判断的两大利器。本文通过丰富的示例,深入浅出地解析两者的特点与应用场景。if-else适用于逻辑复杂的判断,而switch则在处理固定选项或多分支选择时更为高效。从逻辑复杂度、可读性到性能考量,我们将帮助你掌握何时选用哪种语句,让你在编程时更加得心应手。无论面对何种挑战,都能找到最适合的解决方案。
5 1
|
7天前
|
搜索推荐 Java
|
7天前
|
搜索推荐 Java
|
7天前
|
搜索推荐 Java