OutputApplet.java Source code

Java tutorial

Introduction

Here is the source code for OutputApplet.java

Source

 /*
 Copyright 2003 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
 Use of this software is authorized pursuant to the terms of the license found at
 http://developer.java.sun.com/berkeley_license.html.
    
 Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.  
 Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met: 
    
 - Redistribution of source code must retain the above copyright notice, 
 this list of conditions and the following disclaimer.
    
 - Redistribution in binary form must reproduce the above copyright notice,
 this list of conditions and the following disclaimer in the documentation
 and/or other materials provided with the distribution.
    
 Neither the name of Sun Microsystems, Inc. or the names of contributors may 
 be used to endorse or promote products derived from this software without
 specific prior written permission.
    
 This software is provided "AS IS," without a warranty of any kind.  
 ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
 ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
 NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICORSYSTEMS, INC. ("SUN")
 AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
 AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
 DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
 REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, 
 INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
 LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN
 IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
    
 You acknowledge that this software is not designed, licensed or intended for
 use in the design, construction, operation or maintenance of any nuclear
 facility.
    
    
 */

 /*
  * Copyright 2003 Sun Microsystems, Inc.  ALL RIGHTS RESERVED.
  * Use of this software is authorized pursuant to the terms of the license found at
  * http://developer.java.sun.com/berkeley_license.html.
  */

 /**
  * This is a demonstration JDBC applet.
  * It displays some simple standard output from the Coffee database.
  */

 import java.applet.Applet;
 import java.awt.Graphics;
 import java.util.Vector;
 import java.sql.*;

 public class OutputApplet extends Applet implements Runnable {
     private Thread worker;
     private Vector queryResults;
     private String message = "Initializing";

     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();
         }
     }

     /**
      * 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.
      */

     public void run() {
         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);
         }
     }

 /**
  * The "paint" method is called by AWT when it wants us to
  * display our current state on the screen.
  */

 public synchronized void paint(Graphics g) {
// 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;
}
 }

     /**
      * This private method is used to record an error message for
      * later display.
      */

     private synchronized void setError(String mess) {
         queryResults = null;
         message = mess;
         worker = null;
         // And ask AWT to repaint this applet.
         repaint();
     }

     /**
      * This private method is used to record the results of a query, for
      * later display.
      */

     private synchronized void setResults(Vector results) {
         queryResults = results;
         worker = null;
         // And ask AWT to repaint this applet.
         repaint();
     }
 }