/* * MailManager: This implements a simple email manager. */ public class MailManager { private EmailMessage[ ] msgs; // the messages private int nMsgs; // current number of messages public MailManager( int max ) { msgs = new EmailMessage[max]; nMsgs = 0; } public boolean isFull( ) { return (nMsgs >= msgs.length); } public boolean addMsg( EmailMessage m ) { if ( isFull( ) ) return false; msgs[nMsgs++] = new EmailMessage( m ); return true; } public boolean deleteMsg( int d ) { if ( d < 0 || d > msgs.length ) return false; for ( int j = d+1; j < nMsgs; j++ ) msgs[j-1] = msgs[j]; nMsgs--; return true; } public void clear( ) { for ( int i = 0; i < nMsgs; i++ ) // unlink objects msgs[i] = null; nMsgs = 0; } public String toString( ) { String result = "Mailbox: "; if ( nMsgs == 0 ) return result + "empty"; for ( int i = 0; i < nMsgs; i++ ) result = result + "\n " + msgs[i]; return result; } public EmailMessage[ ] getMessages( ) { EmailMessage[ ] result = new EmailMessage[nMsgs]; for (int i = 0; i < nMsgs; i++) { result[i] = new EmailMessage( msgs[i] ); } return result; } public static void main( String[ ] args ) { // create a new email manager MailManager myMail = new MailManager( 5 ); // initialize by adding 2 messages myMail.addMsg( new EmailMessage( "john@notReal.com", "Hi Everybody" ) ); myMail.addMsg( new EmailMessage( "rose@fantasy.com", "I hate spam" ) ); System.out.println( "Initial mailbox:" ); System.out.println( myMail ); // add a message myMail.addMsg( new EmailMessage( "pete@imaginary.com", "Me too" ) ); System.out.println( "After addition:" ); System.out.println( myMail ); myMail.deleteMsg( 0 ); // delete the first message System.out.println( "After deletion:" ); System.out.println( myMail ); // retrieve messages EmailMessage[ ] myMessages = myMail.getMessages( ); System.out.println( "Retrieved Messages:" ); for ( int i = 0; i < myMessages.length; i++ ) System.out.println( myMessages[i] ); myMail.clear( ); // clear the mailbox System.out.println( "After clearing:" ); System.out.println( myMail ); } } class EmailMessage { private String addr; // email address private String body; // message body public EmailMessage( String a, String b ) { addr = new String( a ); body = new String( b ); } public EmailMessage( EmailMessage e) { addr = new String( e.addr ); body = new String( e.body ); } public String toString( ) { return "From: <" + addr + "> Body: [" + body + "]"; } }