/media/sda-magnetic/david/Dokumente-15/fernuni-hagen/cs-i-ii/old-cs-2-03/java-new/2020-11-23/LinkedListProg3.java


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 () {
            LinkedList <Person> 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 myAddrsBk;
        AddressBook loadBook(String name) {
            try {
                LinkedList <Person> listFromFile;
                InputStream is = new FileInputStream (name);
                ObjectInputStream ois = new ObjectInputStream (is);
                    
                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 book, 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")) {
            }
            else if (args[0].equals ("read")) {
            }
        }
        catch (ArrayIndexOutOfBoundsException e) {
            System.out.println ("usage: ");
            System.out.println ("MyTreeFileProg write fname data1 data2 ...");
            System.out.println ("MyTreeFileProg read fname");
        }
    }
    
}