Diff for /FM2SQL/Attic/DBBean.java between versions 1.17 and 1.23

version 1.17, 2004/04/30 10:56:06 version 1.23, 2004/06/21 11:31:35
Line 16 Line 16
   
 import java.sql.*;  import java.sql.*;
 import java.text.DateFormat;  import java.text.DateFormat;
   import java.text.ParseException;
 import java.util.*;  import java.util.*;
   
 import com.fmi.jdbc.*;  import com.fmi.jdbc.*;
Line 85  public class DBBean Line 86  public class DBBean
       DriverManager.registerDriver((Driver) Class.forName("org.postgresql.Driver").newInstance());        DriverManager.registerDriver((Driver) Class.forName("org.postgresql.Driver").newInstance());
       DriverManager.registerDriver((Driver) Class.forName("com.mysql.jdbc.Driver").newInstance());        DriverManager.registerDriver((Driver) Class.forName("com.mysql.jdbc.Driver").newInstance());
       DriverManager.registerDriver((Driver) Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance());        DriverManager.registerDriver((Driver) Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance());
         DriverManager.registerDriver((Driver) Class.forName("acs.jdbc.Driver").newInstance());
             
       // wait a maximum of 10 seconds when attempting to establish a connection        // wait a maximum of 10 seconds when attempting to establish a connection
       DriverManager.setLoginTimeout(10);        DriverManager.setLoginTimeout(10);
Line 152  public class DBBean Line 154  public class DBBean
     ConnectionPool conPool = (ConnectionPool) connectionPool.get(url);      ConnectionPool conPool = (ConnectionPool) connectionPool.get(url);
     if (conPool == null)      if (conPool == null)
     {      {
       connection = DriverManager.getConnection(url, user, passwd);        createConnection();  
       connectionPool.put(url, new ConnectionPool(url, user, passwd, connection));        
     } else      } else
     {      {
       if (!conPool.user.equals(user) || !conPool.passwd.equals(passwd))        if (!conPool.user.equals(user) || !conPool.passwd.equals(passwd))
Line 167  public class DBBean Line 169  public class DBBean
       if (connection.isClosed())        if (connection.isClosed())
       {        {
         System.out.println("Made new connection!!!");          System.out.println("Made new connection!!!");
         connection = DriverManager.getConnection(conPool.url, conPool.user, conPool.passwd);          createConnection();  
      
          // connection = DriverManager.getConnection(conPool.url, conPool.user, conPool.passwd);
         conPool.con = connection;          conPool.con = connection;
       }        }
     }      }
     if (url != "" && connection == null)      if (url != "" && connection == null)
       connection = DriverManager.getConnection(url, user, passwd);        createConnection();
         //connection = DriverManager.getConnection(url, user, passwd);
     dbMetaData = connection.getMetaData();      dbMetaData = connection.getMetaData();
     quoteChar = dbMetaData.getIdentifierQuoteString();      quoteChar = dbMetaData.getIdentifierQuoteString();
     if (quoteChar == null)      if (quoteChar == null)
Line 180  public class DBBean Line 185  public class DBBean
   
     return connection;      return connection;
   }    }
     private void createConnection() throws SQLException
     {
         // setup the properties 
          java.util.Properties prop = new java.util.Properties();
        // prop.put("charSet", "MacCentralEurope");
          prop.put("user", user);
          prop.put("password", passwd);
       System.out.println("url "+url);
       if(url.indexOf("fmpro")>=0)
       {
       // Connect to the database
         connection = DriverManager.getConnection(url, prop);
         System.out.println("odbc with properties inited");
       }
       else
       connection = DriverManager.getConnection(url, user, passwd);
       connectionPool.put(url, new ConnectionPool(url, user, passwd, connection));
       
     }
   /**    /**
    * sets the connection of this DBBean to the database specified in the url     * sets the connection of this DBBean to the database specified in the url
    *  property     *  property
Line 188  public class DBBean Line 212  public class DBBean
   {    {
     this.url = url;      this.url = url;
     if (url != "")      if (url != "")
       connection = DriverManager.getConnection(url, user, passwd);        //connection = DriverManager.getConnection(url, user, passwd);
       createConnection();
     dbMetaData = connection.getMetaData();      dbMetaData = connection.getMetaData();
     quoteChar = dbMetaData.getIdentifierQuoteString();      quoteChar = dbMetaData.getIdentifierQuoteString();
     if (quoteChar == null)      if (quoteChar == null)
Line 204  public class DBBean Line 229  public class DBBean
     this.passwd = passwd;      this.passwd = passwd;
     this.url = url;      this.url = url;
     if (url != "")      if (url != "")
       connection = DriverManager.getConnection(url, user, passwd);       createConnection();
        // connection = DriverManager.getConnection(url, user, passwd);
     dbMetaData = connection.getMetaData();      dbMetaData = connection.getMetaData();
     quoteChar = dbMetaData.getIdentifierQuoteString();      quoteChar = dbMetaData.getIdentifierQuoteString();
     if (quoteChar == null)      if (quoteChar == null)
Line 352  public class DBBean Line 378  public class DBBean
    *   Returns the result for select * from table     *   Returns the result for select * from table
    *   with maxHits = 500 default value     *   with maxHits = 500 default value
    */     */
   public Vector[] getQueryData(String table) throws SQLException    public Vector[] getQueryData(String table) throws SQLException,ParseException
   {    {
   
     return getQueryData("SELECT * from " + quoteChar + table + quoteChar, maxHits);      return getQueryData("SELECT * from " + quoteChar + table + quoteChar, maxHits);
Line 432  public class DBBean Line 458  public class DBBean
    *    Returns the result of the query     *    Returns the result of the query
    *    or an Vector array of Vectors containing error messages     *    or an Vector array of Vectors containing error messages
    */     */
   public Vector[] getQueryData(String query, int maxHits) throws SQLException    public Vector[] getQueryData(String query, int maxHits) throws SQLException, ParseException
   {    {
     long timeStart = System.currentTimeMillis();      long timeStart = System.currentTimeMillis();
     ResultSet resultSet = null;      ResultSet resultSet = null;
Line 561  public class DBBean Line 587  public class DBBean
           // method returns a java.awt.Image object for FileMaker Pro            // method returns a java.awt.Image object for FileMaker Pro
           // container fields            // container fields
   
                       try
                {
           tableRow.addElement(resultSet.getDate(i));            tableRow.addElement(resultSet.getDate(i));
           m_columnClasses.addElement(java.sql.Date.class);  
                } catch (Exception e)
                {
                    // work around for parse bug in FM JDBC Driver 
                    // for dates of format dd-mm-yyyy
                    String date=resultSet.getString(i);
                    date=date.replace('-','.');
                    java.text.DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT,Locale.GERMAN);
                    java.util.Date d= dateFormat.parse(date);
                   // Calendar cal=Calendar.getInstance(Locale.GERMAN);
                   // cal.setTime(d);
                   // date=(cal.get(Calendar.YEAR))+"-"+(cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.DATE);
                    tableRow.addElement(new java.sql.Date(d.getTime()));
                       System.out.println("Date "+date);      
                }
         } else if (metaData.getColumnTypeName(i) == "NUMBER")          } else if (metaData.getColumnTypeName(i) == "NUMBER")
         {          {
           // use the ResultSet.getObject method for retieving images            // use the ResultSet.getObject method for retieving images
Line 684  public class DBBean Line 726  public class DBBean
     long time = System.currentTimeMillis();      long time = System.currentTimeMillis();
     try {      try {
     stm.execute(query);      stm.execute(query);
     } catch(Exception e) {  
      // TODO remove  
      if(FM2SQL.fmInstance!=null)  
      FM2SQL.showErrorDialog("Error caught!! \n Query was  "+query+" \n","Debug Info");  
     }  
     long time2 = System.currentTimeMillis();      long time2 = System.currentTimeMillis();
         
     System.out.println("time to execute "+(time2-time));      System.out.println("time to execute "+(time2-time));
Line 697  public class DBBean Line 734  public class DBBean
     result = stm.getResultSet();      result = stm.getResultSet();
    // System.out.println(result+" "+stm.getUpdateCount());     // System.out.println(result+" "+stm.getUpdateCount());
     metaData = result.getMetaData();      metaData = result.getMetaData();
       } catch(Exception e) {
         // TODO remove
         if(FM2SQL.fmInstance!=null)
         FM2SQL.showErrorDialog("Error caught!! \n Query was  "+query+" \n","Debug Info");
        }
    
     return result;      return result;
   }    }
   /**    /**
Line 1336  public class DBBean Line 1379  public class DBBean
           byte[] b = null;            byte[] b = null;
           if (metaData instanceof ResultSetMetaDataExt)            if (metaData instanceof ResultSetMetaDataExt)
             b = resultSet.getBytes(i);              b = resultSet.getBytes(i);
          /*   if (b != null)
             {
               java.io.ByteArrayInputStream stream = (java.io.ByteArrayInputStream) resultSet.getBinaryStream(i);
               //    System.out.println(" stream "+resultSet.getBinaryStream(i));
               byte[] c = new byte[stream.available()];
               int length = stream.read(c, 0, c.length);
               int count = 0;
               b = new byte[c.length];
               for (int n = 0; n < length; ++n)
               {
   
                 if (c[n] != 0)
                 {
                   //     System.out.println(c[n]+" "+(int)'?'+" "+(char)c[n]+" "+count+" "+b.length);
                   b[count++] = c[n];
                 }
               }
               byte[] bCopy = new byte[count];
               System.arraycopy(b, 0, bCopy, 0, count);
               b = bCopy;
             }*/
           String utf8 = null;            String utf8 = null;
           utf8 = (b == null) ? null : new String(b);            utf8 = (b == null) ? null : new String(b,"MacRoman");
           if (metaData instanceof ResultSetMetaDataExt)            if (metaData instanceof ResultSetMetaDataExt)
             tableRow.addElement((b != null) ? new String(utf8.getBytes()) : null);              tableRow.addElement((b != null) ? Convert.normanToUnicode(resultSet.getString(i)) : null);
           else            else
           {            {
             if(url.toLowerCase().indexOf("odbc")>=0)              if(url.toLowerCase().indexOf("odbc")>=0)
            {             {
                byte[] val = resultSet.getBytes(i);                 byte[] val = resultSet.getBytes(i);
              tableRow.addElement((val==null) ? null:new String(val,"UTF-8"));               for(int j=0;j<val.length;++j)
                System.out.println(Integer.toHexString(val[j]));
                tableRow.addElement((val==null) ? null:new String(val));
               
            } else             } else
             //  byte[] val = resultSet.getBytes(i);              //  byte[] val = resultSet.getBytes(i);
Line 1441  public class DBBean Line 1507  public class DBBean
     metaData = (this.result==null) ?null:this.result.getMetaData();      metaData = (this.result==null) ?null:this.result.getMetaData();
     return t;      return t;
     }      }
       
 }  }
   

Removed from v.1.17  
changed lines
  Added in v.1.23


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>