package addBk.addressBook;
import java.awt.*;
import java.io.*;
import java.util.Vector;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class AddressBookDatabase
implements Serializable {
private Vector v;
private int recordNumber;
public AddressBookDatabase() {
v = new Vector();
recordNumber = 0;
}
public void sort() {
}
public AddressBookRecord getEmptyDbRecord() {
AddressBookRecord abr =
new AddressBookRecord();
abr.name = "--- Empty Database ---";
abr.address =
"Use the <File> menu to\n <Open> a database object,\n <Merge> a CSV file";
abr.notes = "Or use the [EDIT] button to\n [Add Record]s to the empty DB";
abr.dial_1 = "";
abr.dial_2 = "";
abr.dial_3 = "";
return (abr);
}
public AddressBookRecord readRecord() {
return (AddressBookRecord) v.elementAt(recordNumber);
}
public AddressBookRecord readRecord(int recNumber) {
return (AddressBookRecord) v.elementAt(recNumber);
}
public int getNumRecords() {
return (v.size());
}
public void addRecord(AddressBookRecord abr) {
v.addElement(abr);
recordNumber = v.size() - 1;
}
public void deleteRecord(AddressBookRecord abr) {
v.removeElement(abr);
}
public void deleteCurrentRecord() {
v.removeElementAt(recordNumber);
}
public void saveCurrentRecord(AddressBookRecord abr) {
v.setElementAt(abr, recordNumber);
}
public void incrementRecord() {
if (recordNumber < (v.size() - 1))
recordNumber++;
System.out.println(recordNumber);
}
public void decrementRecord() {
if (recordNumber > 0)
recordNumber--;
System.out.println(recordNumber);
}
public void setRecordNumber(int index) {
if ((index >= 0) && (index <= v.size()))
recordNumber = index;
System.out.println(recordNumber);
}
public void openDb() {
try {
System.out.println("Opening Address Db Object");
readDbObject(); } catch (IOException e) {
System.out.println("IOException");
} catch (ClassNotFoundException e) {
System.out.println("ClassNotFoundException");
}
}
public void saveDb() {
try {
System.out.println("Saving Address Db Object");
saveDbObject(); } catch (IOException e) {
System.out.println("IOERROR: " + e.getMessage());
}
}
public void writeToFile() throws IOException {
FileOutputStream outStream = new FileOutputStream("junkobj");
System.out.println("FileOutputStream OK");
ObjectOutputStream ooStream = new ObjectOutputStream(outStream);
System.out.println("ObjectOutputStream OK");
ooStream.writeObject(this);
ooStream.flush();
ooStream.close();
outStream.close();
}
public void readFromFile() throws IOException, ClassNotFoundException {
FileInputStream inStream = new FileInputStream("junkobj");
ObjectInputStream oiStream = new ObjectInputStream(inStream);
AddressBookDatabase abd = (AddressBookDatabase) oiStream.readObject();
this.v = abd.v;
}
public void readDbObject() throws IOException
, ClassNotFoundException {
System.out.println("starting read...");
FileInputStream fis
= new FileInputStream(Futil.getReadFileName("Select input file"));
GZIPInputStream gis
= new GZIPInputStream(fis);
ObjectInputStream ois
= new ObjectInputStream(gis);
AddressBookDatabase abd = (AddressBookDatabase) ois.readObject();
this.v = abd.v;
ois.close();
gis.close();
fis.close();
System.out.println("restored v.size: " + this.v.size());
}
public void saveDbObject() throws IOException {
System.out.println("starting save...");
FileOutputStream fos
= new FileOutputStream(Futil.getWriteFileName("Select output file"));
GZIPOutputStream gos
= new GZIPOutputStream(fos);
ObjectOutputStream oos
= new ObjectOutputStream(gos);
oos.writeObject(this);
System.out.println("working with save...");
oos.flush();
oos.close();
gos.finish();
fos.close();
System.out.println("done with save...");
System.out.println("saved v.size: " + this.v.size());
}
static class Futil {
public static String getReadFileName(
String prompt) {
FileDialog fd = new FileDialog(
new Frame(), prompt);
fd.setVisible(true);
fd.setVisible(false);
return fd.getDirectory() + fd.getFile();
}
public static String getWriteFileName(
String prompt) {
FileDialog fd = new FileDialog(
new Frame(), prompt, FileDialog.SAVE);
fd.setVisible(true);
fd.setVisible(false);
return fd.getDirectory() + fd.getFile();
}
}
}