import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import student.Student;
import student.StudentDB;
public class NewStudentDBTester extends Applet
implements ItemListener,
ActionListener {
StudentDB studentDB;
TextArea result,errMessage;
Button sortButton;
Choice fileURL;
Label label1,label2;
TextField tfNumber;
String datafile[] = { "studfile5.html",
"studfile6.html",
"studfile7.html",
"studfile8.html" };
public void init() {
sortButton = new Button("Sort by grade");
result = new TextArea(12,80);
errMessage = new TextArea("",2,80, TextArea.SCROLLBARS_NONE);
label1 = new Label("Test Case");
label2 = new Label("Search by ID");
tfNumber = new TextField(10);
fileURL = new Choice();
for (int i = 0; i < datafile.length; i++)
fileURL.add(datafile[i]);
add(label1);
add(fileURL);
add(sortButton);
add(label2);
add(tfNumber);
add(result);
add(errMessage);
fileURL.addItemListener(this);
tfNumber.addActionListener(this);
sortButton.addActionListener(this);
}
public void itemStateChanged(ItemEvent ie) {
studentDB = new StudentDB();
String textLine="",name;
int number,grade;
StringTokenizer st;
try {
URL url = new URL("http://personal.cityu.edu.hk/~dcywchan/2003dco10103/" +
fileURL.getSelectedItem());
URLConnection data = url.openConnection();
BufferedReader inFile = new BufferedReader(new InputStreamReader(data.getInputStream()));
try {
while((textLine = inFile.readLine()) != null) {
st = new StringTokenizer(textLine, "_");
number = Integer.parseInt(st.nextToken());
name = st.nextToken();
grade = Integer.parseInt(st.nextToken());
if (st.hasMoreTokens()) {
throw new IllegalArgumentException(textLine);
}
studentDB.addStudent(new Student(number,name,grade));
}
} catch (NoSuchElementException nsee) {
errMessage.setText(nsee.toString() + " : " + textLine );
} catch (NumberFormatException nfe) {
errMessage.setText(nfe.toString() + " : " + textLine );
} catch (IllegalArgumentException iae) {
errMessage.setText(iae.toString());
}
result.setText("");
result.setText(studentDB.toString());
inFile.close();
} catch(MalformedURLException mue) {}
catch(IOException ioe) {}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(sortButton)) {
studentDB.sortStudentByMark();
result.setText("");
result.setText(studentDB.toString());
}
else if (e.getSource().equals(tfNumber)) {
Student tempStud = new Student(Integer.parseInt(tfNumber.getText()));
Student lookUpResult = studentDB.lookUpStudent(tempStud);
if (lookUpResult != null) {
result.setText("");
result.setText(lookUpResult.toString());
}
}
}
}