Homework 5
CS520, Spring 2008
Due: Thursday, May 15
Package all the source files of your project into a zip file using the zip Ant target you
developed in Homework 1, and
upload the zip file to CSNS.
Note that file
uploading will be disabled automatically after 11:59PM
of the due date, so please turn in your work on time.
[Reading]
- Spring Book (Professional
Java Development with the Spring Framework)
- Chapter 9 (Sending Email with Spring)
- Chapter 12 (Uploading Files)
- CSNS Source Code
- csns.spring.controller.student.UploadFilesController
- csns.spring.controller.DownloadController
- csns.spring.controller.instructor.EmailStudentsController
- /conf/spring-email.xml
[Bulletin Board for CSNS]
For this assignment, complete the following features of the
CSNS bulletin board described in Homework
3:
- (15pt) Create new reply. Validation must be in place to
ensure that a user cannot create a reply with no content.
- (15pt) Display all the replies for a topic. For each reply, display the author, subject, content, and the timestamp of the reply. See this page in the ACM forums for example. Note that since we now have the replies, the number of replies and views and the information about the last post displayed on the topic list page must be correct.
- (30pt) Allow a user to include any
number of file attachments in a topic/reply. When a topic/reply is
displayed, the file attachments should be displayed as links where the
link text is the name of the file. A user may download a file
attachment by clicking on the link.
- (20pt) The author of a topic and the users who reply to the topic
are automatically subscribed to the topic. Whenever a new reply is
posted to a topic, the subscribers of the topic should receive an email
notification. The email should include a link to the topic (i.e. not
the actual content of the topic or the reply), as well as a link that
allows the user to unsubscribe from the topic.
- (20pt) If a user click the unsubscribe link in the email notification, the user should be unsubscribed from the topic.
Note that a feature must be functional in order to
receive any credit at all.
[Subversion]
Before submitting your work, commit all the changes to your
Subversion repository, and
create a tag called cs520-hw5.
[About Submission and Grading]
If you use any libraries that are not in the original CSNS and are
not included in your csns.zip, please upload the library jar files
together with csns.zip when you submit your work.
To test your project, I will use the following SQL scripts in your csns.zip to create, populate, and then clear the database:
- db/csns-create.sql
- db/csns-test-insert.sql
- db/csns-drop.sql
Please make sure these scripts are up to date and can be run in their entirety without generating any errors.