This site hosted by Free.ProHosting.com
Google

 

 

 

 

 

Collaborative Tool

 

Initial Software Architecture and

Design

 

 


Table of Contents

 

Table of Contents. iii

List of Figures. vi

1.0       Module Overview.. 2

2.0       Module Interactions and Descriptions. 2

2.1       Interface AMCC.. 2

attach. 3

detach. 3

getFreeChannel 3

send. 4

listen. 4

unlisten. 4

2.2       Interface Authentication Control 4

login. 5

logoff 5

createAccount 6

2.3       Interface Participant Control 6

addParticipantToDB.. 7

deleteParticipantFromDB.. 7

getParticipant 8

addParticipatedProject 8

2.4       Interface Directory. 9

lookUpNode. 9

lookUpAttribute. 10

addAttribute. 10

removeAttribute. 10

addNewNode. 11

removeNode. 11

2.5       Interface PersistentStorage. 11

addItem.. 12

retrieveItem.. 12

deleteItem.. 12

2.6       Interface Project Control 13

createProject 14

deleteProject 14

activateProject 15

deactivateProject 15

addParticipantToProject 15

deleteParticipantFromProject 16

addDocument 16

deleteDocument 16

getParticipatingProjects. 17

getProjectParticipants. 17

getProject 17

getSession. 17

2.7       Interface Session Control 18

joinSession. 19

leaveSession. 19

requestTurn. 19

releaseTurn. 19

moveToFrontOfDialogueQueue. 20

gainDialogueControl 20

sendMessage. 20

requestEditControl 20

releaseEditControl 21

moveToFronOfEditQueue. 21

gainEditControl 21

saveTranscript 21

2.8       Interface System.. 22

login. 25

logoff 25

createAccount 25

joinSession. 25

leaveSession. 25

requestTurn. 26

releaseTurn. 26

acquireEditControl 26

releaseEditControl 26

moveToFrontOfQueue. 26

gainDialogueControl 26

sendDialog. 27

loadDocument 27

saveDocument 27

createNewProject 27

deleteProject 27

activateProject 27

deactivateProject 28

addParticipantToProject 28

deleteParticipantFromProject 28

addDocument 28

deleteDocument 28

2.9       Interface Document Control 29

loadDocument 29

saveDocument 29

2.10     Interface Client GUI 30

PROJECT. 32

DOCUMENTS. 32

TRANSCRIPTS. 32

DISCUSSION.. 32

ACTIVATE_PROJECT. 32

INACTIVATE_PROJECT. 33

DELETE_PROJECT. 33

EDIT_PARTICIPANT_LIST. 33

ADD_DOCUMENT. 33

LOG_OFF. 33

EDIT_DOCUMENT. 33

DELETE_DOCUMENT. 33

REQUEST_TURN.. 33

MOVE_TO_QUEUE_FRONT. 33

GAIN_DIALOG_CONTROL. 34

RELEASE_TURN.. 34

END_DISCUSSION.. 34

SEND_MESSAGE. 34

REFRESH_PROJECT_TREE. 34

setViewVisible. 34

setButtonEnabled. 34

setStatusBarMessage. 35

displayErrorDialog. 35

addNotificationMessage. 35

updateProjectStatusPanel 35

postMessage. 35

updateRequestTurnQueue. 35

updateDocumentsListing. 36

setActiveDocument 36

updateDocumentTable. 36

updateProjectTree. 36

setUserOnline. 36

updateDocumentPanel 37

3.0       User Interface. 38

4.0       Interaction Diagrams. 45

4.1       Create New Project 45

4.2       Login. 46

4.3       Activate Project 47

4.4       Request Turn. 48

4.5       Send Message. 49


List of Figures

 


Figure 1  Component Model Diagram.. 2

Figure 2  User Authentication Window.. 38

Figure 3  New Account Form.. 38

Figure 4  Project View.. 39

Figure 5  Discussion View.. 40

Figure 6  Edit Document View.. 42

Figure 7  Document List View.. 43

Figure 8  Create New Project Interaction Diagram.. 45

Figure 9  Login Interaction Diagram.. 46

Figure 10  Activate Project Interaction Diagram.. 47

Figure 11  Request Turn Interaction Diagram.. 48

Figure 12  Send Message Interaction Diagram.. 49

 


1.0   Module Overview

 

This section includes two diagrams that indicate the overall layered architecture of the Collaborative Tool.

 


Figure 1 below outlines the basic system architecture showing the software layers and separation. Also shown are the interconnections between the modules that make up the server side Application Layer.

 

Figure 1 Component Model Diagram

 

 The AMCC module will provide the transport mechanism for all messages and data that flow between the client and server side of the system. It will be isolated from the system via the RFC (Remote Function Call) module which will coordinate signaling and data marshalling. Further isolation is achieved using the AL (Application Logic Stub). This stub will provide the client side interface to the server side Application Logic modules and route those commands via the RFC module.


 

 

2.0   Module Interactions and Descriptions

 


2.1     Interface AMCC


public interface AMCC

Purpose:

The AMCC module links all related component modules. It provides the following functions:

1) Attach a component to the AMCC according to the component's request.
2) Detach a component from the AMCC according to the component's request.
3) Send message objects on a specified channel.
4) Get a free channel from the AMCC's available channels.
5) Listen to a specific channel.
6) “Unlisten” to a channel.


Method Summary

 boolean

attach(java.util.Observer amccListener)
          Attaches a component to the AMCC.

 boolean

detach(java.util.Observer amccListener)
          Detaches a component from the AMCC.

 int

getFreeChannel()
          Gets a free channel.

 boolean

listen(int chanID, java.util.Observer amccListener)
          Listen to a channel.

 boolean

send(int chanID, java.lang.Object sendObject)
          Sends an object (messages) on a specific channel.

 boolean

unlisten(int chanID, java.util.Observer amccListener)
          Unlisten to a channel.


 

 
Method Detail

attach

public boolean attach(java.util.Observer amccListener)

Attaches a component to the AMCC. Anyone wishing to use the AMCC will attach to the AMCC.

Parameters:

amccListener - the component that will attach to the AMCC.

Returns:

true if the component attaches successfully, false otherwise.

Throws:

java.lang.IllegalArgumentException - if amccListener is an invalid type.


detach

public boolean detach(java.util.Observer amccListener)

Detaches a component from the AMCC. When a component is no longer interested in participating in communications, it will detach from the AMCC.

Parameters:

amccListener - the component that will attach to the AMCC.

Returns:

true if the component detaches successfully, false otherwise.

Throws:

java.lang.IllegalArgumentException - if amccListener is an invalid type.


getFreeChannel

public int getFreeChannel()

Gets a free channel. When a component wants an unused channel, it will request a free channel from the AMCC.

Returns:

channelID identified by an integer in the range [0,231 - 1].

Throws:

FailureException - if there is no free channel.



send

public boolean send(int chanID,
                    java.lang.Object sendObject)

Sends an object (messages) on a specific channel. Messages sent on this channel will be heard by anyone listening on that channel.

Parameters:

chanID - ID of the specific channel.

sendObject - object (messages) to be sent.

Returns:

true if sending is successful, false otherwise.

Throws:

java.lang.IllegalArgumentException - if chanID and/or object sent is invalid.


listen

public boolean listen(int chanID,
                      java.util.Observer amccListener)

Listen to a channel. To receive communications directed to a channel, a component will listen to a channel.

Parameters:

chanID - ID of a specific channel.

amccListener - the component that will listen to the channel.

Returns:

true if message receiving is successful, false otherwise.

Throws:

java.lang.IllegalArgumentException - if chanID and/or amccListener are invalid.


unlisten

public boolean unlisten(int chanID,
                        java.util.Observer amccListener)

Unlisten to a channel. When a component no longer wishes to receive communications from a channel, it will “unlisten” to a channel.

Parameters:

chanID - ID of a specific channel.

amccListener - the component listening to the channel.

Returns:

true if no longer listening, false otherwise.

Throws:

java.lang.IllegalArgumentException - if chanID and/or amccListener are invalid.


 

2.2     Interface Authentication Control


public interface AuthenticationControl

Purpose:

The Authentication Module manages the entrance and exit of users to and from the system. It provides the following functions:

1) Login
2) Logoff
3) Create Account

Imports:

 

Participant-> boolean addParticipantToDB(String userName);

Participant-> ParticipantInfo getParticipant(String userName);


Method Summary

 int

createAccount(java.lang.String userName, java.lang.String password)
          Create a new user account.

 ParticipantInfo

login(java.lang.String userName, java.lang.String password)
          Login a registered user.

 void

logoff(ParticipantInfo participant)
          Logoff a participant.

 

Method Detail

login

public ParticipantInfo login(java.lang.String userName,
                             java.lang.String password)

Login a registered user. A participant will be identified by a username and corresponding password.

Parameters:

userName - the unique username of a registered user

password - the password used to confirm the identity of the user

Returns:

participantInfo when login is successful.

Throws:

java.lang.IllegalArgumentException - if username or password is incorrect.


logoff

public void logoff(ParticipantInfo participant)

Logoff a participant. A participant logs off to leave the system.

Parameters:

participant – The participant’s information.

Throws:

java.lang.IllegalArgumentException - if participantInfo is invalid.


createAccount

public int createAccount(java.lang.String userName,
                         java.lang.String password)

Creates a new user account. A new user requests an account by providing user information and a password.

Parameters:

userName - the username of the new user

password - the password for this new user

Returns:

userID when a new account is successfully created.

Throws:

java.lang.IllegalArgumentException - if userName/password is invalid.


 

2.3     Interface Participant Control


public interface ParticipantControl

Purpose:

The Participant Module has access to and can modify participant information. It has the following functions:

1) Add a participant to participant database
2) Delete a participant from participant database
3) Get the participant information from the participant database



 

Method Summary

 boolean

addParticipantToDB(java.lang.String userName)
          Add a participant to the Participant database.

 boolean

addParticipatedProject(ParticipantInfo participant, ProjectInfo projectName)
          Add a new project in which the user is a participant to that user’s project list.

 boolean

deleteParticipantFromDB(java.lang.String userName)
          Delete a participant from the Participant database.

 ParticipantInfo

getParticipant(java.lang.String userName)
          Get the information of a specific participant.

 

Method Detail

addParticipantToDB

public boolean addParticipantToDB(java.lang.String userName)

Add a participant to the Participant database.

Parameters:

userName - the username of a participant.

Returns:

true if a participant is successfully added, false otherwise.

Throws:

java.lang.IllegalArgumentException - if userName is NULL or already in the database.


deleteParticipantFromDB

public boolean deleteParticipantFromDB(java.lang.String userName)

Delete a participant from the Participant database.

Parameters:

userName - the username of a participant.

Returns:

true if a participant is successfully deleted, false otherwise.

Throws:

java.lang.IllegalArgumentException - if userName is NULL or not in the database.



getParticipant

public ParticipantInfo getParticipant(java.lang.String userName)

Get the information of a specific participant.

Parameters:

userName - username of a specific participant

Returns:

participantInfo.

Throws:

java.lang.IllegalArgumentException - if username is not in the database.


addParticipatedProject

public boolean addParticipatedProject(ParticipantInfo participant,
                                      ProjectInfo projectName)

Add a new project in which the user is a participant to that user’s project list.

Parameters:

participant - the participant information.

projectName - the name of the project to add.

Returns:

true if added successfully, false otherwise.

Throws:

java.lang.IllegalArgumentException - if participant/projectName is invalid.


 

2.4     Interface Directory


public interface Directory

The directory component provides a hierarchical lookup service.


Method Summary

 java.lang.String

addAttribute(java.lang.String path, java.lang.String attribute, java.util.Collection value)
          Adds the specified attributes and values to the supplied path.

 boolean

addNewNode(java.lang.String path)
          Adds a new node at the end of the supplied path.

 java.util.Collection

lookUpAttribute(java.lang.String myPath, java.util.Collection attributeKeys)
          Retrieves the collection of attributes given the supplied path and attribute keys.

 Node

lookUpNode(java.lang.String myPath)
          Retrieves the Node at the end of the supplied path.

 boolean

removeAttribute(java.lang.String path, java.lang.String attributeKey)
          Removes the attribute with the supplied path and attribute key.

 boolean

removeNode(java.lang.String path)
          Removes the node with the supplied path.

 

Method Detail

lookUpNode

public Node lookUpNode(java.lang.String myPath)

Retrieves the Node having the supplied path.

Parameters:

myPath - the path of a node in the directory.

Returns:

the node requested.

Throws:

java.lang.IllegalArgumentException - if myPath is null.



lookUpAttribute

public java.util.Collection lookUpAttribute(java.lang.String myPath,
                                            java.util.Collection attributeKeys)

Retrieves the collection of attribute with the supplied path and attribute keys.

Parameters:

myPath - the path to the node in which the attributes reside.

attributeKeys - the keys of the attributes requested.

Returns:

the collection of attributes requested.

Throws:

java.lang.IllegalArgumentException - if either myPath or attribute key is null.


addAttribute

public java.lang.String addAttribute(java.lang.String path,
                                     java.lang.String attribute,
                                     java.util.Collection value)

Adds the attribute to the node at the supplied path with the specified value(s).

Parameters:

path - the path of the node to which the attribute will be added.

attribute - the attribute to be added.

value - the collection of values of the attribute to be added.

Returns:

the attribute added.

Throws:

java.lang.IllegalArgumentException - if either path, attribute or value is null.


removeAttribute

public boolean removeAttribute(java.lang.String path,
                               java.lang.String attributeKey)

Removes the attribute at the supplied path with the specified attribute key.

Parameters:

path - the path of the node from which the attribute is removed.

attributeKey - the key of the attribute to be deleted,

Returns:

true if the removal is successful; false otherwise.

Throws:

java.lang.IllegalArgumentException - if either path or attributeKey is null.



addNewNode

public boolean addNewNode(java.lang.String path)

Adds a new node at the supplied path.

Parameters:

path - the path to which the new node will be added.

Returns:

true if the addition is successful; false otherwise.

Throws:

java.lang.IllegalArgumentException - if path is null.


removeNode

public boolean removeNode(java.lang.String path)

Removes the node having the supplied path.

Parameters:

path - the path from which the node will be removed.

Returns:

true if the removal is successful; false otherwise.

Throws:

java.lang.IllegalArgumentException - if path is null.

 

 

2.5     Interface PersistentStorage


public interface PersistentStorage

This component provides a persistent store for information.


Method Summary

 int

addItem(java.lang.Object item)
          Adds an item to the store and returns a 32 bit key that identifies that item.

 boolean

deleteItem(int key)
          Deletes the item with the supplied 32 bit key.

 java.lang.Object

retrieveItem(int key)
          Retrieves the item with the supplied 32 bit key.

 


 

Method Detail

addItem

public int addItem(java.lang.Object item)

Adds an item to the store and returns a 32 bit key that identifies that item.

Parameters:

item - the item to be added to the persistent storage.

Returns:

a 32 bit key that is used to retrieve / delete the item.

Throws:

java.lang.IllegalArgumentException - if item is null.


retrieveItem

public java.lang.Object retrieveItem(int key)

Retrieves the item with the supplied 32 bit key.

Parameters:

key - the 32 bit key that identifies the item.

Returns:

the item requested.

Throws:

java.lang.IllegalArgumentException - if key is null.


deleteItem

public boolean deleteItem(int key)

Deletes the item with the supplied 32 bit key.

Parameters:

key - the 32 bit key that identifies the item.

Returns:

true if deletion is successful; false otherwise.

Throws:

java.lang.IllegalArgumentException - if key is null

 




2.6     Interface Project Control


public interface ProjectControl

Purpose:

The ProjectControl Module contains all functions that are related to the management of projects and the documents of those projects. This module also controls session creation and participating member lists.

Imports:

 



Method Summary

 SessionInfo

activateProject(java.lang.String projectName, ChairInfo chair)
          Activates a project with the specified project name.

 boolean

addDocument(ProjectInfo project, Document doc)
          Adds the selected document to the selected project.

 boolean

addParticipantToProject(ProjectInfo project, java.lang.String userName, ChairInfo chair)
          Adds a user with the specified username to the selected project.

 ProjectInfo

createProject(java.lang.String projectName, ParticipantInfo creator)
          Creates a new project with the specified project name in the database and assigns the creator to be the chair of the project.

 boolean

deactivateProject(ProjectInfo project, ChairInfo chair)
          Deactivates the specified project.

 boolean

deleteDocument(ProjectInfo project, Document doc, ChairInfo chair)
          Removes the selected document from the selected project.

 boolean

deleteParticipantFromProject(ProjectInfo project, java.lang.String userName, ChairInfo chair)
          Removes a user with the specified username from the selected project.

 boolean

deleteProject(java.lang.String projectName, ChairInfo chair)
          Deletes a project with the specified project name from the project database.

 java.util.Collection

getParticipatingProjects(ParticipantInfo participant)
          Gets a list of projects that have the indicated participant as a member.

 ProjectInfo

getProject(java.lang.String projectName)
          Gets a reference to the project with the specified project name.

 java.util.Collection

getProjectParticipants(ProjectInfo project)
          Gets a list of the indicated project's participants.

 SessionInfo

getSession(ProjectInfo activeProject)
          Gets a reference to the session of the indicated project.

 

Method Detail

createProject

public ProjectInfo createProject(java.lang.String projectName,
                                 ParticipantInfo creator)

Creates a new project with the specified project name in the database and assigns the creator to be the chair of the project.

Returns:

a reference to the created project.


deleteProject

public boolean deleteProject(java.lang.String projectName,
                             ChairInfo chair)

Deletes a project with the specified project name from the project database. Only a chair is able to perform this action.

Parameters:

projectName - the name of the project to delete.

chair - the chair who initiates the project deletion.

Returns:

true if the project is deleted successfully, false otherwise.



activateProject

public SessionInfo activateProject(java.lang.String projectName,
                                   ChairInfo chair)

Activates a project with the specified project name. Only a chair is able to perform this action.

Parameters:

projectName - the name of the project to activate.

chair - the chair who initiates the project activation.

Returns:

a reference to the created session.


deactivateProject

public boolean deactivateProject(ProjectInfo project,
                                 ChairInfo chair)

Deactivates the project specified by the reference. Only a chair is able to perform this action.

Parameters:

project - a reference to the project to deactivate.

chair - the chair who initiates the project deactivation.

Returns:

true if the project is successfully deactivated, false otherwise.


addParticipantToProject

public boolean addParticipantToProject(ProjectInfo project,
                                       java.lang.String userName,
                                       ChairInfo chair)

Adds a user with the specified username to the selected project. Only a chair is able to perform this action.

Parameters:

project - a reference to the project to which a user will be added.

userName - the username of the participant to add.

chair - the chair who adds the participant to the project.

Returns:

true if the participant is successfully added, false otherwise.



deleteParticipantFromProject

public boolean deleteParticipantFromProject(ProjectInfo project,
                                            java.lang.String userName,
                                            ChairInfo chair)

Removes a user with the specified username from the selected project. Only a chair is able to perform this action.

Parameters:

project - a reference to the project to remove a user from.

userName - the username of the participant to remove.

chair - the chair who removes the participant from the project.

Returns:

true if the participant is successfully removed, false otherwise.


addDocument

public boolean addDocument(ProjectInfo project,
                           Document doc)

Adds the selected document to the selected project.

Parameters:

project - a reference to the project to add a document to.

doc - a reference to the document to add.

Returns:

true if the document is successfully added, false otherwise.


deleteDocument

public boolean deleteDocument(ProjectInfo project,
                              Document doc,
                              ChairInfo chair)

Removes the selected document from the selected project.

Parameters:

project - a reference to the project to remove a document from.

doc - a reference to the document to remove.

chair - the chair who removes the document from the project.

Returns:

true if the document is successfully removed, false otherwise.



getParticipatingProjects

public java.util.Collection getParticipatingProjects(ParticipantInfo participant)

Gets a list of projects that have the indicated participant as a member.

Parameters:

participant - a reference to the participant.

Returns:

a Collection of project objects that have the indicated participant as a member.


getProjectParticipants

public java.util.Collection getProjectParticipants(ProjectInfo project)

Gets a list of the indicated project's participants.

Parameters:

project - a reference to the project.

Returns:

a Collection of participant objects that belong to the indicated project.


getProject

public ProjectInfo getProject(java.lang.String projectName)

Gets a reference to the project with the specified project name.

Parameters:

projectName - the name of the project.

Returns:

a reference to the project with the specified project name.


getSession

public SessionInfo getSession(ProjectInfo activeProject)

Gets a reference to the session of the indicated project.

Parameters:

activeProject - a reference to the project.

Returns:

a reference to the session of the indicated project, or null if the project is inactive.


 

 


2.7     Interface Session Control


public interface SessionControl

Purpose:

The SessionControl module manages all actions that are available during a project session. These include managing the dialog and edit queues as well as sending messages to all users who are participating in the session.

Imports:

 

 


Method Summary

 boolean

gainDialogueControl(ChairInfo chair)
          Forces the current turn-holder to release the turn and give it to the chair.

 boolean

gainEditControl(ChairInfo chair)
          Forces the current edit control holder to release edit control and give it to the chair.

 boolean

joinSession(SessionInfo session, ParticipantInfo participant)
          Joins the indicated participant to the selected session.

 boolean

leaveSession(SessionInfo session, ParticipantInfo participant)
          Invoked when a participant leaves a session.

 boolean

moveToFronOfEditQueue(ChairInfo chair)
          Moves the chair to the front of the edit queue.

 boolean

moveToFrontOfDialogueQueue(ChairInfo chair)
          Moves the chair to the front of the dialogue queue.

 boolean

releaseEditControl(ParticipantInfo participant)
          Release the current edit control.

 boolean

releaseTurn(ParticipantInfo participant)
          Release the current turn.

 boolean

requestEditControl(ParticipantInfo participant)
          Requests edit control.

 boolean

requestTurn(ParticipantInfo participant)
          Requests a turn to speak.

 boolean

saveTranscript()
          Saves the session dialogue into a transcript for future reference.

 boolean

sendMessage(java.lang.String message, ParticipantInfo participant)
          Sends a message to everyone participating in the session.

 

Method Detail

joinSession

public boolean joinSession(SessionInfo session,
                           ParticipantInfo participant)

Joins the indicated participant to the selected session.

Returns:

true if the participant joins the session successfully, false otherwise.


leaveSession

public boolean leaveSession(SessionInfo session,
                            ParticipantInfo participant)

Invoked when a participant leaves a session. If the participant is the chair of the project, the session will be closed, all participants will be forced to leave, and the transcript will be saved.

Parameters:

session - a reference to the session.

participant - a reference to the participant who leaves the session.

Returns:

true if the participant leaves the session successfully, false otherwise.


requestTurn

public boolean requestTurn(ParticipantInfo participant)

Requests a turn to speak. If no one is currently holding a turn, the requester will be given a turn; otherwise, the requester will be added to the end of the dialogue queue.

Parameters:

participant - a reference to the participant who requests a turn.

Returns:

true if the request is successful, false otherwise.


releaseTurn

public boolean releaseTurn(ParticipantInfo participant)

Release the current turn. If exists, the participant in the front of the dialogue queue will be de-queued and given a turn.

Parameters:

participant - a reference to the participant who releases the turn.

Returns:

true if the release is successful, false otherwise.


moveToFrontOfDialogueQueue

public boolean moveToFrontOfDialogueQueue(ChairInfo chair)

Moves the chair to the front of the dialogue queue. Only a chair can perform this operation.

Parameters:

chair - the chair who requested to be moved to the front of the dialogue queue.

Returns:

true if the move is successful, false otherwise.


gainDialogueControl

public boolean gainDialogueControl(ChairInfo chair)

Forces the current turn-holder to release the turn and give it to the chair. Only a chair can perform this operation.

Parameters:

chair - the chair who requested dialogue control.

Returns:

true if dialogue control is achieved, false otherwise.


sendMessage

public boolean sendMessage(java.lang.String message,
                           ParticipantInfo participant)

Sends a message to everyone participating in the session.

Parameters:

message - the text message to be sent.

participant - a reference to the participant who sends the message.

Returns:

true if the message is sent successfully, false otherwise.


requestEditControl

public boolean requestEditControl(ParticipantInfo participant)

Requests edit control. If no one currently has edit control, the requester will be given control; otherwise, the requester will be added to the end of the edit queue.

Parameters:

participant - a reference to the participant who requests edit control.

Returns:

true if the request is successful, false otherwise.



releaseEditControl

public boolean releaseEditControl(ParticipantInfo participant)

Release edit control. If exists, the participant in the front of the edit queue will be de-queued and given edit control.

Parameters:

participant - a reference to the participant who releases edit control.

Returns:

true if the release is successful, false otherwise.


moveToFronOfEditQueue

public boolean moveToFronOfEditQueue(ChairInfo chair)

Moves the chair to the front of the edit queue. Only a chair can perform this operation.

Parameters:

chair - the chair who requests to be moved to the front of the edit queue.

Returns:

true if the move is successful, false otherwise.


gainEditControl

public boolean gainEditControl(ChairInfo chair)

Forces the current edit control holder to release edit control and gives it to the chair. Only a chair can perform this operation.

Parameters:

chair - the chair who requested edit control.

Returns:

true if edit control is achieved, false otherwise.


saveTranscript

public boolean saveTranscript()

Saves the session dialogue into a transcript for future reference.

Returns:

true if the transcript is saved successfully, false otherwise

 


2.8     Interface System


public interface System

Purpose: The System Module acts as a mediator whose responsibility is to control and coordinate the activities of all other modules during run-time.

Imports:

 * Authentication->ParticipantInfo login(String userName, String password);

 * Authentication->void logoff(ParticipantInfo participant);

 * Authentication->ParticipantInfo createAccount(String userName, String password);

 * SessionControl->boolean joinSession(SessionInfo session, ParticipantInfo participant);

 * SessionControl->boolean leaveSession(SessionInfo session, ParticipantInfo participant);

 * SessionControl->boolean requestTurn(ParticipantInfo participant);

 * SessionControl->boolean releaseTurn(ParticipantInfo participant);

 * SessionControl->boolean acquireEditControl(ParticipantInfo participant);

 * SessionControl->boolean releaseEditControl(ParticipantInfo participant);

 * SessionControl->boolean moveToFrontOfQueue(ChairInfo chair);

 * SessionControl->boolean gainDialogueControl(ChairInfo chair);

 * SessionControl->boolean sendDialog(String msg);

 * Document->boolean saveDocument();

 * Document->boolean loadDocument();

 * ProjectControl->ProjectInfo createNewProject(ParticipantInfo participant, String projectName);

 * ProjectControl->boolean deleteProject(String projectName, ChairInfo chair);

 * ProjectControl->boolean activateProject(String projectName, ChairInfo chair);

 * ProjectControl->boolean deactivateProject(ProjectInfo project, ChairInfo chair);

 * ProjectControl->sessionInfo activateProject(String projectName, ChairInfo chair);

 * ProjectControl->boolean addParticipantToProject(ProjectInfo project, String userName, ChairInfo chair);

 * ProjectControl->boolean deleteParticipantFromProject(ProjectInfo project, String userName, ChairInfo chair);

 * ProjectControl->boolean addDocument(Document doc);

 * ProjectControl->boolean deleteDocument(Document doc, ChairInfo chair);


Method Summary

 boolean

acquireEditControl(ParticipantInfo participant)
          Invokes "acquireEditControl" method of the SessionControl Interface to allow a participant to acquire edit control in a session.

 sessionInfo

activateProject(java.lang.String projectName, ChairInfo chair)
          Invokes "activateProject" method of  the ProjectControl

Interface to allow a chair to activate a project.

 boolean

addDocument(Document doc)
          Invokes "addDocument" method of the ProjectControl Interface to allow a participant to add a document to a project.

 boolean

addParticipantToProject(ProjectInfo project, java.lang.String userName, ChairInfo chair)
          Invokes "addParticipantToProject" method of the ProjectControl Interface to allow a chair to add a participant to a project.

 ParticipantInfo

createAccount(java.lang.String userName, java.lang.String password)
          Invokes "createAccount" method of the Authentication Interface to allow a user to create a new account in the system.

 ProjectInfo

createNewProject(ParticipantInfo participant, java.lang.String projectName)
          Invokes "createNewProject" method of the Document Interface to allow a participant to create a new project.

 boolean

deactivateProject(ProjectInfo project, ChairInfo chair)
          Invokes "deactivateProject" method of the ProjectControl Interface to allow a chair to deactivate a project.

 boolean

deleteDocument(Document doc, ChairInfo chair)
          Invokes "deleteDocument" method of the ProjectControl Interface to allow a participant to delete a document from a project.

 boolean

deleteParticipantFromProject(ProjectInfo project, java.lang.String userName, ChairInfo chair)
          Invokes "deleteParticipantFromProject" method of the ProjectControl Interface to allow a chair to delete a participant from a project.

 boolean

deleteProject(java.lang.String projectName, ChairInfo chair)
          Invokes "deleteProject" method of the ProjectControl Interface to allow a chair to delete a project.

 boolean

gainDialogueControl(ChairInfo chair)
          Invokes "gainDialogueControl" method of the SessionControl Interface to allow a chair of a project to forcefully take control of the dialog during a session.

 boolean

joinSession(SessionInfo session, ParticipantInfo participant)
          Invokes "joinSession" method of the SessionControl Interface to allow a participant to join a session of a project in which he/she is a participant.

 boolean

leaveSession(SessionInfo session, ParticipantInfo participant)
          Invokes "leaveSession" method of the SessionControl Interface to allow a participant to leave a session of a project in which he/she is a participant.

 boolean

loadDocument()
          Invokes "loadDocument" method of the SessionControl Interface to allow a participant with edit control to edit a document in the session.

 ParticipantInfo

login(java.lang.String userName, java.lang.String password)
          Invokes "login" method of the Authentication Interface to allow a user to log into the system.

 void

logoff(ParticipantInfo participant)
          Invokes "logoff" method of the Authentication Interface to allow a user to log off of the system.

 boolean

moveToFrontOfQueue(ChairInfo chair)
          Invokes "moveToFrontOfQueue" method of the SessionControl Interface to allow a chair of a project to move to the head of the dialog queue at any time during a session.

 boolean

releaseEditControl(ParticipantInfo participant)
          Invokes "releaseEditControl" method of the SessionControl Interface to allow a participant to release edit control during a session.

 boolean

releaseTurn(ParticipantInfo participant)
          Invokes "releaseTurn" method of the SessionControl Interface to allow a participant to release dialog control during a session.

 boolean

requestTurn(ParticipantInfo participant)
          Invokes "requestTurn" method of the SessionControl Interface to allow a participant to request dialog control during a session.

 boolean

saveDocument()
          Invokes "saveDocument" method of the Document Interface to allow a participant with edit control to save a document during the session.

 boolean

sendDialog(java.lang.String msg)
          Invokes "sendDialog" method of the SessionControl Interface to allow a participant with dialog control to send messages to other participants in the session.

 


 

Method Detail

login

public ParticipantInfo login(java.lang.String userName,
                             java.lang.String password)

Invokes "login" method of the Authentication Interface to allow a user to log into the system. See "login" method of Authentication Interface for parameter details and return type.


logoff

public void logoff(ParticipantInfo participant)

Invokes "logoff" method of the Authentication Interface to allow a user to log off of the system. See "logoff" method of the Authentication Interface for parameter details and return type.


createAccount

public ParticipantInfo createAccount(java.lang.String userName,
                                     java.lang.String password)

Invokes "createAccount" method of the Authentication Interface to allow a user to create a new account in the system. See "createAccount" method of the Authentication Interface for parameter details and return type.


joinSession

public boolean joinSession(ProjectInfo project,
                           ParticipantInfo participant)

Invokes "joinSession" method of the SessionControl Interface to allow a participant to join a session of project in which he/she is a participant. See "joinSession" method of the SessionControl Interface for parameter details and return type.


leaveSession

public boolean leaveSession(ProjectInfo project,
                            ParticipantInfo participant)

Invokes "leaveSession" method of the SessionControl Interface to allow a participant to leave a session of project in which he/she is a participant. See "leaveSession" method of the SessionControl Interface for parameter details and return type.



requestTurn

public boolean requestTurn(ParticipantInfo participant)

Invokes "requestTurn" method of the SessionControl Interface to allow a participant to request dialog control during a session. See "requestTurn" method of the SessionControl Interface for parameter details and return type.


releaseTurn

public boolean releaseTurn(ParticipantInfo participant)

Invokes "releaseTurn" method of the SessionControl Interface to allow a participant to release dialog control during a session. See "releaseTurn" method of the SessionControl Interface for parameter details and return type.


acquireEditControl

public boolean acquireEditControl(ParticipantInfo participant)

Invokes "acquireEditControl" method of the SessionControl Interface to allow a participant to acquire edit control during a session. See "acquireEditControl" method of the SessionControl Interface for parameter details and return type.


releaseEditControl

public boolean releaseEditControl(ParticipantInfo participant)

Invokes "releaseEditControl" method of the SessionControl Interface to allow a participant to release edit control during a session. See "releaseEditControl" method of the SessionControl Interface for parameter details and return type.


moveToFrontOfQueue

public boolean moveToFrontOfQueue(ChairInfo chair)

Invokes "moveToFrontOfQueue" method of the SessionControl Interface to allow a chair of a project to move to the head of the dialog queue at any time during a session. See "moveToFrontOfQueue" method of the SessionControl Interface for parameter details and return type.


gainDialogueControl

public boolean gainDialogueControl(ChairInfo chair)

Invokes "gainDialogueControl" method of the SessionControl Interface to allow a chair of a project to forcefully take control of the dialog during a session. See "gainDialogueControl" method of the SessionControl Interface for parameter details and return type.



sendDialog

public boolean sendDialog(java.lang.String msg)

Invokes "sendDialog" method of the SessionControl Interface to allow a participant with dialog control to send messages to other participants in the session. See "sendDialog" method of the SessionControl Interface for parameter details and return type.


loadDocument

public boolean loadDocument()

Invokes "loadDocument" method of the SessionControl Interface to allow a participant with edit control to edit a document during a session. See "loadDocument" method of the SessionControl Interface for parameter details and return type.


saveDocument

public boolean saveDocument()

Invokes "saveDocument" method of the Document Interface to allow a participant with edit control to save a document during a session. See "saveDocument" method of the SessionControl Interface for parameter details and return type.


createNewProject

public ProjectInfo createNewProject(ParticipantInfo participant,
                                    java.lang.String projectName)

Invokes "createNewProject" method of the Document Interface to allow a participant to create a new project. See "createNewProject" method of the ProjectControl Interface for parameter details and return type.


deleteProject

public boolean deleteProject(java.lang.String projectName,
                             ChairInfo chair)

Invokes "deleteProject" method of the ProjectControl Interface to allow a chair to delete a project. See "deleteProject" method of the ProjectControl Interface for parameter details and return type.


activateProject

public boolean activateProject(java.lang.String projectName,
                               ChairInfo chair)

Invokes "activateProject" method of the ProjectControl Interface to allow a chair to activate a project. See "activateProject" method of the ProjectControl Interface for parameter details and return type.


deactivateProject

public boolean deactivateProject(ProjectInfo project,
                                 ChairInfo chair)

Invokes "deactivateProject" method of the ProjectControl Interface to allow a chair to deactivate a project. See "deactivateProject" method of the ProjectControl Interface for parameter details and return type.


addParticipantToProject

public boolean addParticipantToProject(ProjectInfo project,
                                       java.lang.String userName,
                                       ChairInfo chair)

Invokes "addParticipantToProject" method of the ProjectControl Interface to allow a chair to add a participant to a project. See "addParticipantToProject" method of the ProjectControl Interface for parameter details and return type.


deleteParticipantFromProject

public boolean deleteParticipantFromProject(ProjectInfo project,
                                            java.lang.String userName,
                                            ChairInfo chair)

Invokes "deleteParticipantFromProject" method of the ProjectControl Interface to allow a chair to delete a participant from a project. See "deleteParticipantFromProject" method of the ProjectControl Interface for parameter details and return type.


addDocument

public boolean addDocument(Document doc)

Invokes "addDocument" method of the ProjectControl Interface to allow a participant to add a document to a project. See "addDocument" method of the ProjectControl Interface for parameter details and return type.


deleteDocument

public boolean deleteDocument(Document doc,
                               ChairInfo chair)

Invokes "deleteDocument" method of the ProjectControl Interface to allow a participant to delete a document from a project. See "deleteDocument" method in ProjectControl Interface for parameter details and return type.


 


2.9     Interface Document Control


public interface DocumentControl

The document control component provides facilities to handle documents


Method Summary

 boolean

loadDocument()
          Loads the document.

 boolean

saveDocument()
          Saves the document.

 

Method Detail

loadDocument

public boolean loadDocument()

Loads the document.

Returns:

true if loading is successful; false otherwise.


saveDocument

public boolean saveDocument()

Saves the document.

Returns:

true if saving is successful; false otherwise.


2.10   Interface Client GUI


public interface ClientGUI

Purpose:

This is the external interface presented by the GUI module which resides on the client side. The Application Logic Stub will invoke these methods to drive the GUI, update the required information, and convey it to the user.

Imports:

            Application Logic Stub


Field Summary

static int

ACTIVATE_PROJECT
          Identification constant for referring to the Activate Project button.

static int

ADD_DOCUMENT
          Identification constant for referring to the Add Document button.

static int

DELETE_DOCUMENT
          Identification constant for referring to the Delete Document button.

static int

DELETE_PROJECT
          Identification constant for referring to the Delete Project button.

static int

DISCUSSION
          Identification constant for referring to the Discussion view of the collaborative tool GUI.

static int

DOCUMENTS
          Identification constant for referring to the Documents view of the collaborative tool GUI.

static int

EDIT_DOCUMENT
          Identification constant for referring to the Edit Document button.

static int

EDIT_PARTICIPANT_LIST
          Identification constant for referring to the Edit Participant List button.

static int

END_DISCUSSION
          Identification constant for referring to the End Discussion button.

static int

GAIN_DIALOG_CONTROL
          Identification constant for referring to the Gain Dialog Control button.

static int

INACTIVATE_PROJECT
          Identification constant for referring to the Inactivate Project button.

static int

LOG_OFF
          Identification constant for referring to the Log Off button.

static int

MOVE_TO_QUEUE_FRONT
          Identification constant for referring to the Move to Front of Queue button.

static int

PROJECT
          Identification constant for referring to the Project view of the collaborative tool GUI.

static int

REFRESH_PROJECT_TREE
          Identification constant for referring to the Refresh Project Tree button.

static int

RELEASE_TURN
          Identification constant for referring to the Release Turn button.

static int

REQUEST_TURN
          Identification constant for referring to the Request Turn button.

static int

SEND_MESSAGE
          Identification constant for referring to the Send Message button.

static int

TRANSCRIPTS
          Identification constant for referring to the Transcripts view of the collaborative tool GUI.

 

Method Summary

 void

addNotificationMessage(java.lang.String message)
          Appends the specified String to the notification message display panel.

 void

displayErrorDialog(java.lang.String errorMessage)
          Creates a pop-up dialog in the collaborative tool to display an error message.

 void

postMessage(java.lang.String userName, java.lang.String message)
          Posts a new message on the message display panel under the Discussion view.

 void

setActiveDocument(java.lang.String documentName)
          Highlights the specified document name in the list to reflect that it is the active document.

 void

setButtonEnabled(int buttonID, boolean isEnabled)
          Sets the state of the specified button to enabled or disabled.

 void

setStatusBarMessage(java.lang.String message)
          Sets the message to be displayed on the status bar of the GUI.

 void

setUserOnline(java.lang.String userName, boolean isOnline)
          Sets the online status of the specified user and update the colour of his name displayed on the project tree panel.

 void

setViewVisible(int viewID)
          Sets the specified tabbed pane view of the collaborative tool GUI to visible.

 void

updateDocumentPanel(Document activeDocument)
          Updates the document display panel with the content of the specified document.

 void

updateDocumentsListing(java.lang.String[] documentNames)
          Updates the list of document names displayed in the Discussion view.

 void

updateDocumentTable(Document[] projectDocuments)
          Updates the document description panel presented in the Documents view for displaying the details of each project document.

 void

updateProjectStatusPanel(ProjectInfo project)
          Updates the project status information presented on the Project view.

 void

updateProjectTree(ProjectInfo[] projects)
          Refreshes the project tree display panel with updated selections.

 void

updateRequestTurnQueue(java.lang.String[] userNames)
          Updates the user names on the Request Turn Queue display panel under the Discussion view.

 

Field Detail

PROJECT

public static final int PROJECT

Identification constant for referring to the Project view of the collaborative tool GUI.


DOCUMENTS

public static final int DOCUMENTS

Identification constant for referring to the Documents view of the collaborative tool GUI.


TRANSCRIPTS

public static final int TRANSCRIPTS

Identification constant for referring to the Transcripts view of the collaborative tool GUI.


DISCUSSION

public static final int DISCUSSION

Identification constant for referring to the Discussion view of the collaborative tool GUI.


ACTIVATE_PROJECT

public static final int ACTIVATE_PROJECT

Identification constant for referring to the Activate Project button.


INACTIVATE_PROJECT

public static final int INACTIVATE_PROJECT

Identification constant for referring to the Inactivate Project button.


DELETE_PROJECT

public static final int DELETE_PROJECT

Identification constant for referring to the Delete Project button.


EDIT_PARTICIPANT_LIST

public static final int EDIT_PARTICIPANT_LIST

Identification constant for referring to the Edit Participant List button.


ADD_DOCUMENT

public static final int ADD_DOCUMENT

Identification constant for referring to the Add Document button.


LOG_OFF

public static final int LOG_OFF

Identification constant for referring to the Log Off button.


EDIT_DOCUMENT

public static final int EDIT_DOCUMENT

Identification constant for referring to the Edit Document button.


DELETE_DOCUMENT

public static final int DELETE_DOCUMENT

Identification constant for referring to the Delete Document button.


REQUEST_TURN

public static final int REQUEST_TURN

Identification constant for referring to the Request Turn button.


MOVE_TO_QUEUE_FRONT

public static final int MOVE_TO_QUEUE_FRONT

Identification constant for referring to the Move to Front of Queue button.


GAIN_DIALOG_CONTROL

public static final int GAIN_DIALOG_CONTROL

Identification constant for referring to the Gain Dialog Control button.


RELEASE_TURN

public static final int RELEASE_TURN

Identification constant for referring to the Release Turn button.


END_DISCUSSION

public static final int END_DISCUSSION

Identification constant for referring to the End Discussion button.


SEND_MESSAGE

public static final int SEND_MESSAGE

Identification constant for referring to the Send Message button.


REFRESH_PROJECT_TREE

public static final int REFRESH_PROJECT_TREE

Identification constant for referring to the Refresh Project Tree button.

 

Method Detail

setViewVisible

public void setViewVisible(int viewID)

Sets the specified tabbed pane view of the collaborative tool GUI to visible. This accomplishes the same effect as if the user has performed a mouse click on it.

Parameters:

viewID - one of the defined constants for referring to a view of the collaborative tool GUI.

Throws:

java.lang.IllegalArgumentException - if viewID is invalid.


setButtonEnabled

public void setButtonEnabled(int buttonID,
                             boolean isEnabled)

Sets the state of the specified button to enabled or disabled.

Parameters:

buttonID - one of the defined constants for referring to a button of the collaborative tool GUI.

isEnabled - true to enable the specified button, false to disable it.

Throws:

java.lang.IllegalArgumentException - if buttonID is invalid.


setStatusBarMessage

public void setStatusBarMessage(java.lang.String message)

Sets the message to be displayed on the status bar of the GUI.

Parameters:

message - a message to be displayed.


displayErrorDialog

public void displayErrorDialog(java.lang.String errorMessage)

Creates a pop-up dialog in the collaborative tool to display an error message.

Parameters:

errorMessage - an error message to be displayed.


addNotificationMessage

public void addNotificationMessage(java.lang.String message)

Appends the specified String to the notification message display panel.

Parameters:

message - a notification message to be displayed.


updateProjectStatusPanel

public void updateProjectStatusPanel(ProjectInfo project)

Updates the project status information presented on the Project view.

Parameters:

project - the info object for the currently active project.


postMessage

public void postMessage(java.lang.String userName,
                        java.lang.String message)

Posts a new message on the message display panel under the Discussion view.

Parameters:

userName - the name of the user who posted the message.

message - the message content represented by a String.

Throws:

java.lang.IllegalArgumentException - if userName or message is null.


updateRequestTurnQueue

public void updateRequestTurnQueue(java.lang.String[] userNames)

Updates the user names on the Request Turn Queue display panel under the Discussion view. Overwrites the previous queue displayed.

Parameters:

userNames - an array of user names.


updateDocumentsListing

public void updateDocumentsListing(java.lang.String[] documentNames)

Updates the list of document names displayed in the Discussion view. Overwrite the previous list displayed.

Parameters:

documentNames - an array of document names for document which has been added to the current project.


setActiveDocument

public void setActiveDocument(java.lang.String documentName)

Highlights the specified document name in the list to reflect that it is the active document.

Parameters:

documentName - the name of the active document.

Throws:

java.lang.IllegalArgumentException - if documentName is not in the current document list.


updateDocumentTable

public void updateDocumentTable(Document[] projectDocuments)

Updates the document description panel presented in the Documents view for displaying the details of each project document.

Parameters:

projectDocuments - an array of Document info objects specifying the document details.


updateProjectTree

public void updateProjectTree(ProjectInfo[] projects)

Refreshes the project tree display panel with updated selections.

Parameters:

projects - an array of projects applicable for the current user.


setUserOnline

public void setUserOnline(java.lang.String userName,
                          boolean isOnline)

Sets the online status of the specified user and update the colour of his name displayed on the project tree panel.

Parameters:

userName - the user whose status is to be set to online/offline.

isOnline - true for setting the user status to online, false otherwise.

Throws:

java.lang.IllegalArgumentException - if userName does not correspond to one of the project participants.


updateDocumentPanel

public void updateDocumentPanel(Document activeDocument)

Updates the document display panel with the content of the specified document.

Parameters:

activeDocument - the currently active document being edited.

Throws:

java.lang.IllegalStateException - if no document is currently active.


 

 


3.0     User Interface

 

Figure 2 : User Authentication Window

 

Window: userAuthenticationWindow

Description:

Main login screen

Item:

Action:

Field: LoginName

Enter username

Field: Password

Enter password

Button: Cancel

Close Window: userAuthenticationWindow

Button: OK

Submit Field: username and Field: password

Link: New User?

Open Window: newAccountForm

Link:Forgot Password?

Open Window: sendPasswordtoUserWindow

 

Figure 3 New Account Form

 

Window: newAccountForm

Description:

Account creation registration form

Item:

Action:

Field: LoginName

Enter username

Field: Password            

Enter password

Field:confirmPassword  

Enter confirmed password

Field:email                     

Enter email address

Field:name                    

Enter real name

Field:position                 

Enter position in the organization

Field:department           

Enter department in the organization

Button: Cancel

Close Window: newAccountForm

Button: OK

Submit all fields

 

Figure 4 Project View


 

Window: projectView

Description:

Window displaying project status and details

Item:

Action:

Tree: allProjects

A list of all the projects under the node “Projects”

Node: project                

A node that encapsulates the documents and participants of a project

Node: documents           

A node that encapsulates the user documents of a project

Node: transcripts           

A node that encapsulates the transcripts of a project

Node: users                   

A node that encapsulates the participants of a project

Button:NewProject       

Open Window: newProjectForm

Button:Refresh              

Refreshes Tree: allProjects

Button: ActivateProject

Activates selected project – available only for inactive projects

Button:InactivateProject

Inactivate selected project - available only for active projects

Button: DeleteProject

Removes selected project

Button:EditParticipantList

Open Window: editParticipantList

Button: AddDocument

Open Window: addDocumentForm

Button:Logoff

Log out of the system.

 

Figure 5