I want this in Java
Milestone 2: Forming Project Teams Manually and Creating the Test Cases (4 Marks) In this milestone you are required to ensure teams are balanced in terms of personality types, each team has at least one leader type (A) and students with personality conflicts are not placed in the same team. In addition, for each team you are required to compute Team-Fitness Metrics which will allow project manager to swap members when necessary {next milestone) considering ethical considerations as well as preferences of owners and students. Team-Fitness Metrics 1. Average student skill competency for each project team. This value should not vary greatly between teams to ensure fairness {ethical consideration). Percentage of students who got their first and second preferences in each of the teams. Agood allocation should try to maximize this percentage to improve student satisfaction. Skills shortfall for each project based on categories in which the average grade for a skill category {between 0 and 4) falls below the requested level for that category. It is derived by summing up the absolute difference between skill level requested and the average skill level of team members for categories where the average skill competency level is lower than the requested level. For example, if a project requested 4 for P, 3 for A, 2 for W and 1 for N, and the average skill competency for these categories are 1.5, 2.5, 2.5 and 3 respectively, then the skills shortfall for that project is 3 being (4 1.5) + (3 2.5). The project manager aims to minimize the skills shortfall and to balance it across teams to ensure all project owners get members with skill competencies close to what was requested. Extending the Menu Driven Program You are required to extend the menu-driven program creating two additional options. You are expected to make use of the data stored in the files projects.txt, studentinfo.txt and selections.txt. A. Form Team B. Display Team Fitness Metrics In addition, you are required to create 10JUnit test cases specified below and serialize all the objects {see below}. A. Form Teams Project manager should be allowed to specify the project ID followed by the IDs of all the students to be assigned to the project. You are expected to develop the appropriate classes. B. Display Team Fitness Metrics Create a sub-menu to allow the user to display the required team fitness metrics. This menu should only be enabled after all the teams are formed. Test Cases [You are required to write both positive and negative test cases) 8} bl Cl C\" 6) kl Average skill competency for a team is computed correctly Percentage of project members getting first and second project preference is computed correctly Skill shortfall for any team is computed correctly. lnvalidMember exception thrown when an attempt is made to add a student already assigned to another project team StudentConflict exception thrown when students members who have indicated prior conflicts are assigned to the same team Personalitylmbalance exception whenever a team has less than three different personality types. Repeated Member exception thrown when an attempt is made to add a student twice to the same team NoLeader exception thrown when a team does not have a leader personality type Standard deviation {see formula in last page} in skill competency across projects computed correctly. Standard deviation for percentage of project members getting first and second project preferences across projects computed correctly Standard deviation of shortfall across teams is computed correctly. Serialization Your program should allow all project and student objects to be serialized and retrieved. Page 5 of 8