System Development Techniques Individual Assignment

profileTubekbay001
ITTMS.zip

ITTMS/.DS_Store

__MACOSX/ITTMS/._.DS_Store

ITTMS/.classpath

ITTMS/.project

SDT org.eclipse.jdt.core.javabuilder org.eclipse.jdt.core.javanature

ITTMS/.settings/org.eclipse.jdt.core.prefs

eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=13 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=13 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning org.eclipse.jdt.core.compiler.release=enabled org.eclipse.jdt.core.compiler.source=13

ITTMS/src/ITTMS.java

ITTMS/src/ITTMS.java


import   Domain . * ;

public   class  ITTMS  {
    
     public   static   void  main ( String []  args )   {
         // TODO Auto-generated method stub
         new   Domain . ITTMS (). run ();
     }

}

ITTMS/src/General/Helper.java

ITTMS/src/General/Helper.java

package   General ;

import  java . util . InputMismatchException ;
import  java . util . Scanner ;

public   class   Helper   {

     public   static   void  printBlankLines ( int  n )   {
        
         for ( int  i = 0 ; i < n ; i ++ )   {
             System . out . println ();
         }    
     }
    
     public   static   String  getString ( String  message )   {
         Scanner  in  =   new   Scanner ( System . in );
         System . out . print ( message );
         String  input  =  in . nextLine ();
         return  input ;
     }
    
     public   static   int  getInt ( String  message )   {
         Scanner  in  =   new   Scanner ( System . in );
         int  input  =   0   ;
         try   {   // implement exception handling if user enter non integer value
             System . out . print ( message );
            input  =  in . nextInt ();
         }   catch   ( InputMismatchException  e )   {
             System . out . println ( "Please enter an integer !" );
            in  =   new   Scanner ( System . in );
         }
         return  input ;
     }
    
     public   static   int  getInt ( String  message , int  min ,   int  max )   {
         int  input = 0 ;
         while ( true )   {
            input  =  getInt ( message );
             if ( input < min  ||  input > max )   {
                 System . out . println ( "Input should be between " + min + " and " + max );
             } else   {
                 break ;
             }
         }
         return  input ;
     }
    
    

     public   static   int  getChoice ( int  max )   {
         Scanner  in  =   new   Scanner ( System . in );
         System . out . print ( "Please enter ( 1 - " + max + " ) > " );
         int  choice  =   0 ;
         while   ( true )   {
             try   {   // implement exception handling if user enter non integer value
                choice  =  in . nextInt ();
                 if ( ! ( choice <= 0   ||  choice > max ))   {
                     break ;
                 } else   {
                     throw   new   InputMismatchException ();
                 }
             }   catch   ( InputMismatchException  e )   {
                 System . out . println ( "Please enter an integer ( 1 - " + max + " ) !" );
                 System . out . print ( "Please enter again > " );
                in  =   new   Scanner ( System . in );
             }
         }
         return  choice ;
     }
}

ITTMS/src/DAO/AdministratorDAO.java

ITTMS/src/DAO/AdministratorDAO.java

package  DAO ;

import   Model . Administrator ;

public   class   AdministratorDAO   {

     public   Administrator  getAdministrator ()   {
         //fake admin
         Administrator  admin  =   new   Administrator ( "password" );
         return  admin ;
     }
}

ITTMS/src/DAO/SkillDAO.java

ITTMS/src/DAO/SkillDAO.java

package  DAO ;
import  java . util . * ;

import   Model . Skill ;

public   class   SkillDAO   {

     private   ArrayList < Skill >  skills ;
    
     public   SkillDAO ()   {
         //fake skills database data
        skills =   new   ArrayList < Skill > ();
         //public Skill(int skillID,String name, int  level) {
         Skill  skill1  =   new   Skill ( 1 , "Java 2 Enterprise Edition" , 1 );
         Skill  skill2  =   new   Skill ( 2 , "Java 2 Enterprise Edition" , 2 );
         Skill  skill3  =   new   Skill ( 3 , "C# .Net" , 1 );
         Skill  skill4  =   new   Skill ( 4 , "C# .Net" , 2 );
         Skill  skill5  =   new   Skill ( 5 , "Oracle database administration" , 1 );
         Skill  skill6  =   new   Skill ( 6 , "Oracle database administration" , 2 );
         Skill  skill7  =   new   Skill ( 7 , "MySQL database administration" , 1 );
         Skill  skill8  =   new   Skill ( 8 , "MySQL database administration" , 2 );
         Skill  skill9  =   new   Skill ( 9 , "Azure cloud administration" , 1 );
         Skill  skill10  =   new   Skill ( 10 , "Azure cloud administration" , 2 );
         Skill  skill11  =   new   Skill ( 11 , "AWS cloud administration" , 1 );
         Skill  skill12  =   new   Skill ( 12 , "AWS cloud administration" , 2 );
        
        skills . add ( skill1 );
        skills . add ( skill2 );
        skills . add ( skill3 );
        skills . add ( skill4 );
        skills . add ( skill5 );
        skills . add ( skill6 );
        skills . add ( skill7 );
        skills . add ( skill8 );
        skills . add ( skill9 );
        skills . add ( skill10 );
        skills . add ( skill11 );
        skills . add ( skill12 );
     }
    
     public   void  removeSkillByID ( int  id )   {
         Skill  skill  =  getSkillByID ( id );
        skills . remove ( skill );
     }
    
     public   void  addSkill ( String  name ,   int  level )   {
         int  nextSkillID  =  getNextSkillID ();
         Skill  newSkill  =   new   Skill ( nextSkillID , name , level );
        skills . add ( newSkill );
     }
    
     public   int  getNextSkillID ()   {
         int  id  =   0 ;
         for ( Skill  s  :  skills )   {
             if ( s . getSkillID () > id )   {
                id  =  s . getSkillID ();
             }
         }
         return  id + 1 ;
     }
    
    
     public   ArrayList < Skill >  getSkills ()   {
         return  skills ;
     }
    
     public   Skill  getSkillByID ( int  id )   {
         Skill  skill  =   null ;
         for ( Skill  s  :  skills )   {
             if ( s . getSkillID () == id )   {
                skill  =  s ;
                 break ;
             }
         }
         return  skill ;
     }
    
     public   boolean  isSkillIDValid ( int  skillID )   {
         boolean  isFound  =   false ;
         for ( Skill  s  :  skills )   {
             if ( s . getSkillID ()   ==  skillID )   {
                isFound  =   true ;
                 break ;
             }
         }
        
         return  isFound ;
     }
    
     public   Skill  getSkillByNameAndLevel ( String  skillName ,   int  level )   {
         Skill  skill  =   null ;
         for ( Skill  s  :  skills )   {
             if ( s . getName (). equals ( skillName )   &&  s . getLevel () == level )   {
                skill  =  s ;
                 break ;
             }
         }
         return  skill ;
     }
}

ITTMS/src/DAO/StaffDAO.java

ITTMS/src/DAO/StaffDAO.java

package  DAO ;
import  java . util . * ;

import   Domain . ITTMS ;
import   Model . StaffSkill ;
import   Model . Staff ;

public   class   StaffDAO   {

     private   ArrayList < Staff >  staffs ;
     private   SkillDAO  skills ;
    
     public   StaffDAO (){
         //fake staff database data
        
        staffs  =   new   ArrayList < Staff > ();
        skills  =  ITTMS . getSkillDAO ();
        
         Staff  s1  =   new   Staff ( 1 , "user1" ,   "password" ,   "Staff 1" );
        s1 . addSkill ( skills . getSkillByID ( 1 ));
        s1 . addSkill ( skills . getSkillByID ( 3 ));
        
         Staff  s2  =   new   Staff ( 2 , "user2" ,   "password" ,   "Staff 2" );
        s2 . addSkill ( skills . getSkillByID ( 2 ));
        s2 . addSkill ( skills . getSkillByID ( 4 ));
        
         Staff  s3  =   new   Staff ( 3 , "user3" ,   "password" ,   "Staff 3" );
        s3 . addSkill ( skills . getSkillByID ( 5 ));
        s3 . addSkill ( skills . getSkillByID ( 6 ));
        
        staffs . add ( s1 );
        staffs . add ( s2 );
        staffs . add ( s3 );
     }
    
     public   Staff  getStaffByUserName ( String  username )   {
         Staff  staff  =   null ;
         for ( Staff  s :  staffs )   {
             if ( s . getUsername (). equals ( username ))   {
                staff  =  s ;
                 break ;
             }
         }
         return  staff ;
     }
    
     public   boolean  isValidStaffID ( int  staffID )   {
         boolean  isValid = true ;
         if ( getStaffByID ( staffID ) == null )   {
            isValid  =   false ;
         }
         return  isValid ;
     }
    
     public   Staff  getStaffByID ( int  staffID )   {
         Staff  staff  =   null ;
         for ( Staff  s :  staffs )   {
             if ( s . getStaffID () == staffID )   {
                staff  =  s ;
                 break ;
             }
         }
         return  staff ;
     }
    
     public   ArrayList < Staff >  getStaffList (){
         return  staffs ;
     }
    
    
    
}

ITTMS/src/Model/Skill.java

ITTMS/src/Model/Skill.java

package   Model ;

public   class   Skill   {
    
     private   int  skillID ;
     private   String  name ;
     private   int  level ;
    
     public   Skill ( int  skillID , String  name ,   int   level )   {
         this . skillID  =  skillID ;
         this . name  =  name ;
         this . level  =  level ;
     }

     public   int  getSkillID ()   {
         return  skillID ;
     }
    
     public   String  getName ()   {
         return  name ;
     }

     public   int  getLevel ()   {
         return  level ;
     }
    
     public   void  display ()   {
         System . out . println ( "Skill ID:" + skillID + " Name: " + name  + " Level:" + level );
     }
    
    
}

ITTMS/src/Model/StaffSkill.java

ITTMS/src/Model/StaffSkill.java

package   Model ;

import  java . util . * ;

public   class   StaffSkill   {

     private   int  staffID ;
     private   ArrayList < Skill >  skills ;

     public   StaffSkill ( int  staffID )   {
         this . staffID  =  staffID ;
         this . skills  =   new   ArrayList < Skill > ();
     }
    
     public   ArrayList < Skill >  getSkills ()   {
         return  skills ;
     }

     public   void  addSkill ( Skill  skill )   {
         this . skills . add ( skill );
     }

     public   int  getStaffID ()   {
         return  staffID ;
     }

     public   void  display ()   {
         for   ( Skill  r  :  skills )   {
            r . display ();
         }
     }

     public   boolean  isSkillInStaff ( String  skillName )   {
         boolean  skillInStaff  =   false ;
         for   ( Skill  r  :  skills )   {
             if   ( r . getName (). equals ( skillName ))   {
                skillInStaff  =   true ;
                 break ;
             }
         }
         return  skillInStaff ;
     }
    
     public   void  removeSkillByName ( String  skillName ){
         for ( Skill  skill  :  skills )   {
             if ( skill . getName (). equals ( skillName ))   {
                skills . remove ( skill );
                 break ;
             }
         }
     }
    
     public   void  removeSkillByID ( int  skillIDToRemove ){
         for ( Skill  skill  :  skills )   {
             if ( skill . getSkillID () == skillIDToRemove )   {
                skills . remove ( skill );
                 break ;
             }
         }
     }


}

ITTMS/src/Model/User.java

ITTMS/src/Model/User.java

package   Model ;

public   class   User   {

     private   String  username ;
     private   String  password ;
    
     public   User ( String  username ,   String  password )   {
         this . username  =  username ;
         this . password  =  password ;
     }
    
     public   String  getUsername ()   {
         return  username ;
     }
    
     public   boolean  authenticateUser ( String  password )   {
         //Suppose to use SHA algorithm here, 
         //use clear password for simplification
         boolean  status  =   false ;
         if ( this . password . equals ( password ))   {
            status  =   true ;
         }
         return  status ;
     }
}

ITTMS/src/Model/Administrator.java

ITTMS/src/Model/Administrator.java

package   Model ;

public   class   Administrator   extends   User {

     public   Administrator ( String  password )   {
         super ( "admin" ,  password );
     }    
}

ITTMS/src/Model/Staff.java

ITTMS/src/Model/Staff.java

package   Model ;
import  java . util . * ;

public   class   Staff   extends   User {

     private   int  staffID ;
     private   String  name ;
     private   String  appointment ;
     private   StaffSkill  staffSkills ;
        
     public   Staff ( int  staffID ,   String  username ,   String  password ,   String  name )   {
         super ( username ,  password );
         this . staffID  =  staffID ;
         this . name  =  name ;
         this . staffSkills  =   new   StaffSkill ( staffID );
     }
    
     public   int  getStaffID ()   {
         return  staffID ;
     }
    
     public   void  addSkill ( Skill  skill )   {
         this . staffSkills . addSkill ( skill );
     }
    
     public   void  removeSkillByID ( int  skillIDToRemove )   {
         this . staffSkills . removeSkillByID ( skillIDToRemove );
     }

     public   StaffSkill  getStaffSkills ()   {
         return  staffSkills ;
     }
    
     public   ArrayList < Skill >  getStaffSkillList ()   {
         return  staffSkills . getSkills ();
     }
    
     public   boolean  isSkillIDInStaff ( int  skillID )   {
         ArrayList < Skill >  skills  =  staffSkills . getSkills ();
         boolean  isSkillIDInStaff  =   false ;
         for ( Skill  s  :  skills )   {
             if ( s . getSkillID () == skillID )   {
                isSkillIDInStaff  =   true ;
                 break ;
             }
         }
         return  isSkillIDInStaff ;
     }
    
     public   void  display ()   {
         System . out . println ( "Staff ID :" + staffID + " Name:" + name );
     }
}

ITTMS/src/View/AdminAssignSkillToStaffView.java

ITTMS/src/View/AdminAssignSkillToStaffView.java

package   View ;

public   class   AdminAssignSkillToStaffView   extends   AdminView   {

     public   static   int  getStaffIDToAddSkill ()   {
         return  getInt ( "Enter staff ID to add skill >" );
     }
    
     public   static   int  getSkillIDToAdd ()   {
         return  getInt ( "Enter Skill ID to add >" );
     }
        
     public   static   void  errorMessageSkillIDAlreadyInStaff ()   {
        println ( "Skill ID already in Staff" );
     }
    
     public   static   void  successMessageSkillAssignedToStaff ()   {
        println ( "Skill assigned to staff" );
     }
}

ITTMS/src/View/ITTMSAdminView.java

ITTMS/src/View/ITTMSAdminView.java

package   View ;

import   General . Helper ;

public   class   ITTMSAdminView   extends   View {

     public   static   void  displayMenu ()   {
         Helper . printBlankLines ( 5 );
         System . out . println ( "*******************************" );
         System . out . println ( "ITTMS Administrator" );
         System . out . println ( "1. Manage Skills" );
         System . out . println ( "2. Manage Staffs" );
         System . out . println ( "3. Exit" );
         System . out . println ( "*******************************" );   
     }
    
     public   static   int  getChoice ()   {
         return  getChoice ( 3 );
     }
    
}

ITTMS/src/View/AdminAddSkillView.java

ITTMS/src/View/AdminAddSkillView.java

package   View ;

public   class   AdminAddSkillView   extends   AdminView {

     public   static   String  getNewSkillName ()   {
         return  getString ( "Enter new skill name >" );  
     }

     public   static   int  getNewSkillLevel ()   {
         return  getInt ( "Enter new skill level >" );
     }
    
     public   static   void  successMessageSkillAdded ()   {
        println ( "New Skill added" );
     }
}

ITTMS/src/View/AdminRemoveSkillFromStaffView.java

ITTMS/src/View/AdminRemoveSkillFromStaffView.java

package   View ;

public   class   AdminRemoveSkillFromStaffView   extends   AdminView {

     public   static   int  getStaffIDToRemoveSkill ()   {
         return  getInt ( "Enter staff ID to remove skill:" );
     }
    
     public   static   int  getSkillIDToRemove ()   {
         return  getInt ( "Enter skill ID to remove skill:" );
     }
    
     public   static   void  successMessageSkillRemovedFromStaff ()   {
        println ( "Skill removed from staff" );
     }
    
}

ITTMS/src/View/AdminManageStaffSkillView.java

ITTMS/src/View/AdminManageStaffSkillView.java

package   View ;

import   General . Helper ;

public   class   AdminManageStaffSkillView   extends   AdminView {

     public   static   void  displayMenu ()   {
         Helper . printBlankLines ( 5 );
         System . out . println ( "*******************************" );
         System . out . println ( "ITTMS Administrator Manage Staff Skills" );
         System . out . println ( "1. List Staff Skill" );
         System . out . println ( "2. Assign Skill to Staff" );
         System . out . println ( "3. Remove Skill from Staff" );
         System . out . println ( "4. Exit" );
         System . out . println ( "*******************************" );   
     }
    
     public   static   int  getChoice ()   {
         return  getChoice ( 4 );
     }
}

ITTMS/src/View/AdminListSkillsView.java

ITTMS/src/View/AdminListSkillsView.java

package   View ;

public   class   AdminListSkillsView   extends   AdminView {

}

ITTMS/src/View/StaffListSkillView.java

ITTMS/src/View/StaffListSkillView.java

package   View ;

import  java . util . ArrayList ;

import   Model . * ;

public   class   StaffListSkillView   {

     public   static   void  listStaffSkills ( Staff  staff )   {
         System . out . println ( "Listing skills for " + staff . getUsername ());
         ArrayList < Skill >  skills  =  staff . getStaffSkillList ();
         for ( Skill  s :  skills )   {
            s . display ();
         }
     }
    
}

ITTMS/src/View/ITTMSMainView.java

ITTMS/src/View/ITTMSMainView.java

package   View ;

import   General . Helper ;

public   class   ITTMSMainView   extends   View {
    
     public   static   void  displayMenu ()   {
         Helper . printBlankLines ( 5 );
         System . out . println ( "*******************************" );
         System . out . println ( "ITTMS" );
         System . out . println ( "1. Administrator" );
         System . out . println ( "2. Staff" );
         System . out . println ( "3. Exit" );
         System . out . println ( "*******************************" );   
     }
    
     public   static   int  getChoice ()   {
         System . out . println ( "Enter choice >" );
         return   Helper . getChoice ( 3 );
     }
    
     public   static   void  displayExitMessage ()   {
         System . out . println ( "Exit System" );
     }
    
     public   static   String  getUsername ()   {
         //suppose to replace with keyboard input
         return   "user1" ;
     }

     public   static   String  getUserPassword ()   {
         //suppose to replace with keyboard input
         return   "password" ;
     }
    
     public   static   String  getAdminPassword ()   {
         //suppose to replace with keyboard input
         return   "password" ;
     }
    
     public   static   void  displayLoginFailed ()   {
         System . out . println ( "Login failed" );
     }
    
    
    
}

ITTMS/src/View/AdminListStaffSkillView.java

ITTMS/src/View/AdminListStaffSkillView.java

package   View ;


public   class   AdminListStaffSkillView   extends   AdminView {

     public   static   int  getStaffIDToListSkill ()   {
         return  getInt ( "Enter staff ID >" );
     }
    
    
}

ITTMS/src/View/View.java

ITTMS/src/View/View.java

package   View ;

import   General . Helper ;

public   class   View   {

     public   static   int  getChoice ( int  numOfChoice )   {
         System . out . println ( "Enter choice" );
         return   Helper . getChoice ( numOfChoice );
     }
    
     public   static   void  println ( String  message )   {
         System . out . println ( message );
     }
    
     public   static   void  print ( String  message )   {
         System . out . print ( message );
     }
    
     public   static   String  getString ( String  message )   {
         return   Helper . getString ( message );    
     }
    
     public   static   int  getInt ( String  message )   {
         return   Helper . getInt ( message );   
     }
}

ITTMS/src/View/AdminView.java

ITTMS/src/View/AdminView.java

package   View ;

import  java . util . ArrayList ;

import  DAO . SkillDAO ;
import  DAO . StaffDAO ;
import   Domain . ITTMS ;
import   General . Helper ;
import   Model . Skill ;
import   Model . Staff ;

public   class   AdminView   extends   View {

     public   static   void  listAllSkills ()   {
         System . out . println ( "List all skills" );
         SkillDAO  skillDAO  =  ITTMS . getSkillDAO ();
         ArrayList < Skill >  skills  = skillDAO . getSkills ();
         for ( Skill  s :  skills )   {
            s . display ();
         }
     }
    
     public   static   void  listAllStaffs ()   {
         StaffDAO  staffDAO  =  ITTMS . getStaffDAO ();
         ArrayList < Staff >  staffs  =  staffDAO . getStaffList ();
         System . out . println ( "Display staff list" );
         for ( Staff  s  :  staffs )   {
            s . display ();
         }
     }
    
     public   static   void  listStaffSkill ( Staff  staff )   {
         ArrayList < Skill >  skills  =  staff . getStaffSkillList ();
         for ( Skill  s :  skills )   {
            s . display ();
         }
     }
    
     public   static   void  errorMessageInvalidStaffID ()   {
        print ( "Invalid staff ID" );
     }
    
     public   static   void  errorMessageInvalidSkillID ()   {
        print ( "Invalid skill ID" );
     }
        
    
}

ITTMS/src/View/AdminDeleteSkillView.java

ITTMS/src/View/AdminDeleteSkillView.java

package   View ;

public   class   AdminDeleteSkillView   extends   AdminView {

     public   static   int  getSkillIDToDelete ()   {
         return  getInt ( "Enter skill id to delete >" );
     }
    
     public   static   void  displayError ()   {
        println ( "Skill ID not found" );
     }
    
     public   static   void  displaySuccess ()   {
        println ( "Skill removed" );
     }
    
}

ITTMS/src/View/AdminManageSkillView.java

ITTMS/src/View/AdminManageSkillView.java

package   View ;

import   General . Helper ;

public   class   AdminManageSkillView   extends   AdminView   {

     public   static   void  displayMenu ()   {
         Helper . printBlankLines ( 5 );
         System . out . println ( "*******************************" );
         System . out . println ( "ITTMS Administrator Manage Skills" );
         System . out . println ( "1. View Skills" );
         System . out . println ( "2. Add Skills" );
         System . out . println ( "3. Delete Skills" );
         System . out . println ( "4. Exit" );
         System . out . println ( "*******************************" );   
     }
    
     public   static   int  getChoice ()   {
         return  getChoice ( 4 );
     }
    
    
}

ITTMS/src/Domain/ITTMSAdmin.java

ITTMS/src/Domain/ITTMSAdmin.java

package   Domain ;

import  DAO . * ;
import   Model . * ;
import   View . * ;

public   class   ITTMSAdmin   {

     public   void  run ()   {
         while   ( true )   {
             ITTMSAdminView . displayMenu ();
             int  choice  =   ITTMSAdminView . getChoice ();
             switch   ( choice )   {
             case   1 :
                manageSkill ();
                 break ;
             case   2 :
                manageStaffSkill ();
                 break ;
             }
             if ( choice == 3 )   {
                 break ;
             }
         }
     }

     private   void  manageSkill ()   {
         new   AdminManageSkill (). run ();
     }

     private   void  manageStaffSkill ()   {
         new   AdminManageStaffSkill (). run ();
     }

}

ITTMS/src/Domain/AdminRemoveSkillFromStaff.java

ITTMS/src/Domain/AdminRemoveSkillFromStaff.java

package   Domain ;

import  DAO . * ;
import   Model . * ;
import   View . * ;

public   class   AdminRemoveSkillFromStaff   {

     public   void  run ()   {
         //System.out.println("AdminRemoveSkillFromStaff yet to implement");
        
         AdminRemoveSkillFromStaffView . listAllStaffs ();
        
         int  staffID  =   AdminRemoveSkillFromStaffView . getStaffIDToRemoveSkill ();
        
         StaffDAO  staffDAO  =  ITTMS . getStaffDAO ();
         if ( ! staffDAO . isValidStaffID ( staffID ))   {
             AdminRemoveSkillFromStaffView . errorMessageInvalidStaffID ();
             return ;
         }
         Staff  staff  =  staffDAO . getStaffByID ( staffID );
         AdminRemoveSkillFromStaffView . listStaffSkill ( staff );
         int  skillIDToRemove  =   AdminRemoveSkillFromStaffView . getSkillIDToRemove ();
        
         if ( staff . isSkillIDInStaff ( skillIDToRemove ))   {
            staff . removeSkillByID ( skillIDToRemove );
             AdminRemoveSkillFromStaffView . successMessageSkillRemovedFromStaff ();
         } else   {
             AdminRemoveSkillFromStaffView . errorMessageInvalidSkillID ();
         }
        
     }
    
}

ITTMS/src/Domain/AdminManageSkill.java

ITTMS/src/Domain/AdminManageSkill.java

package   Domain ;

import   View . * ;

public   class   AdminManageSkill   {

     public   void  run ()   {
         while   ( true )   {
             AdminManageSkillView . displayMenu ();
             int  choice  =   AdminManageSkillView . getChoice ();
             switch   ( choice )   {
             case   1 :
                listSkills ();
                 break ;
             case   2 :
                addSkill ();
                 break ;
             case   3 :
                deleteSkill ();
                 break ;
             }
             if ( choice == 4 )   {
                 break ;
             }
         }
     }

     private   void  listSkills ()   {
         new   AdminListSkills (). run ();
     }
    
     private   void  addSkill ()   {
         new   AdminAddSkill (). run ();
     }

     private   void  deleteSkill ()   {
         new   AdminDeleteSkill (). run ();
     }
}

ITTMS/src/Domain/ITTMS.java

ITTMS/src/Domain/ITTMS.java

package   Domain ;

import   View . * ;
import  DAO . * ;
import   Model . * ;

public   class  ITTMS  {
    
     private   static   StaffDAO  staffDAO ;
     private   static   SkillDAO  skillDAO ;
    
     private   AdministratorDAO  adminDAO ;

     public  ITTMS ()   {
        skillDAO  =   new   SkillDAO ();
        staffDAO  =   new   StaffDAO ();
        adminDAO  =   new   AdministratorDAO ();
     }
    
     public   void  run ()   {
         while   ( true )   {
             ITTMSMainView . displayMenu ();
             int  choice  =   ITTMSMainView . getChoice ();
             switch   ( choice )   {
                 case   1 :
                     String  adminPassword  =   ITTMSMainView . getAdminPassword ();
                     Administrator  admin  =  adminDAO . getAdministrator ();
                     if   ( admin . authenticateUser ( adminPassword ))   {
                         new   ITTMSAdmin (). run ();
                     }   else   {
                         ITTMSMainView . displayLoginFailed ();
                     }
                     break ;
                 case   2 :
                     String  username  =   ITTMSMainView . getUsername ();
                     String  password  =   ITTMSMainView . getUserPassword ();
                     Staff  staff  =  staffDAO . getStaffByUserName ( username );
                     if   ( staff . authenticateUser ( password ))   {
                         new   ITTMSStaff ( staff ). run ();
                     }   else   {
                         ITTMSMainView . displayLoginFailed ();
                     }
                     break ;
             }

             if   ( choice  ==   3 )   {
                 ITTMSMainView . displayExitMessage ();
                 break ;
             }
         }
     }
    
     public   static   StaffDAO  getStaffDAO ()   {
         return  staffDAO ;
     }

     public   static   SkillDAO  getSkillDAO ()   {
         return  skillDAO ;
     }
}

ITTMS/src/Domain/AdminManageStaffSkill.java

ITTMS/src/Domain/AdminManageStaffSkill.java

package   Domain ;

import   View . AdminManageStaffSkillView ;

public   class   AdminManageStaffSkill   {

     public   void  run ()   {
         while   ( true )   {
             AdminManageStaffSkillView . displayMenu ();
             int  choice  =   AdminManageStaffSkillView . getChoice ();
             switch   ( choice )   {
             case   1 :
                listStaffStaff ();
                 break ;
             case   2 :
                assignSkillToStaff ();
                 break ;
             case   3 :
                removeSkillFromStaff ();
                 break ;
             }
             if ( choice == 4 )   {
                 break ;
             }
         }
     }
    
     private   void  listStaffStaff ()   {
         new   AdminListStaffSkill (). run ();
     }

     private   void  assignSkillToStaff ()   {
         new   AdminAssignSkillToStaff (). run ();
     }
    
     private   void  removeSkillFromStaff ()   {
         new   AdminRemoveSkillFromStaff (). run ();
     }

}

ITTMS/src/Domain/AdminDeleteSkill.java

ITTMS/src/Domain/AdminDeleteSkill.java

package   Domain ;

import   View . * ;
import  DAO . * ;

public   class   AdminDeleteSkill   {

     public   void  run ()   {
        
         int  skillIDToDelete  =   AdminDeleteSkillView . getSkillIDToDelete ();
         SkillDAO  skillDAO  =  ITTMS . getSkillDAO ();
        
         if ( skillDAO . isSkillIDValid ( skillIDToDelete ))   {
            skillDAO . removeSkillByID ( skillIDToDelete );
             AdminDeleteSkillView . displaySuccess ();
         } else {
             AdminDeleteSkillView . errorMessageInvalidSkillID ();
         }
     }

}

ITTMS/src/Domain/StaffListSkill.java

ITTMS/src/Domain/StaffListSkill.java

package   Domain ;

import   View . * ;
import   Domain . * ;
import   Model . * ;

public   class   StaffListSkill   {

     private   Staff  staff ;
    
     public   StaffListSkill ( Staff  staff )   {
         this . staff  =  staff ;
     }

     public   void  run ()   {
         StaffListSkillView . listStaffSkills ( staff );
     }
}

ITTMS/src/Domain/ITTMSStaff.java

ITTMS/src/Domain/ITTMSStaff.java

package   Domain ;

import   Model . * ;
import   View . * ;
import  java . util . * ;

public   class   ITTMSStaff   {

     private   Staff  staff ;
     private   StaffListSkill  staffListSkill ;

     public   ITTMSStaff ( Staff  staff )   {
         this . staff  =  staff ;
        staffListSkill  =   new   StaffListSkill ( staff );
     }
    
     public   void  run ()   {
        staffListSkill . run ();
     }
}

ITTMS/src/Domain/AdminAssignSkillToStaff.java

ITTMS/src/Domain/AdminAssignSkillToStaff.java

package   Domain ;

import   View . * ;
import  DAO . * ;
import   Model . * ;

public   class   AdminAssignSkillToStaff   {

     public   void  run ()   {
        
         AdminManageSkillView . listAllStaffs ();
         int  staffID  =   AdminAssignSkillToStaffView . getStaffIDToAddSkill ();
         StaffDAO  staffDAO  =  ITTMS . getStaffDAO ();
         if ( ! staffDAO . isValidStaffID ( staffID ))   {
             AdminAssignSkillToStaffView . errorMessageInvalidStaffID ();
             return ;
         }
         AdminAssignSkillToStaffView . listAllSkills ();
        
         int  skillID  =   AdminAssignSkillToStaffView . getSkillIDToAdd ();
         SkillDAO  skillDAO  =  ITTMS . getSkillDAO ();
         if ( ! skillDAO . isSkillIDValid ( skillID ))   {
             AdminAssignSkillToStaffView . errorMessageInvalidSkillID ();
             return ;
         }
        
         if ( isSkillInStaff ( staffID , skillID ))   {
             AdminAssignSkillToStaffView . errorMessageSkillIDAlreadyInStaff ();
         }
         else   {
            assignSkillToStaff ( staffID , skillID );
             AdminAssignSkillToStaffView . successMessageSkillAssignedToStaff ();
         }
     }
    
     private   void  assignSkillToStaff ( int  staffID ,   int  skillID )   {
         SkillDAO  skillDAO  =  ITTMS . getSkillDAO ();
         Skill  skill  =  skillDAO . getSkillByID ( skillID );
         StaffDAO  staffDAO  =  ITTMS . getStaffDAO ();
         Staff  staff  =  staffDAO . getStaffByID ( staffID );
        staff . addSkill ( skill );
     }
    
     private   boolean  isSkillInStaff ( int  staffID ,   int  skillID )   {
         StaffDAO  staffDAO  =  ITTMS . getStaffDAO ();
         Staff  staff  =  staffDAO . getStaffByID ( staffID );
         return  staff . isSkillIDInStaff ( skillID );
        
     }
    
}

ITTMS/src/Domain/AdminListSkills.java

ITTMS/src/Domain/AdminListSkills.java

package   Domain ;

import   View . AdminListSkillsView ;

public   class   AdminListSkills   {

     public   void  run ()   {
         AdminListSkillsView . listAllSkills ();
     }
}

ITTMS/src/Domain/AdminAddSkill.java

ITTMS/src/Domain/AdminAddSkill.java

package   Domain ;

import   View . * ;
import   Model . * ;
import  DAO . * ;

public   class   AdminAddSkill   {

     public   void  run ()   {
        
         //get skill to add
         String  name  =   AdminAddSkillView . getNewSkillName ();
         int  level  =   AdminAddSkillView . getNewSkillLevel ();
         //create new skill object
         SkillDAO  skillDAO  =  ITTMS . getSkillDAO ();
        skillDAO . addSkill ( name ,  level );
         AdminAddSkillView . successMessageSkillAdded ();
        
     }
}

ITTMS/src/Domain/AdminListStaffSkill.java

ITTMS/src/Domain/AdminListStaffSkill.java

package   Domain ;

import  DAO . * ;
import   View . * ;
import   Model . * ;


public   class   AdminListStaffSkill   {

     public   void  run ()   {
        
         AdminListStaffSkillView . listAllStaffs ();
         int  staffID  =   AdminListStaffSkillView . getStaffIDToListSkill ();
         StaffDAO  staffDAO  =  ITTMS . getStaffDAO ();
         if ( ! staffDAO . isValidStaffID ( staffID ))   {
             AdminListStaffSkillView . errorMessageInvalidStaffID ();
             return ;
         }
        
         Staff  staff  =  staffDAO . getStaffByID ( staffID );
         AdminListStaffSkillView . listStaffSkill ( staff );
     }
}