Diff for /FM2SQL/src/DBBean.java between versions 1.3 and 1.5

version 1.3, 2005/09/06 10:53:16 version 1.5, 2006/09/30 10:58:58
Line 79  public class DBBean Line 79  public class DBBean
   Hashtable connectionPool = new Hashtable();    Hashtable connectionPool = new Hashtable();
   public ResultSetMetaData metaData;    public ResultSetMetaData metaData;
   // register DataBase Drivers    // register DataBase Drivers
     public static String[] jdbcDrivers = { 
         "com.fmi.jdbc.JdbcDriver",
         "org.postgresql.Driver",
         "com.mysql.jdbc.Driver",
         "sun.jdbc.odbc.JdbcOdbcDriver",
         "com.ddtek.jdbc.sequelink.SequeLinkDriver",
         "acs.jdbc.Driver"
     };
   static {    static {
     try        for (int i = 0; i < jdbcDrivers.length; i++) {
     {            String driverName = jdbcDrivers[i];
       DriverManager.registerDriver(new com.fmi.jdbc.JdbcDriver());            try {
       DriverManager.registerDriver((Driver) Class.forName("org.postgresql.Driver").newInstance());                System.out.println("trying to load jdbc driver "+driverName);
       DriverManager.registerDriver((Driver) Class.forName("com.mysql.jdbc.Driver").newInstance());                DriverManager.registerDriver((Driver) Class.forName(driverName).newInstance());
       DriverManager.registerDriver((Driver) Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance());                System.out.println(driverName+" loaded OK");
       DriverManager.registerDriver((Driver) Class.forName("com.ddtek.jdbc.sequelink.SequeLinkDriver").newInstance());            } catch (Exception e) {
       DriverManager.registerDriver((Driver) Class.forName("acs.jdbc.Driver").newInstance());                e.printStackTrace();
              }
         }
       // 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);
     } catch (Exception e)  
     {  
       System.out.println(e);  
     }  
   }    }
   
   /**    /**
    * Constructs a database bean     * Constructs a database bean
    */     */
Line 1000  public class DBBean Line 1006  public class DBBean
     if (!check)      if (!check)
       return null;        return null;
     Vector tableRow = new Vector(), m_columnClasses = new Vector();      Vector tableRow = new Vector(), m_columnClasses = new Vector();
     for (int i = 1; i <= columnCount; i++)      for (int i = 1; i <= columnCount; i++) {
     {  
       // repeating fields and fields from related databases may contain        // repeating fields and fields from related databases may contain
       // multliple data values; the data values are stored using        // multliple data values; the data values are stored using
       // a Vector which is then added to the tableRow        // a Vector which is then added to the tableRow
       //      if (metaData instanceof ResultSetMetaDataExt)        //      if (metaData instanceof ResultSetMetaDataExt)
       if ((metaData instanceof ResultSetMetaDataExt) && (((ResultSetMetaDataExt) metaData).isRelated(i) || ((ResultSetMetaDataExt) metaData).isRepeating(i)))              if ((metaData instanceof ResultSetMetaDataExt)
       {                      && (((ResultSetMetaDataExt) metaData).isRelated(i) || ((ResultSetMetaDataExt) metaData)
                               .isRepeating(i))) {
         //System.out.println("Related fields");          //System.out.println("Related fields");
         // retrieve the repeating or related field contents as a          // retrieve the repeating or related field contents as a
         // com.fmi.jdbc.Array via the ResultSet.getObject method          // com.fmi.jdbc.Array via the ResultSet.getObject method
         com.fmi.jdbc.Array array = (com.fmi.jdbc.Array) resultSet.getObject(i);                  com.fmi.jdbc.Array array = (com.fmi.jdbc.Array) resultSet
                           .getObject(i);
         //            create a Vector for storing all of the data values          //            create a Vector for storing all of the data values
         ArrayList columnData = new ArrayList();          ArrayList columnData = new ArrayList();
         try                  try {
         {  
   
           // call the Array.getStringArray method since the data will            // call the Array.getStringArray method since the data will
           // only be displayed            // only be displayed
           Object[] fieldData = (Object[]) array.getArray();            Object[] fieldData = (Object[]) array.getArray();
   
           if (fieldData != null)                      if (fieldData != null) {
           {  
             // add each value to the Vector              // add each value to the Vector
             for (int j = 0; j < fieldData.length; j++)                          for (int j = 0; j < fieldData.length; j++) {
             {  
               if (fieldData[j] != null)                if (fieldData[j] != null)
                 columnData.add(fieldData[j]);                  columnData.add(fieldData[j]);
             }              }
           }            }
         } catch (Exception e)                  } catch (Exception e) {
         {  
           //System.out.println(e);            //System.out.println(e);
         }          }
   
Line 1040  public class DBBean Line 1043  public class DBBean
         else          else
           tableRow.addElement(columnData);            tableRow.addElement(columnData);
         //System.out.println(columnData);          //System.out.println(columnData);
         //System.out.println("Related fields"+columnData.size()+" "+tableRow.size());                  // System.out.println("Related fields"+columnData.size()+"
                   // "+tableRow.size());
   
         // m_columnClasses.addElement(java.util.Vector.class);          // m_columnClasses.addElement(java.util.Vector.class);
       } else if (metaData.getColumnType(i) == Types.LONGVARBINARY)              } else if (metaData.getColumnType(i) == Types.LONGVARBINARY) {
       {  
         // use the ResultSet.getObject method for retrieving images          // use the ResultSet.getObject method for retrieving images
         // from FileMaker Pro container fields; the ResultSet.getObject          // from FileMaker Pro container fields; the ResultSet.getObject
         // 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                  try {
         {  
           tableRow.addElement(null);            tableRow.addElement(null);
           // image objects removed from resultset !!!            // image objects removed from resultset !!!
           //tableRow.addElement(resultSet.getObject(i));            //tableRow.addElement(resultSet.getObject(i));
         } catch (Exception e)                  } catch (Exception e) {
         {  
           // TODO Auto-generated catch block            // TODO Auto-generated catch block
           // e.printStackTrace();            // e.printStackTrace();
           tableRow.addElement(null);            tableRow.addElement(null);
         }          }
         //    m_columnClasses.addElement(java.awt.Image.class);          //    m_columnClasses.addElement(java.awt.Image.class);
       } else if (metaData.getColumnType(i) == Types.TIME)              } else if (metaData.getColumnType(i) == Types.TIME) {
       {  
         // use the ResultSet.getObject method for retieving images          // use the ResultSet.getObject method for retieving images
         // from FileMaker Pro container fields; the ResultSet.getObject          // from FileMaker Pro container fields; the ResultSet.getObject
         // 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                  try {
         {  
           tableRow.addElement(resultSet.getTime(i).toString());            tableRow.addElement(resultSet.getTime(i).toString());
           //    m_columnClasses.addElement(java.sql.Time.class);            //    m_columnClasses.addElement(java.sql.Time.class);
         } catch (Exception e)                  } catch (Exception e) {
         {  
   
           String value = resultSet.getString(i);            String value = resultSet.getString(i);
           if (value != null)                      if (value != null) {
           {                          // System.out.println("SQLTime new
             //System.out.println("SQLTime new "+Time.valueOf("17:00:00").toString());                          // "+Time.valueOf("17:00:00").toString());
             int index = 0;              int index = 0;
             for (int j = 0; j < value.length(); ++j)                          for (int j = 0; j < value.length(); ++j) {
             {  
               if (!Character.isLetter(value.charAt(j)))                if (!Character.isLetter(value.charAt(j)))
                 index = j + 1;                  index = j + 1;
               else                else
Line 1095  public class DBBean Line 1092  public class DBBean
           //  m_columnClasses.addElement(String.class);            //  m_columnClasses.addElement(String.class);
         } // to catch          } // to catch
   
       } else if (metaData.getColumnType(i) == Types.INTEGER)              } else if (metaData.getColumnType(i) == Types.INTEGER) {
       {  
         // use the ResultSet.getObject method for retieving images          // use the ResultSet.getObject method for retieving images
         // from FileMaker Pro container fields; the ResultSet.getObject          // from FileMaker Pro container fields; the ResultSet.getObject
         // method returns a java.awt.Image object for FileMaker Pro          // method returns a java.awt.Image object for FileMaker Pro
Line 1104  public class DBBean Line 1100  public class DBBean
   
         tableRow.addElement(new Integer(resultSet.getInt(i)));          tableRow.addElement(new Integer(resultSet.getInt(i)));
         //  m_columnClasses.addElement(java.sql.Date.class);          //  m_columnClasses.addElement(java.sql.Date.class);
       } else if (metaData.getColumnType(i) == Types.DATE)              } else if (metaData.getColumnType(i) == Types.DATE) {
       {  
         // use the ResultSet.getObject method for retieving images          // use the ResultSet.getObject method for retieving images
         // from FileMaker Pro container fields; the ResultSet.getObject          // from FileMaker Pro container fields; the ResultSet.getObject
         // 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                  try {
         {  
           tableRow.addElement(resultSet.getDate(i));            tableRow.addElement(resultSet.getDate(i));
   
         } catch (Exception e)                  } catch (Exception e) {
         {  
           // work around for parse bug in FM JDBC Driver             // work around for parse bug in FM JDBC Driver 
           // for dates of format dd-mm-yyyy            // for dates of format dd-mm-yyyy
           String date = resultSet.getString(i);            String date = resultSet.getString(i);
           date = date.replace('-', '.');            date = date.replace('-', '.');
           java.text.DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, Locale.GERMAN);                      java.text.DateFormat dateFormat = DateFormat
                               .getDateInstance(DateFormat.SHORT, Locale.GERMAN);
           java.util.Date d = dateFormat.parse(date);            java.util.Date d = dateFormat.parse(date);
           // Calendar cal=Calendar.getInstance(Locale.GERMAN);            // Calendar cal=Calendar.getInstance(Locale.GERMAN);
           // cal.setTime(d);            // cal.setTime(d);
Line 1129  public class DBBean Line 1123  public class DBBean
           System.out.println("Date " + date);            System.out.println("Date " + date);
         }          }
         //  m_columnClasses.addElement(java.sql.Date.class);          //  m_columnClasses.addElement(java.sql.Date.class);
       } 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
         // from FileMaker Pro container fields; the ResultSet.getObject          // from FileMaker Pro container fields; the ResultSet.getObject
         // 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                  try {
         {  
             Double value =new Double(resultSet.getDouble(i));              Double value =new Double(resultSet.getDouble(i));
                       
             
           // tableRow.addElement(new Double(resultSet.getDouble(i)));            // tableRow.addElement(new Double(resultSet.getDouble(i)));
           String tVal =value.toString();            String tVal =value.toString();
           tVal = tVal.substring(tVal.indexOf('.')+1);            tVal = tVal.substring(tVal.indexOf('.')+1);
Line 1152  public class DBBean Line 1143  public class DBBean
         
           // m_columnClasses.addElement(Integer.class);            // m_columnClasses.addElement(Integer.class);
   
         } catch (Exception e)                  } catch (Exception e) {
         {  
   
           StringBuffer number = new StringBuffer();            StringBuffer number = new StringBuffer();
           String value = resultSet.getString(i);            String value = resultSet.getString(i);
           System.out.println(value);            System.out.println(value);
           for (int c = 0; c < value.length(); ++c)                      for (int c = 0; c < value.length(); ++c) {
           {                          if (Character.isDigit(value.charAt(c))) {
             if (Character.isDigit(value.charAt(c)))  
             {  
               number.append(value.charAt(c));                number.append(value.charAt(c));
             }              }
           }            }
           if (number.length() > 0)                      if (number.length() > 0) {
           {  
             tableRow.addElement(null);              tableRow.addElement(null);
             //   m_columnClasses.addElement(Integer.class);              //   m_columnClasses.addElement(Integer.class);
           } else            } else
             tableRow.addElement(null);              tableRow.addElement(null);
         }          }
       } else              } else {
       {  
         // all other field values are retrieved as strings and          // all other field values are retrieved as strings and
         // added to the tableRow Vector          // added to the tableRow Vector
         //   System.out.println("row "+resultSet.getString(i));          //   System.out.println("row "+resultSet.getString(i));
         try                  try {
         {  
           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)                      /*
              {                       * if (b != null) { java.io.ByteArrayInputStream stream =
                java.io.ByteArrayInputStream stream = (java.io.ByteArrayInputStream) resultSet.getBinaryStream(i);                       * (java.io.ByteArrayInputStream)
                //    System.out.println(" stream "+resultSet.getBinaryStream(i));                       * resultSet.getBinaryStream(i); // System.out.println("
                byte[] c = new byte[stream.available()];                       * stream "+resultSet.getBinaryStream(i)); byte[] c = new
                int length = stream.read(c, 0, c.length);                       * byte[stream.available()]; int length = stream.read(c, 0,
                int count = 0;                       * c.length); int count = 0; b = new byte[c.length]; for
                b = new byte[c.length];                       * (int n = 0; n < length; ++n) {
                for (int n = 0; n < length; ++n)                       * 
                {                       * if (c[n] != 0) { // System.out.println(c[n]+"
                                  * "+(int)'?'+" "+(char)c[n]+" "+count+" "+b.length);
                  if (c[n] != 0)                       * b[count++] = c[n]; } } byte[] bCopy = new byte[count];
                  {                       * System.arraycopy(b, 0, bCopy, 0, count); b = bCopy; }
                    //     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);
           if (metaData instanceof ResultSetMetaDataExt)                      if (metaData instanceof ResultSetMetaDataExt) {
           {  
             String rowElement = "";              String rowElement = "";
             if (b != null)                          if (b != null) {
             {  
               rowElement = resultSet.getString(i);                rowElement = resultSet.getString(i);
               if (useNormanToUnicodeMapper)                if (useNormanToUnicodeMapper)
                 rowElement = Convert.normanToUnicode(rowElement);                                  rowElement = Convert
                                           .normanToUnicode(rowElement);
               tableRow.addElement(rowElement);                tableRow.addElement(rowElement);
   
             } else              } else
               tableRow.addElement(null);                tableRow.addElement(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);
               for (int j = 0; j < val.length; ++j)                for (int j = 0; j < val.length; ++j)
                 System.out.println(Integer.toHexString(val[j]));                  System.out.println(Integer.toHexString(val[j]));
               tableRow.addElement((val == null) ? null : new String(val));                              tableRow.addElement((val == null) ? null
                                       : new String(val));
   
             } else                          } else {
               //  byte[] val = resultSet.getBytes(i);  
               tableRow.add(resultSet.getString(i));                tableRow.add(resultSet.getString(i));
             //tableRow.addElement((val==null) ? null:new String(val,"UTF-8"));                              //byte[] val = resultSet.getBytes(i);
                               //System.out.println("string data:"+resultSet.getString(i));
                               /*if (val != null) {
                                   tableRow.add(new String(val,"UTF-8"));
                               } else {
                                   tableRow.add(null);
                               }*/
           }            }
         } catch (Exception e)                      }
         {                  } catch (Exception e) {
           System.out.println("Hey I got an error" + e);            System.out.println("Hey I got an error" + e);
           e.printStackTrace();            e.printStackTrace();
         }          }

Removed from v.1.3  
changed lines
  Added in v.1.5


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