📄 abstractdbgentablemodel.java
字号:
package org.dbgen.support;/** * This class inherits from Swing's AbstractTableModel for JTable. See main() for * sample use. * * Function for working with database: * _addDbData( org.dbgen.support.Data data ) * _insertDbDataAt( int row, org.dbgen.support.Data data ) * _changeDbDataAt( int row ) * _deleteDbDataAt( int row ) * _commitDbData( ) */import javax.swing.event.*;public abstract class AbstractDbGenTableModel extends javax.swing.table.AbstractTableModel { protected transient java.beans.PropertyChangeSupport propertyChange; private static java.lang.String[] fieldColumnNames = new String[0]; private org.dbgen.support.Driver fieldDbGenDriver = new org.dbgen.support.Driver(); private java.util.Vector fieldDbDataVector = new java.util.Vector(); private java.util.Vector fieldDeletedDbDataVector = new java.util.Vector(); private java.util.Vector fieldNewDbDataVector = new java.util.Vector(); private java.util.Vector fieldChangedDbDataVector = new java.util.Vector(); /** * Constructs a default table modal */ public AbstractDbGenTableModel() { super(); } /** * Add a data object to the bottom. * @return result, true = ok, false = failed * @param data org.dbgen.support.Data * @see #_changeDbDataAt * @see #_deleteDbDataAt * @see #_insertDbDataAt * @see #_retrieveDbData * @see #_commitDbData */ public boolean _addDbData( org.dbgen.support.Data data ) { try { getDbDataVector().addElement( data ); getNewDbDataVector().addElement(data); fireTableChanged(new TableModelEvent(this, getRowCount()-1, getRowCount()-1, TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT)); return true; } catch ( Exception ex ) { System.out.println("remove db data error: " + ex.getMessage() ); } return false; } /** * * Notify the table modal that the row has been changed. When doing a _commitDbData, * the row will be updated to database. * @return boolean * @param row int * @see #_addDbData * @see #_deleteDbDataAt * @see #_insertDbDataAt * @see #_retrieveDbData * @see #_commitDbData * @see #getDbDataAt */ public boolean _changeDbDataAt( int row ) { try { if ( !getChangedDbDataVector().contains( getDbDataRowAt(row)) ) getChangedDbDataVector().addElement(getDbDataRowAt(row)); fireTableChanged(new TableModelEvent(this, row, row, TableModelEvent.ALL_COLUMNS)); return true; } catch ( Exception ex ) { System.out.println("remove db data error: " + ex.getMessage() ); } return false; } /** * All add/update/delete changes will be written to database. * @return java.util.Vector * @param row int * @see #_addDbData * @see #_deleteDbDataAt * @see #_insertDbDataAt * @see #_retrieveDbData * @see #_commitDbData * @see #getDbDataAt */ public java.util.Vector _commitDbData() { // update data to database if needed org.dbgen.support.Driver driver = getDbGenDriver(); java.util.Vector errV = new java.util.Vector(); // update data to database java.util.Vector dataV = getChangedDbDataVector(); for ( int i=dataV.size()-1; i>=0; i-- ) { org.dbgen.support.Data data = (org.dbgen.support.Data) dataV.elementAt(i); try { if ( driver.update(data) <= 0 ) errV.addElement(data); else dataV.removeElementAt(i); } catch ( Exception ex ) { errV.addElement(data); System.out.println( "Update data error: " + data); } } // insert data to database dataV = getNewDbDataVector(); for ( int i=dataV.size()-1; i>=0; i-- ) { org.dbgen.support.Data data = (org.dbgen.support.Data) dataV.elementAt(i); try { if ( driver.insert(data) <= 0 ) errV.addElement(data); else dataV.removeElementAt(i); } catch ( Exception ex ) { errV.addElement(data); System.out.println( "Insert data error: " + data); } } // delete data to database dataV = getDeletedDbDataVector(); for ( int i=dataV.size()-1; i>=0; i-- ) { org.dbgen.support.Data data = (org.dbgen.support.Data) dataV.elementAt(i); try { if ( driver.delete(data) <= 0 ) errV.addElement(data); else dataV.removeElementAt(i); } catch ( Exception ex ) { errV.addElement(data); System.out.println( "Delete data error: " + data); } } return errV; } /** * Delete the given row of data, use _commitDbData to commit the changes to database. * @retuen boolean * @param row int * @see #_addDbData * @see #_changeDbDataAt * @see #_insertDbDataAt * @see #_retrieveDbData * @see #_commitDbData * @see #getDbDataAt */ public boolean _deleteDbDataAt( int row ) { try { Object obj = getDbDataVector().elementAt(row); getDbDataVector().removeElementAt(row); getDeletedDbDataVector().addElement(obj); fireTableRowsDeleted(row, row); return true; } catch ( Exception ex ) { System.out.println("remove db data error: " + ex.getMessage() ); } return false; } /** * Insert a org.dbgen.support.Data object to the row. * @retuen boolean * @param row int * @param data org.dbgen.support.Data * @see #_addDbData * @see #_changeDbDataAt * @see #_deleteDbDataAt * @see #_retrieveDbData * @see #_commitDbData * @see #getDbDataAt */ public boolean _insertDbDataAt( int row, org.dbgen.support.Data data ) { try { getDbDataVector().insertElementAt( data, row); getNewDbDataVector().addElement(data); fireTableChanged(new TableModelEvent(this, row, row, TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT)); return true; } catch ( Exception ex ) { System.out.println("remove db data error: " + ex.getMessage() ); } return false; } /** * This will retrieve data from database by sending a SQL in format: * SELECT * FROM THIS_TABLE WHERE <condi> ORDER <order> * @return boolean * @param condi java.lang.String * @param order java.lang.String * @see #_addDbData * @see #_changeDbDataAt * @see #_deleteDbDataAt * @see #_insertDbDataAt * @see #_commitDbData * @see #getDbDataAt */ public boolean _retrieveDbData( String condi, String order ) { try { setDbDataVector(getDbGenDriver().retrieve( createDbData(), condi, order )); return true; } catch ( Exception ex ) { System.out.println( "Retrieve db data error: " + ex.getMessage()); } return false; } /** * The addPropertyChangeListener method was generated to support the propertyChange field. */ public synchronized void addPropertyChangeListener(java.beans.PropertyChangeListener listener) { getPropertyChange().addPropertyChangeListener(listener); } /** * This method was created in VisualAge. * @return org.dbgen.support.Data */ public abstract Data createDbData(); /** * The firePropertyChange method was generated to support the propertyChange field. */ public void firePropertyChange(String propertyName, Object oldValue, Object newValue) { getPropertyChange().firePropertyChange(propertyName, oldValue, newValue); } /** * Gets the changedDbDataVector property (java.util.Vector) value. * @return The changedDbDataVector property value. * @see #setChangedDbDataVector */ public java.util.Vector getChangedDbDataVector() { return fieldChangedDbDataVector; } /** * Overrides AbstractTableModel method * @return int */ public int getColumnCount() { return getColumnNames().length; } /** * Overrides AbstractTableModel method * @return java.lang.String * @param column int */ public String getColumnName(int column) { try { return fieldColumnNames[column]; } catch ( Exception ex ) { System.out.println("Column index out of bound"); } return ""; } /** * @return The columnNames property value. * @see #setColumnNames */ public static java.lang.String[] getColumnNames() { return fieldColumnNames; } /** * This method was created in VisualAge. * @return java.lang.Object * @param row int */ public Data getDbDataRowAt( int row ) { try { return (Data) getDbDataVector().elementAt(row); } catch ( Exception ex ) { ex.printStackTrace(); } return null; } /** * Gets the dbDataVector property (java.util.Vector) value. * @return The dbDataVector property value. * @see #setDbDataVector */ public java.util.Vector getDbDataVector() { return fieldDbDataVector; } /** * Gets the dbGenDriver property (org.dbgen.support.Driver) value. * @return The dbGenDriver property value. * @see #setDbGenDriver */ public org.dbgen.support.Driver getDbGenDriver() { return fieldDbGenDriver; } /** * Gets the deletedDbDataVector property (java.util.Vector) value. * @return The deletedDbDataVector property value. * @see #setDeletedDbDataVector */ public java.util.Vector getDeletedDbDataVector() { return fieldDeletedDbDataVector; } /** * Gets the newDbDataVector property (java.util.Vector) value. * @return The newDbDataVector property value. * @see #setNewDbDataVector */ public java.util.Vector getNewDbDataVector() { return fieldNewDbDataVector; } /** * Accessor for the propertyChange field. */ protected java.beans.PropertyChangeSupport getPropertyChange() { if (propertyChange == null) { propertyChange = new java.beans.PropertyChangeSupport(this); }; return propertyChange; } /** * Overrides AbstractTableModel method */ public int getRowCount() { return fieldDbDataVector.size(); ; } /** * Overrides AbstractTableModel method */ public abstract Object getValueAt(int row, int column); /** * The removePropertyChangeListener method was generated to support the propertyChange field. */ public synchronized void removePropertyChangeListener(java.beans.PropertyChangeListener listener) { getPropertyChange().removePropertyChangeListener(listener); } /** * Sets the changedDbDataVector property (java.util.Vector) value. * @param changedDbDataVector The new value for the property. * @see #getChangedDbDataVector */ public void setChangedDbDataVector(java.util.Vector changedDbDataVector) { java.util.Vector oldValue = fieldChangedDbDataVector; fieldChangedDbDataVector = changedDbDataVector; firePropertyChange("changedDbDataVector", oldValue, changedDbDataVector); } /** * Sets the columnNames property (java.lang.String[]) value. * @param columnNames The new value for the property. * @see #getColumnNames */ public static void setColumnNames(java.lang.String[] columnNames) { fieldColumnNames = columnNames; } /** * Sets the dbDataVector property (java.util.Vector) value. * @param dbDataVector The new value for the property. * @see #getDbDataVector */ public void setDbDataVector(java.util.Vector dbDataVector) { java.util.Vector oldValueVector = fieldDbDataVector; if ( dbDataVector != null ) fieldDbDataVector = dbDataVector; else fieldDbDataVector = new java.util.Vector(); firePropertyChange("dbDataVector", oldValueVector, dbDataVector); // remove all deleted vectors getDeletedDbDataVector().removeAllElements(); } /** * @see #getDbGenDriver */ public void setDbGenDriver(org.dbgen.support.Driver dbGenDriver) { org.dbgen.support.Driver oldValue = fieldDbGenDriver; fieldDbGenDriver = dbGenDriver; firePropertyChange("dbGenDriver", oldValue, dbGenDriver); } /** * @see #getDeletedDbDataVector */ public void setDeletedDbDataVector(java.util.Vector deletedDbDataVector) { java.util.Vector oldValue = fieldDeletedDbDataVector; fieldDeletedDbDataVector = deletedDbDataVector; firePropertyChange("deletedDbDataVector", oldValue, deletedDbDataVector); } /** * Sets the newDbDataVector property (java.util.Vector) value. * @param newDbDataVector The new value for the property. * @see #getNewDbDataVector */ public void setNewDbDataVector(java.util.Vector newDbDataVector) { java.util.Vector oldValue = fieldNewDbDataVector; fieldNewDbDataVector = newDbDataVector; firePropertyChange("newDbDataVector", oldValue, newDbDataVector); } /** * Overrides AbstractTableModel method * @param aValue java.lang.Object * @param row int * @param column int */ public abstract void setValueAt(Object aValue, int row, int column);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -