import java.util.Vector; import java.io.*; import java.util.Calendar ; public class Mailer implements CollectionIF { private Vector vletters; private String dbname; public Mailer( String filename ) { dbname = filename; vletters = new Vector(); } public void loadRecords() { DataInputStream infile_mailer = null; Letter letter; try { infile_mailer = new DataInputStream( new FileInputStream( dbname ) ); } catch ( FileNotFoundException e ) {} while ( true ) { letter = new Letter(); try { letter.retrieve( infile_mailer ); infile_mailer.readByte(); vletters.addElement( letter ); } catch ( EOFException eof ) { System.out.println("We have hit end of file!"); break; } catch ( IOException e ){ } } } public void storeRecords() { DataOutputStream outfile_mailer = null; try { outfile_mailer = new DataOutputStream( new FileOutputStream( dbname ) ); } catch ( IOException e ) {} for ( int i = 0; i < vletters.size(); i++ ) { Letter letter = (Letter) vletters.elementAt( i ); letter.persist( outfile_mailer ); try { outfile_mailer.writeByte( (byte) '¬' ); } catch ( IOException e ) {} } } public int getNextID() { if (vletters.isEmpty()) return 1; return ((Letter)(vletters.lastElement())).getID() + 1; } public void addRecord( Vector v ) { for (int i = 0; i < v.size(); i++) vletters.addElement( v.elementAt(i) ); } public void modifyRecord( Vector v ) { for (int j = 0; j < v.size(); j++) { Letter l = (Letter) v.elementAt(j); for ( int i =0; i < vletters.size(); i++ ) { Letter let = (Letter )vletters.elementAt(i); if ( let.getID() == l.getID() ) { let.setStatus( l.getStatus() ); let.setDate( l.getDate() ); break; } } } } public void deleteRecord( int index ) { vletters.removeElementAt( index ); } public PersistentObject getRecord( int index ) { return (PersistentObject) vletters.elementAt( index ); } public void send( MailingSystem ms, Vector ltrs ) { Vector v = new Vector(); for (int i = 0; i < ltrs.size(); i++) { ms.send((Letter)ltrs.elementAt(i)); Calendar c = Calendar.getInstance(); ((Letter)ltrs.elementAt(i)).setID( getNextID() ); ((Letter)ltrs.elementAt(i)).setDate(c.getTime().toString() ); ((Letter)ltrs.elementAt(i)).setStatus(MAILSTATUS.SENT); v.addElement(ltrs.elementAt(i)); } addRecord(v); } public int size() { return vletters.size(); } public void reSend( MailingSystem ms, Vector ltrs ) { Vector v = new Vector(); for (int i = 0; i < ltrs.size(); i++) { ms.send((Letter)ltrs.elementAt(i)); Calendar c = Calendar.getInstance(); ((Letter)ltrs.elementAt(i)).setDate(c.getTime().toString() ); ((Letter)ltrs.elementAt(i)).setStatus(MAILSTATUS.SENT); v.addElement(ltrs.elementAt(i)); } modifyRecord(v); } }