home *** CD-ROM | disk | FTP | other *** search
/ Australian PC Authority 1999 May / may1999.iso / May / JBUILDER / JSAMPLES.Z / JDBCAdapter.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-30  |  5.5 KB  |  242 lines

  1. import com.sun.java.swing.event.TableModelEvent;
  2. import com.sun.java.swing.table.AbstractTableModel;
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.ResultSetMetaData;
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9. import java.util.Vector;
  10.  
  11. public class JDBCAdapter extends AbstractTableModel {
  12.    Connection connection;
  13.    Statement statement;
  14.    ResultSet resultSet;
  15.    String[] columnNames = new String[0];
  16.    Class[] columnTpyes = new Class[0];
  17.    Vector rows = new Vector();
  18.    ResultSetMetaData metaData;
  19.    // $FF: synthetic field
  20.    static Class class$java$lang$String;
  21.    // $FF: synthetic field
  22.    static Class class$java$lang$Boolean;
  23.    // $FF: synthetic field
  24.    static Class class$java$lang$Integer;
  25.    // $FF: synthetic field
  26.    static Class class$java$lang$Long;
  27.    // $FF: synthetic field
  28.    static Class class$java$lang$Double;
  29.    // $FF: synthetic field
  30.    static Class class$java$sql$Date;
  31.  
  32.    public JDBCAdapter(String var1, String var2, String var3, String var4) {
  33.       try {
  34.          Class.forName(var2);
  35.          System.out.println("Opening db connection");
  36.          this.connection = DriverManager.getConnection(var1, var3, var4);
  37.          this.statement = this.connection.createStatement();
  38.       } catch (ClassNotFoundException var6) {
  39.          System.err.println("Cannot find the database driver classes.");
  40.          System.err.println(var6);
  41.       } catch (SQLException var7) {
  42.          System.err.println("Cannot connect to this database.");
  43.          System.err.println(var7);
  44.       }
  45.    }
  46.  
  47.    public void executeQuery(String var1) {
  48.       if (this.connection != null && this.statement != null) {
  49.          try {
  50.             this.resultSet = this.statement.executeQuery(var1);
  51.             this.metaData = this.resultSet.getMetaData();
  52.             int var2 = this.metaData.getColumnCount();
  53.             this.columnNames = new String[var2];
  54.  
  55.             for(int var3 = 0; var3 < var2; ++var3) {
  56.                this.columnNames[var3] = this.metaData.getColumnLabel(var3 + 1);
  57.             }
  58.  
  59.             this.rows = new Vector();
  60.  
  61.             while(this.resultSet.next()) {
  62.                Vector var4 = new Vector();
  63.  
  64.                for(int var5 = 1; var5 <= this.getColumnCount(); ++var5) {
  65.                   var4.addElement(this.resultSet.getObject(var5));
  66.                }
  67.  
  68.                this.rows.addElement(var4);
  69.             }
  70.  
  71.             ((AbstractTableModel)this).fireTableChanged((TableModelEvent)null);
  72.          } catch (SQLException var6) {
  73.             System.err.println(var6);
  74.          }
  75.       } else {
  76.          System.err.println("There is no database to execute the query.");
  77.       }
  78.    }
  79.  
  80.    public void close() throws SQLException {
  81.       System.out.println("Closing db connection");
  82.       this.resultSet.close();
  83.       this.statement.close();
  84.       this.connection.close();
  85.    }
  86.  
  87.    protected void finalize() throws Throwable {
  88.       this.close();
  89.       super.finalize();
  90.    }
  91.  
  92.    public String getColumnName(int var1) {
  93.       return this.columnNames[var1] != null ? this.columnNames[var1] : "";
  94.    }
  95.  
  96.    public Class getColumnClass(int var1) {
  97.       int var2;
  98.       try {
  99.          var2 = this.metaData.getColumnType(var1 + 1);
  100.       } catch (SQLException var3) {
  101.          return super.getColumnClass(var1);
  102.       }
  103.  
  104.       switch (var2) {
  105.          case -7:
  106.             if (class$java$lang$Boolean != null) {
  107.                return class$java$lang$Boolean;
  108.             }
  109.  
  110.             return class$java$lang$Boolean = class$("java.lang.Boolean");
  111.          case -6:
  112.          case 4:
  113.          case 5:
  114.             if (class$java$lang$Integer != null) {
  115.                return class$java$lang$Integer;
  116.             }
  117.  
  118.             return class$java$lang$Integer = class$("java.lang.Integer");
  119.          case -5:
  120.             if (class$java$lang$Long != null) {
  121.                return class$java$lang$Long;
  122.             }
  123.  
  124.             return class$java$lang$Long = class$("java.lang.Long");
  125.          case -1:
  126.          case 1:
  127.          case 12:
  128.             if (class$java$lang$String != null) {
  129.                return class$java$lang$String;
  130.             }
  131.  
  132.             return class$java$lang$String = class$("java.lang.String");
  133.          case 6:
  134.          case 8:
  135.             if (class$java$lang$Double != null) {
  136.                return class$java$lang$Double;
  137.             }
  138.  
  139.             return class$java$lang$Double = class$("java.lang.Double");
  140.          case 91:
  141.             if (class$java$sql$Date != null) {
  142.                return class$java$sql$Date;
  143.             }
  144.  
  145.             return class$java$sql$Date = class$("java.sql.Date");
  146.          default:
  147.             return AbstractTableModel.class$java$lang$Object != null ? AbstractTableModel.class$java$lang$Object : (AbstractTableModel.class$java$lang$Object = class$("java.lang.Object"));
  148.       }
  149.    }
  150.  
  151.    public boolean isCellEditable(int var1, int var2) {
  152.       try {
  153.          return this.metaData.isWritable(var2 + 1);
  154.       } catch (SQLException var3) {
  155.          return false;
  156.       }
  157.    }
  158.  
  159.    public int getColumnCount() {
  160.       return this.columnNames.length;
  161.    }
  162.  
  163.    public int getRowCount() {
  164.       return this.rows.size();
  165.    }
  166.  
  167.    public Object getValueAt(int var1, int var2) {
  168.       Vector var3 = (Vector)this.rows.elementAt(var1);
  169.       return var3.elementAt(var2);
  170.    }
  171.  
  172.    public String dbRepresentation(int var1, Object var2) {
  173.       if (var2 == null) {
  174.          return "null";
  175.       } else {
  176.          int var3;
  177.          try {
  178.             var3 = this.metaData.getColumnType(var1 + 1);
  179.          } catch (SQLException var4) {
  180.             return var2.toString();
  181.          }
  182.  
  183.          switch (var3) {
  184.             case -7:
  185.                if ((Boolean)var2) {
  186.                   return "1";
  187.                }
  188.  
  189.                return "0";
  190.             case 4:
  191.             case 6:
  192.             case 8:
  193.                return var2.toString();
  194.             case 91:
  195.                return var2.toString();
  196.             default:
  197.                return "\"" + var2.toString() + "\"";
  198.          }
  199.       }
  200.    }
  201.  
  202.    public void setValueAt(Object var1, int var2, int var3) {
  203.       try {
  204.          String var4 = this.metaData.getTableName(var3 + 1);
  205.          if (var4 == null) {
  206.             System.out.println("Table name returned null.");
  207.          }
  208.  
  209.          String var5 = this.getColumnName(var3);
  210.          String var6 = "update " + var4 + " set " + var5 + " = " + this.dbRepresentation(var3, var1) + " where ";
  211.  
  212.          for(int var7 = 0; var7 < this.getColumnCount(); ++var7) {
  213.             String var8 = this.getColumnName(var7);
  214.             if (!var8.equals("")) {
  215.                if (var7 != 0) {
  216.                   var6 = var6 + " and ";
  217.                }
  218.  
  219.                var6 = var6 + var8 + " = " + this.dbRepresentation(var7, this.getValueAt(var2, var7));
  220.             }
  221.          }
  222.  
  223.          System.out.println(var6);
  224.          System.out.println("Not sending update to database");
  225.       } catch (SQLException var9) {
  226.          System.err.println("Update failed");
  227.       }
  228.  
  229.       Vector var10 = (Vector)this.rows.elementAt(var2);
  230.       var10.setElementAt(var1, var3);
  231.    }
  232.  
  233.    // $FF: synthetic method
  234.    static Class class$(String var0) {
  235.       try {
  236.          return Class.forName(var0);
  237.       } catch (ClassNotFoundException var2) {
  238.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  239.       }
  240.    }
  241. }
  242.