/*
 * ITOK Technologies Ltd.
 * @author Francis Lau
 * @version 1.01
 */

//package com.itok.global.db;

import COM.ibm.db2.jdbc.net.*;
//import db2java.zip;
//import COM.ibm.db2.jdbc.app.*;
import java.util.Vector;
import java.sql.*;
import java.math.*;

/**
  * AccessDB -- 
  * This class will handle query process of one sql statement.
  */

public class AccessDB{
    Connection          connection;
    Statement           statement;
    ResultSet           resultSet;
    Vector		rows;
    ResultSetMetaData   metaData;
    String[]            columnNames = {}; 
    Class[]             columnTpyes = {}; 

//    String url = "jdbc:db2://192.168.3.5:6789/MSER";
//    String url = "jdbc:db2://127.0.0.1:6789/MSER";
    				//String url = "jdbc:db2://192.168.3.1:6789/MSER";
    				String url = "jdbc:db2://192.168.3.247:6789/MSER";
    //String url = "jdbc:db2://192.168.3.1:6789/MSER";
    //String url = "jdbc:db2://www.dvdshelf.com:6789/MSER";
    String driverName = "COM.ibm.db2.jdbc.net.DB2Driver";
//    String url = "jdbc:db2:MSER";
//    String driverName = "COM.ibm.db2.jdbc.app.DB2Driver";
    String user = "ncadmin";
    String passwd = "dvdapp1";
//    String passwd = "francisl";
    int UpdateCount;

   public AccessDB(String query){
        try {
            //System.out.println("Opening DB driver!");
            Class.forName(driverName);
            //System.out.println("Opening DB connection!");
            connection = DriverManager.getConnection(url, user, passwd);
             //System.out.println("DB connected!");
            statement = connection.createStatement();
       
       
        if(statement.execute(query)) {
       
       	    ResultSet resultSet = statement.getResultSet();
            metaData = resultSet.getMetaData();
            //System.out.println("result was got");
            //System.out.println("metaData was got");

            int numberOfColumns =  metaData.getColumnCount(); 
            columnNames = new String[numberOfColumns]; 
            
            // Get the column names and cache them. 
            // Then we can close the connection. 
            for(int column = 0; column < numberOfColumns; column++) { 
                columnNames[column] = metaData.getColumnLabel(column+1);
            }

            // Get all rows.
            rows = new Vector();
            while (resultSet.next()) {
                Vector newRow = new Vector();
                for (int i = 1; i <= getColumnCount(); i++) {
	            newRow.addElement(resultSet.getObject(i));
                }
                rows.addElement(newRow);
                //System.out.println(rows);
            }
            //System.out.println("Data was put into vector sucessfully");
            //  close(); Need to copy the metaData, bug in jdbc:odbc driver. 
            //fireTableChanged(null); // Tell the listeners a new table has arrived. 
          	resultSet.close();  
          	//System.out.println("resultSet was closed");
          	
        }
        
        UpdateCount = statement.getUpdateCount();    
        //System.out.println(UpdateCount);
        
        statement.close();
        //System.out.println("statement was closed");
        connection.close();
//        System.out.println("connection was closed");
             
      }
   
        catch (Exception ex) {
            ex.printStackTrace();
        }    
    }

public Vector getContent(){
	return rows;
}

public int getColumnCount() {
        return columnNames.length; 
    }
    
public String getColumnName(int column) {
       if (columnNames[column] != null) { 
            return columnNames[column]; 
        } else { 
            return ""; 
        }
    }

public int getRowCount() {
        return rows.size();
    }
    
public Object getValueAt(int aRow, int aColumn) {
        Vector row = (Vector)rows.elementAt(aRow);
        return row.elementAt(aColumn);
    }

public int getUpdateCount(){
	return UpdateCount;	
}
        
public static String fixCharacter(String s){
	
	if(s != null){
		
		String quote = "'";
		char c = quote.charAt(0);
		StringBuffer s2 = new StringBuffer(s);

		for(int i = 0; i < s2.length(); i++){

			if(s2.charAt(i) == c){
			s2.insert(i, c);
			i++;
			}
		}			
		s = s2.toString();
	}
	return s;
}	        
        
        
public static void main(String argv[]){

// ************** Item Attributes & Values ************
	String q1 = "select * from ncadmin.shopper where shlogid = 'wilsonc' ";

       AccessDB ac = new AccessDB(q1);
       
       try{	//test 1

		for(int i=0; i < ac.getRowCount(); i++){

			System.out.println( ((String) ac.getValueAt(i, 0)) );
//			stat += ((BigDecimal) ac.getValueAt(i, 1)).toString() + ")";
//			stat += ((Integer) ac.getValueAt(i, 7)).toString() + ", ";
//			stat += "'" + AccessDB.fixCharacter((String) ac.getValueAt(i, 1)) + "')";
			
		}

//		System.out.println( ac.getRowCount());

       }
       catch(Exception e){
                e.printStackTrace();
       }
       try{         // for stop the program!
//		System.in.read();
       }
       catch(Exception e){
	}

}

}
