HeaderSIS.jpg

Difference between revisions of "IS480 Team wiki: 2014T1 Res Novae Diagrams"

From IS480
Jump to navigation Jump to search
 
(28 intermediate revisions by 3 users not shown)
Line 144: Line 144:
  
 
== Class Diagram ==
 
== Class Diagram ==
Our application applies Java model 2, which is associated with MVC(model-view-controller) paradigm. Requests from client side are passed to the controllers which conduct the logic needed to obtain content to display. It then decides which view to pass the request to.  The view then renders the content passed by the controller.
+
Our application applied Java model 2, which is associated with MVC(model-view-controller) paradigm, into our design. Requests from client side are passed to the controllers which conduct the logic needed to obtain content to display. It then decides which view to pass the request to.  The view then renders the content passed by the controller.
 
 
 
<br/>
 
<br/>
 
[[File:ResNovae_JSP_Model_2.png|frameless|center|1000px]]<br/>
 
[[File:ResNovae_JSP_Model_2.png|frameless|center|1000px]]<br/>
In our application, first request from client side is passed to the LoginController. LoginController will go through back end logic to transfer query to LoginServlet, which will pull in user manager class to go to individual users.  
+
Class diagram is important for large and complex systems and it also plays a useful role in the development of smaller systems. The use of class diagram helped us to clarify ideas in the initial design stages of an object oriented system when analyzing the requirements and deciding on the fundamental classes and how they will relate to each other.
<br/>
+
 
 +
The class diagram shown below illustrates CAMAN's design, methods and relations clearly, an essential since our system is fairly big. As illustrated, DBConnect class is the heart of our system from which the methods are retrieved in Servlets. Using the MVC framework, our system is very simply designed. Servlets will receive the value from the client side and use related methods in DBConnect to fulfill the users’ requests.
 +
[[File:FinalClassDiagram.jpg|frameless|center|1000px]]
  
[[File:ResNovae-ClassDiagram.jpg|frameless|center|1000px]]
+
For a segmented view of our class diagram, please refer to the picture gallery below: <br>
 +
<gallery>
 +
File:RNServlet.jpg|Servlet
 +
File:RNJavaClass.jpg|Java Classes
 +
File:RNDBConnect.jpg|DBConnect
 +
</gallery>
  
 
== Use Case Diagram ==
 
== Use Case Diagram ==
 
As an administrator, management or a specialist, he/she can perform the functions below:
 
As an administrator, management or a specialist, he/she can perform the functions below:
{| class="wikitable" style="text-align:center; width:100%; height:100px;"
+
{| class="wikitable" style="text-align:center; width:100%; height:100%;"
 
! scope="col" | Function group
 
! scope="col" | Function group
 
! scope="col" | User related
 
! scope="col" | User related
 
! scope="col" | Worker Related
 
! scope="col" | Worker Related
 +
! scope="col" | Job Related
 
! scope="col" | Problem related
 
! scope="col" | Problem related
 
! scope="col" | Access rights
 
! scope="col" | Access rights
Line 164: Line 171:
 
! scope="col" | Miscellaneous
 
! scope="col" | Miscellaneous
  
|- style ="background-color:white; text-align:center"
+
|- style ="background-color:white; text-align:left"
 
!Administrator Specific functions
 
!Administrator Specific functions
 +
 
|style ="background-color:white; text-align:left"|<ul>
 
|style ="background-color:white; text-align:left"|<ul>
 
<li>Create user</li>
 
<li>Create user</li>
Line 171: Line 179:
 
<li>Update user</li>
 
<li>Update user</li>
 
</ul>
 
</ul>
 +
 
|style ="background-color:white; text-align:left"|<ul>
 
|style ="background-color:white; text-align:left"|<ul>
 
<li>Create worker</li>
 
<li>Create worker</li>
 
<li>Read worker</li>
 
<li>Read worker</li>
 
<li>Update worker</li>
 
<li>Update worker</li>
 +
</ul>
 +
 +
|style ="background-color:white; text-align:left"|<ul>
 +
<li>Create job</li>
 +
<li>Read job </li>
 +
<li>Update job</li>
 
</ul>
 
</ul>
  
Line 191: Line 206:
 
|style ="background-color:white; text-align:left"|<ul>
 
|style ="background-color:white; text-align:left"|<ul>
 
<li>Create file attachment</li>
 
<li>Create file attachment</li>
<li>Import file attachment</li>
+
<li>Read file attachment</li>
<li>Update file attachment</li>
+
<li>Export file attachment</li>
 +
<li>Rename file attachment</li>
 
</ul>
 
</ul>
  
|style ="background-color:white; text-align:left"|<ul>
+
|style ="background-color:white; text-align:left"|
&nbsp;Smith or 400&nbsp;
+
<br/>
<li>Search</li>
+
<ul>
 +
<li>Search Worker</li>
 
<li>Revoke user</li>
 
<li>Revoke user</li>
 
<li>View gallery</li>
 
<li>View gallery</li>
Line 207: Line 224:
 
|style ="background-color:white; text-align:left"|<ul>
 
|style ="background-color:white; text-align:left"|<ul>
 
<li>Read user</li>
 
<li>Read user</li>
<li>Update user</li>
+
<li>Update own user</li>
 
</ul>
 
</ul>
  
Line 214: Line 231:
 
<li>Read worker</li>
 
<li>Read worker</li>
 
<li>Update worker</li>
 
<li>Update worker</li>
 +
</ul>
 +
 +
|style ="background-color:white; text-align:left"|<ul>
 +
<li>Create job</li>
 +
<li>Read job </li>
 +
<li>Update job</li>
 
</ul>
 
</ul>
  
Line 230: Line 253:
 
<li>Create file attachment</li>
 
<li>Create file attachment</li>
 
<li>Read file attachment</li>
 
<li>Read file attachment</li>
<li>Update file attachment</li>
+
<li>Export file attachment</li>
 +
<li>Rename file attachment</li>
 
</ul>
 
</ul>
  
Line 242: Line 266:
 
|style ="background-color:white; text-align:left"|<ul>
 
|style ="background-color:white; text-align:left"|<ul>
 
<li>Read user</li>
 
<li>Read user</li>
<li>Update user</li>
+
<li>Update own user</li>
 
</ul>
 
</ul>
 +
 
|style ="background-color:white; text-align:left"|<ul>
 
|style ="background-color:white; text-align:left"|<ul>
 
<li>Create worker</li>
 
<li>Create worker</li>
 
<li>Read worker</li>
 
<li>Read worker</li>
 
<li>Update worker</li>
 
<li>Update worker</li>
 +
</ul>
 +
 +
|style ="background-color:white; text-align:left"|<ul>
 +
<li>Create job</li>
 +
<li>Read job </li>
 +
<li>Update job</li>
 
</ul>
 
</ul>
  
Line 263: Line 294:
 
<li>Create file attachment</li>
 
<li>Create file attachment</li>
 
<li>Read file attachment</li>
 
<li>Read file attachment</li>
<li>Update file attachment</li>
+
<li>Export file attachment</li>
 +
<li>Rename file attachment</li>
 
</ul>
 
</ul>
  
Line 277: Line 309:
 
! scope="col" | User related
 
! scope="col" | User related
 
! scope="col" | Worker Related
 
! scope="col" | Worker Related
 +
! scope="col" | Job related
 
! scope="col" | Problem related
 
! scope="col" | Problem related
! scope="col" | Job related
 
 
! scope="col" | Miscellaneous
 
! scope="col" | Miscellaneous
 
|- style ="background-color:white; text-align:center"
 
|- style ="background-color:white; text-align:center"
!Specific functions
+
!Associate Specific functions
 +
 
 
|style ="background-color:white; text-align:left"|<ul>
 
|style ="background-color:white; text-align:left"|<ul>
 
<li>Read user</li>
 
<li>Read user</li>
<li>Update user</li>
+
<li>Update own user</li>
 
</ul>
 
</ul>
 +
 
|style ="background-color:white; text-align:left"|<ul>
 
|style ="background-color:white; text-align:left"|<ul>
 
<li>Create worker</li>
 
<li>Create worker</li>
 
<li>Read worker</li>
 
<li>Read worker</li>
<li>Update worker</li>
 
 
</ul>
 
</ul>
  
 
|style ="background-color:white; text-align:left"|<ul>
 
|style ="background-color:white; text-align:left"|<ul>
 +
<li>Create job</li>
 +
<li>Read Job</li>
 +
 +
|style ="background-color:white; text-align:left"|
 +
<br>
 +
<ul>
 
<li>Create problem</li>
 
<li>Create problem</li>
 
<li>Read problem</li>
 
<li>Read problem</li>
<li>Update problem</li>
 
 
</ul>
 
</ul>
  
|style ="background-color:white; text-align:left"|<ul>
+
 
<li>Read job</li>
+
 
<li>Create job</li>
 
<li>Edit job</li>
 
 
</ul>
 
</ul>
  
 
|style ="background-color:white; text-align:left"|<ul>
 
|style ="background-color:white; text-align:left"|<ul>
<li>Search</li>
+
<li>Search Worker</li>
 
<li>View gallery</li>
 
<li>View gallery</li>
 
</ul>
 
</ul>
 
|}
 
|}
 
====Administrator====
 
====Administrator====
[[File:Administrator Midterm.png|500px|frameless|center]]
+
[[File:CAMANS Administrator.jpg|500px|frameless|center]]
  
 
====Management====
 
====Management====
[[File:ResNovae Management.jpg|500px|frameless|center]]
+
[[File:CAMANS Manager.jpg|500px|frameless|center]]
  
 
====Specialist====
 
====Specialist====
[[File:ResNovae Specialist.jpg|500px|frameless|center]]
+
[[File:CAMANS Specialist.jpg|500px|frameless|center]]
  
 
====Associate====
 
====Associate====
[[File:ResNovae AssociateEdit.png|350px|frameless|center]]
+
[[File:CAMANS_Associate.jpg|350px|frameless|center]]
  
 
== System Architecture Diagram ==
 
== System Architecture Diagram ==
 
Users access CAMANS through their smart devices (mobile phone, computer, or tablet) which utilizes HTTPS protocol to make a connection to the server via the internet. The HTTPS connection goes through the firewall, which acts as a safe-guard against certain port intrusion, to the Apache Tomcat Server. Once activated, the Apache Tomcat Server would proceed to process JSPs while sending SQL requests to mySQL (Server) and storage/ retrieval requests to the Linux file system.
 
Users access CAMANS through their smart devices (mobile phone, computer, or tablet) which utilizes HTTPS protocol to make a connection to the server via the internet. The HTTPS connection goes through the firewall, which acts as a safe-guard against certain port intrusion, to the Apache Tomcat Server. Once activated, the Apache Tomcat Server would proceed to process JSPs while sending SQL requests to mySQL (Server) and storage/ retrieval requests to the Linux file system.
 
[[File:Final system architecture diagram.jpg|frameless|center|800px]]
 
[[File:Final system architecture diagram.jpg|frameless|center|800px]]
 +
 +
== Test cases ==
 +
Rather than conduct "blind" testing, the team created a series of test cases which our testers used to test CAMANS. The test cases, separated by the roles ("Administrator", "Specialist" and "Associate"), are as follows:<br>
 +
 +
'''Administrator'''
 +
<gallery>
 +
File:CAMANS-TC-ALL-001_Log_In_Log_Out_Module.xlsx|Admin-001-Log in
 +
File:CAMANS-TC-ADMIN-002_Edit_Own_Profile_Module.xlsx|Admin-002-Edit own profile
 +
File:CAMANS-TC-ADMIN-003_Create_User_Module.xlsx ‎|Admin-003-Create user
 +
File:CAMANS-TC-ADMIN-004_Edit_Other_User_Module.xlsx|Admin-004-Edit other user
 +
</gallery>
 +
'''Specialist'''
 +
<gallery>
 +
File:CAMANS-TC-SPECIALIST-002_Edit_Own_Profile_Module.xlsx|Specialist-002-Edit own profile
 +
File:CAMANS-TC-SPECIALIST-004_View_Other_Users_Module.xlsx|Specialist-004-View other users
 +
File:CAMANS-TC-SPECIALIST-006_Search_Worker_Module.xlsx ‎|Specialist-006-Search worker
 +
File:CAMANS-TC-SPECIALIST-007_Create_New_Worker_Module.xlsx|Specialist-007-Create new worker
 +
File:CAMANS-TC-SPECIALIST-008_View_and_Edit_Worker_full_profile_Module.xlsx|Specialist-008-View and edit worker full profile
 +
File:CAMANS-TC-SPECIALIST-009_View_and_Add_Worker_Compliment_Module.xlsx|Specialist-009-View and add worker compliment
 +
File:CAMANS-TC-SPECIALIST-010_View_and_Edit_Job_Profile_Module.xlsx|Specialist-010-View and edit job profile
 +
File:CAMANS-TC-SPECIALIST-011_Add_New_Job_Module.xlsx|Specialist-011-Add new job
 +
File:CAMANS-TC-SPECIALIST-012_View_and_Add_Job_Complement_Module.xlsx|Specialist-012-View and add job complement
 +
File:CAMANS-TC-SPECIALIST-013_View_and_Edit_Problem_Profile_Module.xlsx|Specialist-013-View and edit problem
 +
File:CAMANS-TC-SPECIALIST-014_Add_New_Problem_Module.xlsx|Specialist-014-Add new problem
 +
File:CAMANS-TC-SPECIALIST-015_View_and_Add_Problem_Complement_Module.xlsx|Specialist-015-View and add problem complement
 +
File:CAMANS-TC-SPECIALIST-016_Upload_and_Download_Attachment_Module.xlsx|Specialist-016-Upload and download attachment
 +
</gallery>
 +
'''Associate'''
 +
<gallery>
 +
File:CAMANS-TC-ASSOCIATE-002_Edit_Own_Profile_Module.xlsx|Associate-002-Edit own profile
 +
File:CAMANS-TC-ASSOCIATE-004_View_Other_Users_Module.xlsx|Associate-004-View other users
 +
File:CAMANS-TC-ASSOCIATE-005_Create_New_Worker_Module_.xlsx|Associate-005-Create new worker
 +
File:CAMANS-TC-ASSOCIATE-006_View_and_Edit_Worker_Profile_Module.xlsx|Associate-006-View and edit worker
 +
File:CAMANS-TC-ASSOCIATE-007_Add_Job_Profile_Module.xlsx|Associate-007-Add job profile
 +
File:CAMANS-TC-ASSOCIATE-008_Add_Problem_Profile_Module.xlsx|Associate-008-Add problem profile
 +
File:CAMANS-TC-ASSOCIATE-009_View_Problem_Profile_Profile_Module.xlsx|Associate-009-View problem profile
 +
File:CAMANS-TC-ASSOCIATE-010_Issue_benefaction_Module.xlsx|Associate-010-Issue benefaction
 +
File:CAMANS-TC-ASSOCIATE-011_View_and_update_Module.xlsx|Associate-011-View and update
 +
File:CAMANS-TC-ASSOCIATE-012_change_job_and_problem_Module.xlsx|Associate-012-change job and problem
 +
</gallery>
  
 
== Technical Difficulties & Solutions ==
 
== Technical Difficulties & Solutions ==
Line 390: Line 466:
 
Using an extensive "if-else" loop, we have created a servlet which would take in all the values keyed in by the user and systematically construct a SQL query which would be passed through the database. An example of such "combined" query is as follows:
 
Using an extensive "if-else" loop, we have created a servlet which would take in all the values keyed in by the user and systematically construct a SQL query which would be passed through the database. An example of such "combined" query is as follows:
 
[[File:SQL example.JPG|frameless|650px]]
 
[[File:SQL example.JPG|frameless|650px]]
 +
 +
==== Attachments ====
 +
<b>Problem: </b> <br>
 +
Allowing the client to upload/edit all types of attachments into the File System without getting an error
 +
 +
<b>Solution: </b> <br>
 +
Although the required technology and code for attachment is not uniquely complex, we coded in such a way to be user-friendly and flexible in terms of usability. We allowed users to upload all types of files, even videos to the server, allow them to upload the multiple files with same file names, and allow them to edit the uploaded file name. The most uniqueness is that we leveraged the Linux-based file systems to avoid storing the huge files in the database that would maintain the speed of database query. Whenever the new worker is created, our application will create the new folder for this created worker in the Linux file system so that if a user uploads the files for this worker in the future, the actual file will be stored inside the folder created in Linux system instead of storing in the database.
 +
 +
In addition, we have configured CAMANS to only change the file name in the event the User wishes to edit file names. To prevent accidental, and potentially problematic, changes in file types, CAMANS would append the file type automatically to the edited file name for storage in the linux file system.
 +
 +
==== Form input data ====
 +
<b>Problem: </b> <br>
 +
Certain special characters would cause CAMANS to malfunction and not save input properly
 +
 +
<b>Solution </b><br>
 +
After testing and research into mySQL limitations, we realized that there are certain characters which were programmed to serve special functions in mySQL. As such, we utilized Parsley.js validation and set the '''pattern="^[A-Za-z0-9 .,!?/:;^%$&\(\)+=\-_@\{\}\<\>\[\]|*#]+$"''' for the text fields to prevent the user from entering these certain characters. In the event the User accidentally keyed in such values, a warning would be displayed requesting the User to change his/her values. In addition to the front end validation, we have configured the backend to handle such exceptions by implementing another round of validation.

Latest revision as of 23:01, 28 November 2014

ResNovaeLogo.png


Aboutus.png Stakeholders & Team Glyphicons 050 link.png Technologies & Resources Glyphicons social 00 pinterest.png Project Description Glyphicons 039 notes.png Project Scope
Glyphicons 001 leaf.png Project Framework Calendaricon.png Our Schedule Glyphicons 040 stats.png Project Metrics Glyphicons 041 charts.png Project Deliverables
Glyphicons social 36 last fm.png Project Diagrams & Technical Aspects Glyphicons social 41 myspace.png User Interface Glyphicons 336 iphone shake.png User Review Glyphicons 463 server.png Our Minutes


Business Process Diagram

The basic business process flow of users using CAMANS are as follows:

Associate

Associate biz process.jpg

Associates are tasked with the responsibilities of issuing specific beneficiaries (EZ-link cards, Cash transport, Meal cards etc.) to the needy foreign workers. As such, their business flow starts with the users keying in the foreign worker's FIN or identification number. In the event there is no match (i.e. first time user), the user will proceed to create a new case for the foreign worker. Should there be a case linked to the foreign worker, the user can then proceed to issue the beneficiaries as requested. The process ends when the foreign worker is cleared and the user proceeds to assist another foreign worker.

Specialist

Specialist biz process.jpg

Specialists are tasked with the intricate tasks of helping foreign workers who do not fall into any specific beneficiary (i.e. multiple/ sensitive or difficult cases). These users will access the full spectrum of job and worker compliments which CAMANS has to offer. Their business flow starts with the user keying in the foreign worker's FIN or identification number. In the event there is no match, the user will proceed to create a new case for the foreign worker. In the even there is a case linked to the foreign worker, the user can then view/edit or add information in the compliments which is required. The process ends when the foreign worker is cleared and the user proceeds to assist another foreign worker.

EER Diagram

Heeding the feedback given to the team during the mid-term presentations, we have reduced the database tables from 84 to 51. They are divided into 6 categories - namely user, worker, job, problem, attachment and drop downs.

For a high level view of the database, please refer to the following links:
[Midterm]
[Final]


CAMANS's database structure - By Categories


Primary Table name Primary key Foreign key Other tables associated to this table
tbl_user NRIC_No
  • tbl_worker_attachment
tbl_worker FIN_Number
  • tbl_worker_nickname
  • tbl_worker_passport_details
  • tbl_worker_facepic
  • tbl_home_country_phone_number
  • tbl_sg_phone_number
  • tbl_sg_address
  • tbl_home_country_address
  • tbl_digital_contact
  • tbl_kin
  • tbl_family_member
  • tbl_sg_friend
  • tbl_sg_address
  • tbl_language
  • tbl_bank_acc_details
  • tbl_worker_attachment
tbl_job Job_Id FIN_Number
  • tbl_pass_details
  • tbl_ipa_details
  • tbl_verbal_assurances
  • tbl_employment_contract
  • tbl_agent
  • tbl_employer
  • tbl_workplace
  • tbl_work_history
  • tbl_accomodation
tbl_problem Problem_Id FIN_Number, Job_Id
  • tbl_aggravating_issue
  • tbl_lead_case_worker
  • tbl_auxillary_case_worker
  • tbl_salary_history
  • tbl_injury
  • tbl_illness
  • tbl_other_problems
  • tbl_trafficking_indicators
  • tbl_salary_claim_lodged
  • tbl_wica_claim
  • tbl_non_wica_claim
  • tbl_police_report
  • tbl_other_complaint
  • tbl_case_discussion
  • tbl_hospital
  • tbl_MC_status
  • tbl_R2R
  • tbl_wica
  • tbl_lawyer
  • tbl_casemilestone_noncriminal
  • tbl_casemilestone_criminal
  • tbl_ttr
  • tbl_benefaction
  • tbl_benefaction_mealcard
  • tbl_benefaction_farego
  • tbl_benefaction_karunya
tbl_dropdown dropdown_Id

User

Tbl user.PNG


Worker

Overview of Worker Details.PNG


Job

Overview Job Tables.PNG


Problem

Overview Problem Tables.PNG.png



Attachment

Tbl worker attachment.png


Dropdown

Tbl dropdown.png


Class Diagram

Our application applied Java model 2, which is associated with MVC(model-view-controller) paradigm, into our design. Requests from client side are passed to the controllers which conduct the logic needed to obtain content to display. It then decides which view to pass the request to. The view then renders the content passed by the controller.

ResNovae JSP Model 2.png


Class diagram is important for large and complex systems and it also plays a useful role in the development of smaller systems. The use of class diagram helped us to clarify ideas in the initial design stages of an object oriented system when analyzing the requirements and deciding on the fundamental classes and how they will relate to each other.

The class diagram shown below illustrates CAMAN's design, methods and relations clearly, an essential since our system is fairly big. As illustrated, DBConnect class is the heart of our system from which the methods are retrieved in Servlets. Using the MVC framework, our system is very simply designed. Servlets will receive the value from the client side and use related methods in DBConnect to fulfill the users’ requests.

FinalClassDiagram.jpg

For a segmented view of our class diagram, please refer to the picture gallery below:

Use Case Diagram

As an administrator, management or a specialist, he/she can perform the functions below:

Function group User related Worker Related Job Related Problem related Access rights Attachment related Miscellaneous
Administrator Specific functions
  • Create user
  • Read user
  • Update user
  • Create worker
  • Read worker
  • Update worker
  • Create job
  • Read job
  • Update job
  • Create problem
  • Read problem
  • Update problem
  • Access as manager
  • Access as specialist
  • Access as associate
  • Create file attachment
  • Read file attachment
  • Export file attachment
  • Rename file attachment


  • Search Worker
  • Revoke user
  • View gallery


Management Specific functions
  • Read user
  • Update own user
  • Create worker
  • Read worker
  • Update worker
  • Create job
  • Read job
  • Update job
  • Create problem
  • Read problem
  • Update problem
  • Access as specialist
  • Access as associate
  • Create file attachment
  • Read file attachment
  • Export file attachment
  • Rename file attachment
  • Search
  • View gallery
Specialist Specific functions
  • Read user
  • Update own user
  • Create worker
  • Read worker
  • Update worker
  • Create job
  • Read job
  • Update job
  • Create problem
  • Read problem
  • Update problem
  • Access as associate
  • Create file attachment
  • Read file attachment
  • Export file attachment
  • Rename file attachment
  • Search
  • View gallery


As an associate, he/she can perform the functions below:

Function group User related Worker Related Job related Problem related Miscellaneous
Associate Specific functions
  • Read user
  • Update own user
  • Create worker
  • Read worker
  • Create job
  • Read Job


  • Create problem
  • Read problem


  • Search Worker
  • View gallery

Administrator

CAMANS Administrator.jpg

Management

CAMANS Manager.jpg

Specialist

CAMANS Specialist.jpg

Associate

CAMANS Associate.jpg

System Architecture Diagram

Users access CAMANS through their smart devices (mobile phone, computer, or tablet) which utilizes HTTPS protocol to make a connection to the server via the internet. The HTTPS connection goes through the firewall, which acts as a safe-guard against certain port intrusion, to the Apache Tomcat Server. Once activated, the Apache Tomcat Server would proceed to process JSPs while sending SQL requests to mySQL (Server) and storage/ retrieval requests to the Linux file system.

Final system architecture diagram.jpg

Test cases

Rather than conduct "blind" testing, the team created a series of test cases which our testers used to test CAMANS. The test cases, separated by the roles ("Administrator", "Specialist" and "Associate"), are as follows:

Administrator

Specialist

Associate

Technical Difficulties & Solutions

Throughout the course of this FYP, Res Novae has faced numerous technical problems pertaining to Application coding, Server and Database. In a bid to help current and future FYP teams which might face similar issues, here are some of the more note worthy difficulties and solutions:

Database Inter-table linkage Issues

Problem:
CAMANS has a total of 84 tables which have different linkages within themselves. This results in several database search errors which plagued CAMANS very badly during the first few iterations. In addition, since CAMANS started development before the database can stabilize, correction works often proved to be tedious and extremely time consuming.

Solution:
A thorough understanding of the database you are trying to build is key to solving this issue. Although theoretically easy to implement, many database developers start to forget the linkages of their newly created tables after a period of time. In our case, we decided to investigate and identify the linkages between them. Creating special "keys" (table columns) which would tie the linked tables together, we managed to solve this issue. A abstract of our codes to create tables is as follows, take special notice of the created foreign key linkages (Job_key & Prob_key):

In addition, in the rare occurrence that there is a change in the values of the Primary keys which are linked to other tables, you can create your tables with the following code to allow auto updating of dependent tables:

Sql4.JPG

Linux Server (Ubuntu)

Problem:
Unfamiliar with Linux and much less with Ubuntu command line, the team had a difficult time understanding how applications that worked fine on localhost suddenly becomes inaccessible when uploaded on the Linux Server. This cause us to face multiple HTTP related errors which caused much delay in deveopment. This is especially so since CAMANS relies heavily on the Linux File System to store it's attachments (User uploaded files).

Solution:
There are four things which you must be sure of before embarking on such a project. The team has found the following online help useful, we hope you can benefit from it as much as we did:

File permissions:

Command Line (Terminal):

VI File editor (Command Line):

Linux file System:

Uncomplicatted Firewall:


Multiple criteria search

Problem:
Allowing the client to search with multiple criteria increases the usability of the system. However, it comes with the potential problems of having searches giving out erroneous results.

Solution:
Using an extensive "if-else" loop, we have created a servlet which would take in all the values keyed in by the user and systematically construct a SQL query which would be passed through the database. An example of such "combined" query is as follows: SQL example.JPG

Attachments

Problem:
Allowing the client to upload/edit all types of attachments into the File System without getting an error

Solution:
Although the required technology and code for attachment is not uniquely complex, we coded in such a way to be user-friendly and flexible in terms of usability. We allowed users to upload all types of files, even videos to the server, allow them to upload the multiple files with same file names, and allow them to edit the uploaded file name. The most uniqueness is that we leveraged the Linux-based file systems to avoid storing the huge files in the database that would maintain the speed of database query. Whenever the new worker is created, our application will create the new folder for this created worker in the Linux file system so that if a user uploads the files for this worker in the future, the actual file will be stored inside the folder created in Linux system instead of storing in the database.

In addition, we have configured CAMANS to only change the file name in the event the User wishes to edit file names. To prevent accidental, and potentially problematic, changes in file types, CAMANS would append the file type automatically to the edited file name for storage in the linux file system.

Form input data

Problem:
Certain special characters would cause CAMANS to malfunction and not save input properly

Solution
After testing and research into mySQL limitations, we realized that there are certain characters which were programmed to serve special functions in mySQL. As such, we utilized Parsley.js validation and set the pattern="^[A-Za-z0-9 .,!?/:;^%$&\(\)+=\-_@\{\}\<\>\[\]|*#]+$" for the text fields to prevent the user from entering these certain characters. In the event the User accidentally keyed in such values, a warning would be displayed requesting the User to change his/her values. In addition to the front end validation, we have configured the backend to handle such exceptions by implementing another round of validation.