Methods Summary |
---|
public synchronized void | paint(java.awt.Graphics g)The "paint" method is called by AWT when it wants us to
display our current state on the screen.
// If there are no results available, display the current message.
if (queryResults == null) {
g.drawString(message, 5, 50);
return;
}
// Display the results.
g.drawString("Prices of coffee per pound: ", 5, 10);
int y = 30;
java.util.Enumeration enum = queryResults.elements();
while (enum.hasMoreElements()) {
String text = (String)enum.nextElement();
g.drawString(text, 5, y);
y = y + 15;
}
|
public void | run()The "run" method is called from the worker thread. Notice that
because this method is doing potentially slow databases accesses
we avoid making it a synchronized method.
String url = "jdbc:mySubprotocol:myDataSource";
String query = "select COF_NAME, PRICE from COFFEES";
try {
Class.forName("myDriver.ClassName");
} catch(Exception ex) {
setError("Can't find Database driver class: " + ex);
return;
}
try {
Vector results = new Vector();
Connection con = DriverManager.getConnection(url,
"myLogin", "myPassword");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String s = rs.getString("COF_NAME");
float f = rs.getFloat("PRICE");
String text = s + " " + f;
results.addElement(text);
}
stmt.close();
con.close();
setResults(results);
} catch(SQLException ex) {
setError("SQLException: " + ex);
}
|
private synchronized void | setError(java.lang.String mess)This private method is used to record an error message for
later display.
queryResults = null;
message = mess;
worker = null;
// And ask AWT to repaint this applet.
repaint();
|
private synchronized void | setResults(java.util.Vector results)This private method is used to record the results of a query, for
later display.
queryResults = results;
worker = null;
// And ask AWT to repaint this applet.
repaint();
|
public synchronized void | start()
// Every time "start" is called we create a worker thread to
// re-evaluate the database query.
if (worker == null) {
message = "Connecting to database";
worker = new Thread(this);
worker.start();
}
|