|
 |
 |
To access the contents, click the chapter and section titles.
Platinum Edition Using HTML 4, XML, and Java 1.2
(Publisher: Macmillan Computer Publishing)
Author(s): Eric Ladd
ISBN: 078971759x
Publication Date: 11/01/98
Listing 37.10 DBDemo.javaThis Test Program Opens a Database and Reads and Writes Data Interactively
import java.awt.*;
import java.applet.*;
import java.util.Properties;
import java.util.Enumeration;
import COM.odi.*;
import COM.odi.util.*;
public class DBDemo extends Applet
{
private Database fDb;
private Transaction fTrans;
// indicates that ObjectStore has been initialized
private Thread fInitialized;
private Session fSession;
public void init()
{
// Take out this line if you dont use
⇒symantec.itools.net.RelativeURL or
⇒symantec.itools.awt.util.StatusScroller
symantec.itools.lang.Context.setApplet(this);
// This code is automatically generated by Visual Cafe
⇒when you add
// components to the visual environment.
⇒It instantiates and initializes
// the components. To modify the code,
⇒only use code syntax that matches
// what Visual Cafe can generate,
⇒or Visual Cafe may be unable to back
// parse your Java file into its visual environment.
//{{INIT_CONTROLS
setLayout(null);
setSize(426,400);
theAddNurseLabel = new java.awt.Label(Add Nurse to Database);
theAddNurseLabel.setBounds(48,192,360,32);
theAddNurseLabel.setFont(new Font(Dialog, Font.BOLD, 18));
add(theAddNurseLabel);
theNursesInDatabaseLabel = new java.awt.Label(Nurses in Database);
theNursesInDatabaseLabel.setBounds(24,12,360,32);
theNursesInDatabaseLabel.setFont(new Font(Dialog, Font.BOLD, 18));
add(theNursesInDatabaseLabel);
theNurseIDLabel = new java.awt.Label(ID);
theNurseIDLabel.setBounds(48,240,40,36);
add(theNurseIDLabel);
theNurseNameLabel = new java.awt.Label(Last Name);
theNurseNameLabel.setBounds(48,276,72,54);
add(theNurseNameLabel);
theNurseIDField = new java.awt.TextField();
theNurseIDField.setText(the nurse ID);
theNurseIDField.setBounds(120,240,225,26);
add(theNurseIDField);
theNurseNameField = new java.awt.TextField();
theNurseNameField.setText(the nurse name);
theNurseNameField.setBounds(120,288,225,28);
add(theNurseNameField);
theAddButton = new java.awt.Button();
theAddButton.setLabel(Add);
theAddButton.setBounds(228,324,113,30);
theAddButton.setFont(new Font(Dialog, Font.BOLD, 12));
theAddButton.setBackground(java.awt.Color.lightGray);
add(theAddButton);
theNurseList = new java.awt.List(0,false);
add(theNurseList);
theNurseList.setBounds(36,60,329,103);
//}}
setupDatabase();
//{{REGISTER_LISTENERS
SymAction lSymAction = new SymAction();
theAddButton.addActionListener(lSymAction);
//}}
}
public void start()
{
reload(theNurseList, TNurse.getAll());
}
public void destroy() {
// save everything to the database
if (fDb == null) {
System.out.println(Database not open.);
return;
}
fTrans.commit();
// and close the database
if (fDb == null) {
System.out.println(No database to close.);
return;
}
fDb.close();
fDb = null;
}
private void maybeInitialize() {
if (fInitialized != null) {
return;
}
Properties properties = new Properties();
String user = getParameter(user);
if (user != null) {
properties.put(COM.odi.user, user);
}
String password = getParameter(password);
if (password != null) {
properties.put(COM.odi.password, password);
}
ObjectStore.initialize(null, properties);
fInitialized = Thread.currentThread();
}
public String[][] getParameterInfo() {
String pinfo[][] = {
{user, String, username for database},
{password, String, password for database}
};
return pinfo;
}
public void setupDatabase()
{
vvvv// Here begins the ObjectStore connection
fDb = null;
fTrans = null;
fInitialized = null;
fSession = null;
if (fDb != null) {
System.out.println(Database already open.);
return;
}
String theDbname = new String(demo.odb);
// The following line starts a nonglobal session and joins this
// thread to the new session. This allows the thread to use
// the ObjectStore API.
Session.create(null, null).join();
fSession = Session.getCurrent();
try {
//db = Database.create(dbname, 0664);
System.out.println(Opening database);
fDb = Database.open(theDbname, ObjectStore.OPEN_UPDATE);
System.out.println(1a.Database open is + fDb.isOpen());
// Enable this code if you want a new database each time
/* db.destroy();
System.out.println(Replacing database.);
db = Database.create(dbname, ObjectStore.ALL_READ |
⇒ObjectStore.ALL_WRITE);
System.out.println(1b.Database open is + db.isOpen());
*/
} catch (AccessViolationException e) {
System.out.println(File system access violation.);
return;
} catch (DatabaseAlreadyExistsException e) {
System.out.println(Database already exists.);
} catch (DatabaseNotFoundException e) {
System.out.println(Making new database.);
fDb = Database.create(theDbname, ObjectStore.ALL_READ |
⇒ObjectStore.ALL_WRITE);
} catch (DatabaseException e) {
System.out.println(Invalid database: + theDbname);
return;
}
if (fDb != null) {
fTrans = Transaction.begin(ObjectStore.UPDATE);
System.out.println(Made new transaction.);
System.out.println(2.Database open is + fDb.isOpen());
}
System.out.println(About to initialize TNurse);
System.out.println(3.Database open is + fDb.isOpen());
TNurse.initialize(fDb);
}
public void reload(java.awt.List theList, Enumeration e)
{
// copy the elements of the enumeration into the list
for ( ; e.hasMoreElements();) {
theList.add((String) e.nextElement().toString());
}
}
public static void main(String args[])
{
System.out.println(Starting. . . );
DBDemo theApplet = new DBDemo();
System.out.println(setting up database);
theApplet.setupDatabase();
System.out.println(populating database);
try {
TNurse nurseSmith = TNurse.add(123S, Smith);
TNurse nurseJones = TNurse.add(234J, Jones);
TNurse nurseBrown = TNurse.add(345B, Brown);
} catch (Exception e) {
System.out.println(Exception: + e);
}
System.out.println(destroying);
theApplet.destroy();
System.out.println(done);
System.exit(0);
}
//{{DECLARE_CONTROLS
java.awt.Label theAddNurseLabel;
java.awt.Label theNursesInDatabaseLabel;
java.awt.Label theNurseIDLabel;
java.awt.Label theNurseNameLabel;
java.awt.TextField theNurseIDField;
java.awt.TextField theNurseNameField;
java.awt.Button theAddButton;
java.awt.List theNurseList;
//}}
class SymAction implements java.awt.event.ActionListener
{
public void actionPerformed(java.awt.event.ActionEvent event)
{
Object object = event.getSource();
if (object == theAddButton)
theAddButton_Action(event);
}
}
void theAddButton_Action(java.awt.event.ActionEvent event)
{
if (Session.getCurrent() == null)
fSession.join();
TNurse.initialize(fDb);
String theID = theNurseIDField.getText();
String theName = theNurseNameField.getText();
try {
TNurse aNurse = TNurse.add(theID, theName);
} catch (Exception e) {
System.out.println(Exception: + e);
}
fTrans.commit();
fTrans = Transaction.begin(ObjectStore.UPDATE);
TNurse.initialize(fDb);
//{{CONNECTION
// Clear the text for TextField
theNurseIDField.setText();
//}}
//{{CONNECTION
// Clear the text for TextField
theNurseNameField.setText();
//}}
//{{CONNECTION
// Clear the List
theNurseList.removeAll();
reload(theNurseList, TNurse.getAll());
//}}
}
}
|