Current MS Students/Habib Khan

From CSWiki

Jump to: navigation, search

CSNS Bulletin Board

Contents

[edit] What I am planning to accomplish

[edit] Brief Project description

This project is part of the effort to provide more useful tools and services through CSNS. In particular, the goal of the project is to develop a high quality bulletin board system that uses the latest technologies and is tightly integrated with other CSNS services.

[edit] High level features

The project features are divided into three different categories

[edit] 1. Standard features

The system will support common features found in traditional bulletin board. This project will provide a custom Java Tag Library to access information from CSNS database. This will provide a robust solution for future development. Other developers will able to use these tags in their JSPs to display information from database. For example the tag library will provide an iteration tag to access all the students registered to a specific course. These tags can be used like other html tags. For details on standard feature, please view initial project description Media:CSNS_Bulletin_Board_System.doc.

[edit] 2. Advanced features

Advanced features are related to Ajax, full text search, rich text editor, file attachment. These features will make it possible for users to preview most of the information without viewing or refreshing a page. For details on advanced features, please view initial project description Media:CSNS_Bulletin_Board_System.doc.

[edit] 3. CSNS Integration

These are features that are specific to CSNS. The project will create a default forum for a course offered in the quarter and assigned moderator role to the instructor of that course. This project will use existing roles of CSNS registered users and also implement its own roles on the top of existing roles. For details on CSNS Integration features, please view initial project description Media:CSNS_Bulletin_Board_System.doc.

[edit] High level Architecture

  • System will provide a DAO layer to interect with database. This will be accomplished by using Spring, Hibernate and Hibernate Annotation.
  • System will provide a tag library to display custom content on frontend. This functionality will be done using Java Tag Library.
  • System will provide a Javascript Library to implement the advanced feature. This will be implemented by using AJAX, web 2.0 Model, display tag library and Taconite.
  • System will use Acegi Framework to implement the security. CSNS currently uses Acegi for security. This project will use existing implementation of Acegi. But it will define its own roles and will configure access list using these roles on restricted resources which will be URLs
  • System will implement full text search using Lucene
  • System will also implement MVC Architecture using Spring WebFlow Framework.
  • System will implement frontend using JSTL, JSP.
It's good that you separated this list of libraries and frameworks from the functions, but this still doesn't show what the main operational pieces of your system consist of. You will be writing some code and storing information in one or more databases (or other sort of persistent storage). What are the main chunks of code and persistent storage components that will exist as the system is running? Try to draw a diagram of the main components of the system and how they talk to each other. It's fine to say, for example, that you will be using Hibernate and Lucene. But that's like saying you will be using Java. It doesn't say what pieces your system will consist of when it is put in place. Will there be, for example, a separate database that Lucene uses? (I don't know how/where Lucene stores its indices.) Indexing and lookup are two separate activities. When/where will each occur? Where will the messages be stored? In a separate database? Will the messages and Lucene use the same database as the existing CSNS database, or will they use their own private databases? There will be code that exists because of your use of the tag libraries. What will that code talk to? Presumably it will talk to a database that will exist because of your use of Hibernate. What I'm asking you to do is to identify these pieces and to think about which ones talk to which ones.

Although this isn't how people normally use sequence diagrams, this might be a good use to make of them. The "swim lanes" are the main chunks of operational code and persistent storage. The overall diagram shows how information flows among them. Alternatively, you might want to think in terms of a deployment or component diagram. I'm interested only in the very top level, and I'm not asking for a formal UML diagram. But I would like to know what you think the pieces of your system will be and how they will interact with pieces of the existing CSNS when you're done.

Habib. I am working on the diagram.

[edit] Why this is academically interesting and challenging work

[edit] Intended audience

The registered users of CSNS will use bulletin board.

[edit] Why this is MS-level work

The bulletin board system will be tightly integrated into CSNS in a way that an existing bulletin board system could not be and it would require a significant amount of programming sophistication to add these features in existing bulletin board. Please view CSNS integration features section of initial project description Media:CSNS_Bulletin_Board_System.doc.

This project will also provide features which are not available in existing Bulletin Board. For example, phpBB (the one used by ACM) does not have forum subscription, which is very inconvenient. It also doesn’t use a rich text editor, doesn’t allow file attachment.

The system will also provide a very sophisticated UI using AJAX and WEB 2.0 which are not available in any open source bulletin board system. Please view Advanced features section of initial project description Media:CSNS_Bulletin_Board_System.doc.

This system will use same coding standards used by CSNS. These standards (used by different frameworks) make a robust solution for future development. The system will also provide a Java Tag Library to access CSNS database which could be used to display CSNS information for future development.

[edit] Why this is challenging

The challenging part of this project to implement CSNS Integration and Advanced features. please view initial project description Media:CSNS_Bulletin_Board_System.doc. The System will provide a very sophisticated UI. Personally i never worked on such frontend which is required by system. So it is challenging for me.

[edit] Previous work

  • CS 590
  • Frameworks
    • Security: Acegi
      • CSNS uses Acegi for security. I have to edit the existing configuration of Acegi to add more roles and access list for restricted resources.
      • CSNS does not use CAS. So that's why bulletin board wont use it.
    • Build: Ant, Hibernate Annotations
      • The system will use Ant for compilation and deployment of application. It will also use Hibernate Annotation for object mapping.
      • I was planning to use XDoclet for object mapping but I prefer to use Hibernate Annotation after reviewing it because it allows to create mapping without generating HBMs files.
    • Front-end:
      • Server Side: JSP, JSTL, display tag library, taconite and Spring WebFlow
        • System can use Struts instead of Spring WebFlow but CSNS uses Spring WebFlow. That's why i prefer to use WebFlow
      • Client Side: JavaScript, , AJAX
    • Backend: SPRING, HIBERNATE
    • 3rd Party Api: JUNIT, Log4J
    • Full Text Search: Lucene
      • We could use google search or other third party tools for full text search but Lucene provides extra controls to developer. Developer can index only required information.

[edit] Anticipated challenge(s)

[edit] Challenges

I chose to do a project which provides services to students and instructors. I believe that true value of a project is that could be used by hundreds of students in many year as compare to a project that produces a nice 30-minutes demo but will soon be forgotten. I have chosen a project that have a misleading name but its features and the cutting edge technlogies to implement these features make it challenging. Following are the challenges

  • To provide most information to user without refreshing page.
  • To implement full text search using Lucene.
  • To provide Rich text editor
  • Implement the Live thread feature
  • To provide Quick quoting feature. It will allow a user to respond different parts of a message instead of whole message

[edit] Anticipated approach to each challenge

  • I am sure that i will use AJAX to implement this feature. For that, i am planning to write seperate javascript library (Need to discuss with Dr, Sun)
  • I still dont know how and what kind of inforamtion i will index for full text search. (Need to discuss with Dr, Sun)
  • For rich text editor, i am trying to find some 3rd party api. Till now i unable to find it. And i am also not clear with the requirement because it is proposed by Dr, Sun. If he requires a complete rich text editor with all the feature then it will be the most challenging feature of my project. (Not clear how to do this)
  • i will use AJAX to implement this. There will be a backgroud thread for each page which will contineously submit a form after certain time and will rearrange the thread listing.
  • For quick quoting feature, I have to slipt messages into paragraphs and store these into database. I am not sure how i will implement this at the frontend. (need to discuss with Dr, Sun)

Overall approach

1) For Database access, I will create DAO (Data Access Object) layer using Spring and Hibernate.

2) For advanced feature i will create Java Tag Library and separate javascript library. I will also use JSTL, Spring tags, taconite, display tags and Acegi tag library.

3) For full text search

  • Create indices (requirement is not finalized yet) using lucene
  • Write search api.

[edit] What I bring to this work

[edit] My relevant background and experience

In fall quarter 2006, I took CS520 (Advanced Web Programming). And I studied all the technologies required to implement the project. In CS520 class, I worked on a web project named Sales Territory System (STS). My code was mostly based on the same architecture used by CSNS. STS helped me to understand CSNS code. I am taking CS590 in winter quarter 2007. This class helped me to define my project description, initial goals and objectives. (CS 590) weekly progress.

[edit] What I find interesting about this work

I want to chose a Web project for my MS project which implements all the advanced technogies and framework. To implement the advanced features are the most interesting thing in this project.

[edit] How this work goes beyond my experience and course work

  • Implementing a very sophisticated UI using AJAX and WEB 2.0.
  • Implementing full text search with Lucene

[edit] Project Features

The Project features is defined into three different categories

  • Standard Features
  • Advanced Features
  • CSNS Integration

[edit] Standard Features

The standard features are

  • Create new forum by administrator or moderator
    • Administrator or Moderator (Need to discuss with Dr. Sun about Moderator) will have privileges to create new forum.
  • Create new thread in forum by registered users
    • Registered users of forum will be able to create new thread.
  • Post replies on a thread
    • Registered users of forum will be able to post reply to the thread.
  • View forum
    • User will be able to view the forum, threads and replies (Need to talk with Dr. Sun about this feature for Guest User)
  • Edit threads or replies by user
    • User will be able to edit his own threads and replies (To be discussed)
  • Send personal messages to other users
    • User will able to send a personal messages to other registered users
  • Delete post by user
    • Registered users will be allowed to delete their post
  • Edit threads and replies by Administrator or Moderator
    • Administrator and moderator are allowed to edit a threads or replies. They can also put a comment on a thread or reply. An email notification will be sent to user
  • Move reply into other threads by administrator or moderator
    • If administrator or moderator of that forum feels that reply belong to other thread, they will be allowed to move this reply into other thread. And an email notification will be sent to user.
  • Delete a thread or reply by administrator or moderator
    • Administrator or moderator will be allowed to delete a thread or reply. And an email notification will be sent to user.
  • Ability to ban a user from a thread or forum by moderator (Need to be discussed)

[edit] Advanced Features

Advanced features are related to Ajax, full text search, rich text editor, file attachment.

  • Users are allowed to preview threads without entering to the thread. Don’t need to refresh page and see extra information.
    • There will be a small icon on next to each thread. User will be able to see the contents of the thread in a popup by moving mouse on this icon. There will be no page refresh and will be done using AJAX.
  • Ability to re-order the post on the thread based on last updated time without refreshing page.
    • If user has an open page for a forum and somebody reply to a thread, then this thread will become a live thread and it will move to the top of the page without refreshing it. (To be discussed)
  • Enable/disable live thread feature
    • Users will be able to enable and disable live thread feature for a forum to save the processing time. (To be discussed)
  • Ability to post a reply on a thread without refreshing page
    • There will be a small icon to post a reply. When user will click on this icon, he will see a popup window. He will be able to write and post a reply in this window. After posting the reply, it will be displayed on the page without refreshing the page (To be discussed)
  • Allow users to have an avatar
    • Users will be allowed to have a small picture located around their name, this is called an avatar.
  • Allow users to have a signature at the end of each message
  • Ability to write quick quoting post on separate parts of multiple people’s post (Need to be discussed)
  • Ability to rate a thread (Need to be discussed)
  • Ability to change a threshold to control the number of posts (Need to be discussed)
  • Ability to show unread posts in each thread and when other user replied(Need to be discussed)
  • Full text search of posts
    • Users will be allowed to search a post using full text search. Lucene will be used to provide this feature
  • Ability to have file attachments
    • Users will be allowed to attach a file with their post
  • Ability to view the file attachment
    • Click on file attachment icon, user will view the file in a new window.

[edit] CSNS Integration

These are features that are specific to CSNS

  • Create a default forum for a course offered in the quarter and assigned moderator role to the instructor of that course.
    • This will be done by Bulletin board. So for each course, there will be a forum. Instructor and students taking this course will be registered to the forum by default. And they are allowed to create threads and post replies in the forum.
    • Each course (not a section, which can be thought as a course in a quarter) has a forum associated with it. When a new course (again, not a section) is created, its associated forum is created automatically. (Commented by Dr, Sun. Need to discuss)
  • Ability to create other forum, e.g. Announcements, General Discussion, and Job Opportunities. These forums are not associated with courses
  • Role-based access control - In particular, only ROLE_ADMIN can create new forums, Only ROLE_INSTRUCTOR can post in Announcements, ROLE_USER can create new posts and replies, and ROLE_GUEST can only read (include search). Create a new role ROLE_FORUM_MODERATOR. Only moderator can edit posts (including pinning threads etc.).
  • Subscriptions – A user will be able to “subscribe” to a forum or a thread. There will also be an option about receiving daily digest. “Subscribable” objects like forums or threads will implement a Subscribable interface; this will (at least) allow easy implementation of un-subscription. Subscriptions can be managed in account profile. (Need to discuss)
  • Automatic role assignment and subscription – each instructor of a course automatically will receive the forum moderator role for the course forum during the quarter, and the role will be automatically revoked after the quarter ends. The coordinator of a course remains a moderator of the forum for that course. Students enrolled in a course automatically subscribed to the course forum (unless they manually unsubscribe in their account profile), and automatically unsubscribe after the quarter.
  • The most recent five topics in Announcement forum will be displayed on the CSNS front page.

[edit] User Characteristic

The primary users will be instructors and students who are registered to CSNS. Bulletin Board also defined its own role called moderator. Moderator will able to manage forums and threads.

1. Administrator and Moderator

A forum administrator typically has the ability to edit, delete, move or otherwise modify any thread on the forum. Administrators also usually have the ability to close the board, modify the board, ban, delete, or create members. Moderator privileges will be delegated to other forum members. Moderators will help the Administrator (Admin), but have fewer abilities, which may include editing, deleting, and moving threads, mass pruning, warning members for offenses, and changing minor forum details. The reasons for having these abilities are often to allow peace to be maintained and the rules to be enforced. Moderator can be directly appointed by the board administrator or chosen by an automated process combined with the existing instructor role.

2. Members and Users

Members of a forum usually will have basic rights. They will be able to post in threads, edit their posts, start new topics, and change their settings. On most forums, users have a small picture located around their name, this is called an avatar. An avatar is a small picture that is chosen by the user. Members also have the ability to use and send personal messages to each other. Members will be given the ability to close their own topics, or delete posts in topics they have started. Members will also have the choice of a signature, which will be usually words at the end of every post.

[edit] Attached File

Personal tools