| Java Programming Spring 2003 Homework #6 |
|   Course Syllabus   |   Java Programming Home   |   HW6 FAQ   |   Assignment   |   How to submit |
NOTE: You may choose to include your HW6 calendar as part of your final project. P6 does not need to be submitted individually. |
| Assignment |
This assignment involves creating a GUI Calendar that can display one month at a time. The month and year are specified on the command line (just like your HW4 program).
Your calendar should show all the dates in one month, and must also display any date-able PIMEntitys (Todos and Appointments) that are retreived from a remote PIMCollection server (via RMI). In general you need to call getItemsForDate() for each day in the month displayed, and add the item text (just the text of the todo or appointment is fine) to the cell used to display that day.
You do not need to make sure that every item (Todo, Appointment) is completely visible in the calendar, it's OK if only part of the text appears on the right date. You do not need to provide any clickable items, the HW6 calendar needs only show the days of the month and the PIMDateable items.
Feel free to use the sample code we looked at in class to create a (very simple) GUI calendar as a start, but it is expected (required!) that your Calendar is much better looking and can display appointments and todo items associated with days in the month.
Here is a screenshot of what we expect, note that this is a minimal calendar, feel free to create something that looks better (but not worse!).

There is source code for all the PIM related objects available at www.cs.rpi.edu/~hollingd/java/hw/hw6. There is an RMI server running on monte.cs.rpi.edu that supports the RemotePIMCollection object defined in the source code referenced above. The same code includes the RMI server in case you want to play with your own RMI server. The source code also includes a sample RMI client (named TestClient) that shows how to make use of a RemotePIMCollection object. The sample client does lots more than your Calendar progam will need to do... See the README file in the above code for a description of all the files.
You are required to use the RemotePIMCollection interface defined in the above code, this interface is shown below:
interface RemotePIMCollection extends Remote {
public PIMCollectiongetNotes() throws RemoteException;
public PIMCollectiongetNotes(String owner) throws RemoteException;
public PIMCollectiongetTodos() throws RemoteException;
public PIMCollectiongetTodos(String owner) throws RemoteException;
public PIMCollectiongetAppointments() throws RemoteException;
public PIMCollectiongetAppointments(String owner) throws RemoteException;
public PIMCollectiongetContacts() throws RemoteException;
public PIMCollectiongetContacts(String owner) throws RemoteException;
public PIMCollection getItemsForDate(Date d) throws RemoteException;
public PIMCollection getItemsForDate(Date d, String owner) throws RemoteException;
public PIMCollection getAll() throws RemoteException;
public PIMCollection getAllByOwner(String owner) throws RemoteException;
public boolean add(PIMEntity) throws RemoteException;
}
| PIM classes |
The PIM related class definitions provided in www.cs.rpi.edu/~hollingd/java/hw/hw6 are to be used for HW6 and for the final project (a full, GUI based Personal Information Manager). The following are changes to the various interfaces we have used in previous assignments:
PIMEntity has changed so that it now includes support for an Owner (a string) and a boolean that indicates whether the item is private or public. In general the simple scheme used will be that if you know the owner name, you can access a private item (This is enforced by the methods in PIMCollection, not the individual PIMEntity derived classes).
The constructors for each of the 4 types of PIMEntitys have changed to support the owner and shared flag.
The fromString methods is no longer part of the interface PIMEntity.
The toString method generates a multi-line string that is suitable for printing stuff out, but is not meant to be parsed. The general idea is that we will object serialization instead of parsing from now on...
The PIMCollection class supports more methods, specifically there are methods to get public items (when no owner is specified), and to get public and private items corresponding to a specific owner.
Note:You don't need to deal with owners or the shared flag for this homework (but you will for the final project).
| How to submit |
Submission of your homework is via email, the general idea is to send an email message with your files as attachments. There is an automated email submission system that will respond to your submission right away, so you will have a record that we got your files. For HW6 you should submit your .java files GUI Calendar program. All files must be commented using the JavaDoc style comments (so that we can run javadoc on your code to extract information about your class(es)). You don't need to include any of the files we are providing (PIMEntity, PIMCollection, etc.).
All projects must be submitted via email to javaprog-submit@cs.rpi.edu.
The subject line of the submission message should contain a single
number '6' indicating the HW number. The body of your message should
include your full name (and anything else you want to tell us). Make
sure your email message includes your full name, we can't record your
grade unless we know your name (and the email address
joe222@yahoo.com doesn't mean anything to us!).
Don't send compiled code (class files)!
You can expect a return email indicating receipt of your project submission immediately. This receipt will include a list of all the files that were successfully extracted by the submission script - please look over the receipt carefully to make sure your submission worked.
Multiple Submissions: You can resubmit up to 10 times for each project, we will always grade the last submission received unless you tell us otherwise.