import java.io.*;
import java.lang.*;
import java.io.Serializable;
import java.util.LinkedList;
class LinkedListProg3 {
static class Person implements Serializable {
private String firstName;
private String lastName;
public Person (String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
void print () {
System.out.println (firstName + " " + lastName);
}
}
interface FullPersistence {
AddressBook loadBook(String name);
void storeBook(AddressBook book, String name);
}
static class AddressBookException extends Exception {
AddressBookException(String message) {
super(message);
}
}
static class AddressBook {
LinkedList <Person> myList = null;
AddressBook () {
myList = new LinkedList <Person> ();
}
public void addPerson(Person person) {
myList.add (person);
}
public void print() {
for (Person person : myList)
person.print();
}
LinkedList <Person> getList () {return this.myList;}
void setList (LinkedList <Person> myList) {this.myList = myList;}
}
static class SerializationToFilePersistence {
AddressBook loadBook(String name) {
AddressBook myAddrsBk = null;
try {
LinkedList <Person> listFromFile;
InputStream is = new FileInputStream (name);
ObjectInputStream ois = new ObjectInputStream (is);
myAddrsBk = new AddressBook();
myAddrsBk.setList((LinkedList <Person>) ois.readObject());
}
catch (FileNotFoundException e) {
System.out.println ("We have a file error 1");
}
catch (IOException e) {
System.out.println ("We have a file error");
}
catch (ClassNotFoundException e) {
System.out.println ("We have a problem");
}
return myAddrsBk;
}
void storeBook(AddressBook myAddrsBk, String name) {
try {
OutputStream os = new FileOutputStream (name);
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject (myAddrsBk.getList());
oos.close();
}
catch (IOException e) {
System.out.println ("We have a file problem");
}
}
}
public static void main (String [] args) {
try {
if (args[0].equals("save")) {
int i;
SerializationToFilePersistence stfp = new SerializationToFilePersistence ();
AddressBook addrsbk = new AddressBook ();
for (i = 2; i < args.length; i++)
addrsbk.addPerson (new Person ("Anton", args[i]));
stfp.storeBook(addrsbk, args[1]);
}
else if (args[0].equals ("read")) {
SerializationToFilePersistence stfp = new SerializationToFilePersistence ();
AddressBook addrsbk = stfp.loadBook (args[1]);
addrsbk.print();
}
}
catch (ArrayIndexOutOfBoundsException e) {
System.out.println ("usage: ");
System.out.println ("MyTreeFileProg write fname data1 data2 ...");
System.out.println ("MyTreeFileProg read fname");
}
}
}