University of Cincinnati logo and link  
Database Bean
 
  UC ingot Revised Bean:

 (config file started commented out)

/*
 * Database.java
 *
 * Created on April 14, 2003, 11:23 PM
 */

import java.beans.*;
import java.sql.*;

import javax.xml.parsers.*;
import org.w3c.dom.*;

/**
 *
 * @author  default
 */
public class DatabaseData extends Object implements java.io.Serializable, PropertyChangeListener {

    // private static final String PROP_SAMPLE_PROPERTY = "SampleProperty";

    // private String sampleProperty;

    private static final String PROP_DRIVER_NAME = "DriverName";
    private static final String PROP_CONNECTION_URL = "ConnectionURL";
    private static final String PROP_QUERY_STATEMENT = "QueryStatement";
    
    private PropertyChangeSupport propertySupport;

    private String driverName;
    private String connectionURL;
    private String queryStatement;

    java.sql.Connection conn;
        
    /** Creates new Database */
    public DatabaseData() {
        propertySupport = new PropertyChangeSupport ( this );
    }

    public DatabaseData(DatabaseGUI gui) {
        propertySupport = new PropertyChangeSupport ( this );
        gui.addPropertyChangeListener(this);
    }

    
    public String getQueryStatement () {
        return queryStatement;
    }

    public void setQueryStatement(String value) {
        String oldValue = queryStatement;
        queryStatement = value;
        propertySupport.firePropertyChange (PROP_QUERY_STATEMENT, oldValue, queryStatement);
        System.out.println("Query statement changed in Database class. " + value);
    }
    
    public String getConnectionURL () {
        return connectionURL;
    }

    public void setConnectionURL (String value) {
        String oldValue = connectionURL;
        connectionURL = value;
        propertySupport.firePropertyChange (PROP_CONNECTION_URL, oldValue, connectionURL);
        System.out.println("Connection changed in Database class. " + value);
    }
    
      public String getDriverName () {
        return driverName;
    }

    public void setDriverName (String value) {
        String oldValue = driverName;
        driverName = value;
        propertySupport.firePropertyChange (PROP_DRIVER_NAME, oldValue, driverName);
        System.out.println("Driver name changed in Database class. " + value);
    }
    /*
    public String getSampleProperty () {
        return sampleProperty;
    }

    public void setSampleProperty (String value) {
        String oldValue = sampleProperty;
        sampleProperty = value;
        propertySupport.firePropertyChange (PROP_SAMPLE_PROPERTY, oldValue, sampleProperty);
    }
*/

    public void addPropertyChangeListener (PropertyChangeListener listener) {
        propertySupport.addPropertyChangeListener (listener);
    }

    public void removePropertyChangeListener (PropertyChangeListener listener) {
        propertySupport.removePropertyChangeListener (listener);
    }
    
    // Initialize the varibles based on our properties.
    
    public void initialize() {
        try {
            // First, read in data from XML file.  
            // We'll hardcode the filename now, but change it to an attribute later.
/*  
            File f = new File(datasource.xml);
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(f);
            Element root = doc.getRootElement();
  */          
            Class.forName(driverName).newInstance();
            conn = DriverManager.getConnection(connectionURL);
        } catch (Exception e) {
            System.out.println("Exception while attempting to set up database.  Message: " + e.getMessage());
        }
    }
    
    // run some query.
    
    public void runQuery() {
        try {

            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(queryStatement);
            while(rs.next()) {
                ResultSetMetaData rsmd = rs.getMetaData();
                for (int i = 0; i < rsmd.getColumnCount(); i++) {
                    System.out.print(rs.getString(i+1));
                }
                // new line for new record.
                System.out.println(" ");
            }
        } catch (Exception e) {
            System.out.println("Exception while attempting to make database call.  Message: " + e.getMessage());
            
        }
    }

    public void propertyChange(java.beans.PropertyChangeEvent propertyChangeEvent) {
        System.out.println("PropertyChange caught.");
        if (propertyChangeEvent.getPropertyName().equals("DriverName")) 
        { 
            setDriverName(propertyChangeEvent.getNewValue().toString());
        }
        if (propertyChangeEvent.getPropertyName().equals("DatabaseURL")) 
        {
            setConnectionURL(propertyChangeEvent.getNewValue().toString());
        }
        if (propertyChangeEvent.getPropertyName().equals("QueryString")) 
        {
            setQueryStatement(propertyChangeEvent.getNewValue().toString());
        }
        
    }
    
}