// $Id: CattellApplet.java,v 1.1 2001/12/17 17:45:07 per_nyfelt Exp $
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
import org.ozoneDB.DxLib.*;
import org.ozoneDB.*;
import org.ozoneDB.tools.ChartCanvas;
/** */
public class CattellApplet extends Applet implements ActionListener, ItemListener {
/** */
class BenchmarkThread extends Thread {
private boolean chartOnly = true;
private String[] args = null;
/** */
public BenchmarkThread( boolean co, String[] a ) {
chartOnly = co;
args = a;
}
/** */
public void run() {
}
}
/** */
public class AppletWriter extends Writer {
/** */
public AppletWriter() {
}
/** */
public void write( char[] cbuf, int off, int len ) throws IOException {
String text = new String( cbuf, off, len );
if (outText != null) {
outText.append( text );
}
if (chart != null) {
int tpos = text.indexOf( "time: " );
if (tpos > -1) {
tpos += 6;
int mpos = text.indexOf( "ms", tpos );
if (mpos > -1) {
chart.appendTime( new Integer( text.substring( tpos, mpos ).trim() ).intValue() );
}
}
}
}
/** */
public void flush() throws IOException {
}
/** */
public void close() throws IOException {
}
}
/** */
protected Button startButton;
protected Choice testChoice;
protected TextField sizeText;
protected TextField nameText;
protected TextField serverText;
protected TextArea outText;
protected Label statusLabel;
protected ChartCanvas chart;
/** */
public void init() {
init( false );
}
/** */
public void init( boolean chartOnly ) {
setLayout( new BorderLayout() );
if (!chartOnly) {
Panel panel = new Panel();
panel.setLayout( new FlowLayout( FlowLayout.LEFT ) );
startButton = new Button( " Start " );
startButton.setFont( new Font( "Monospaced", Font.BOLD, 14 ) );
startButton.addActionListener( this );
panel.add( startButton );
testChoice = new Choice();
testChoice.add( "Help" );
testChoice.add( "1 Create" );
testChoice.add( "2 Lookup" );
testChoice.add( "3 Traversal" );
testChoice.add( "4 Ins & del" );
testChoice.add( "5 Insert" );
testChoice.add( "6 Ins*1000" );
testChoice.add( "7 Traversal" );
testChoice.add( "8 Insert" );
testChoice.addItemListener( this );
panel.add( testChoice );
sizeText = new TextField( "1000", 5 );
sizeText.setFont( new Font( "Monospaced", Font.PLAIN, 12 ) );
sizeText.addActionListener( this );
//panel.add (new Label ("Size: "));
panel.add( sizeText );
nameText = new TextField( "cattell", 9 );
nameText.setFont( new Font( "Monospaced", Font.PLAIN, 12 ) );
nameText.addActionListener( this );
//panel.add (new Label ("Name: "));
panel.add( nameText );
serverText = new TextField( "localhost", 9 );
serverText.setFont( new Font( "Monospaced", Font.PLAIN, 12 ) );
serverText.addActionListener( this );
//panel.add (new Label ("Server: "));
panel.add( serverText );
add( "North", panel );
panel = new Panel();
panel.setLayout( new BorderLayout() );
outText = new TextArea();
panel.add( outText, "North" );
chart = new ChartCanvas();
panel.add( chart, "Center" );
add( "Center", panel );
statusLabel = new Label( "Test:Build - Size:1000 - Name:cattell " );
add( "South", statusLabel );
} else {
chart = new ChartCanvas();
add( "Center", chart );
}
}
/** */
public void itemStateChanged( ItemEvent e ) {
String[] defaults = {"0", "1000", "100", "7", "100", "100", "10", "10", "10"};
if (testChoice.getSelectedIndex() > -1) {
sizeText.setText( defaults[testChoice.getSelectedIndex()] );
}
}
/** */
public void actionPerformed( ActionEvent e ) {
int test = testChoice.getSelectedIndex();
int size = Integer.valueOf( sizeText.getText() ).intValue();
String name = nameText.getText();
String server = serverText.getText();
statusLabel.setText( "Test:" + test + " Size:" + size + " Name:" + name );
String[] args = {"" + test, "" + size, "" + name, "" + server};
runBenchmark( args );
}
/** */
public void runBenchmark( String[] args ) {
CattellImpl.main( args );
}
/** */
static class MyAdapter extends WindowAdapter {
public void windowClosing( WindowEvent e ) {
System.exit( 0 );
}
}
/** */
public static void main( String[] args ) {
boolean chartOnly = false;
String[] cattellArgs = new String[0];
int argCount = 0;
if (args.length > 0) {
for (int i = 0; i < args.length; i++) {
if (args[i].equals( "-chart" )) {
chartOnly = true;
argCount++;
}
}
}
Frame f = new Frame( "Cattell Benchmark" );
CattellApplet applet = new CattellApplet();
applet.init( chartOnly );
applet.start();
f.add( "Center", applet );
f.pack();
f.setSize( chartOnly ? 300 : 500, chartOnly ? 120 : 400 );
f.show();
f.addWindowListener( new MyAdapter() );
cattellArgs = new String[args.length - argCount];
System.arraycopy( args, argCount, cattellArgs, 0, cattellArgs.length );
cattellArgs = applet.chart.filterAndApplyArgs( cattellArgs );
if (chartOnly) {
applet.runBenchmark( cattellArgs );
}
}
}