An app is required to manage vacancies data. The app should be able to add a new vacancy; add an application to a vacancy; and, list all vacancies and their applications.
Vacancies have a unique identifier (integer); vacancy title; description; and, a collection of applications. Application details include an application number and applicant name.
The identifier is generated when a new vacancy is added.
Add a new vacancy
Add a new application for a vacancy
List all vacancies and their applications
You will be supplied with a IntelliJ project and a MySQL (MariaDB) database script
App will be implemented in Java (and MariaDB)
App should be constructed as a set of increments as specified in this document
The app is to be developed in increments which are marked separately; the first 3 increments construct a console app in the manner of the learning material and practical exercises; while the remaining increments convert the console app into a JavaFX app.
1. Complete the Vacancyand Applicationmodel classes by completing the getter, setter, add Application To Vacancy() and to String () methods. (8)
2. Modify the Repositoryclass to create a TestDAOobject (1)
3. Modify the Controllerclass to create a Repositoryobject (1)
4. Complete the Controller's listVacanciesToConsole()method to retrieve Vacancydata from the TestDAO object through the Repository object's getVacancies() method (3)
5. Run the app and document the results in a Word document. Take a copy of the Java project and save in a folder called Increment1. (3)
1. Start Apacheand MySQL(MariaDB) and run the database script provided to create the Vacancies database. Check that you can successfully view the Vacancy and Application table data. (4)
2. Construct a SQLDAO class which connects to the database server and implement getVacancies()and getVacancyApplications() methods which retrieve all vacancies and their associated applications (6)
3. Modify the Repositoryclass to create a SQLDAO object instead of a Test DAO object (1)
4. Run the app and document the results in a Word document. Take a copy of the Java project and save in a folder called Increment2.(3)
1. Modify the SQLDAOclass to include getVacancy(),addVacancy() and addApplication() methods which query and update the Vacancies database. (9)
2.Implement the Controllerclass add Vacancy UsingConsoleInput ()and add Application Using ConsoleInput () methods using an InputHelper object to ask the user to supply data and pass data into the appropriate Repository object methods (6)
3. Modify the Controllerrun()method to provide a menu allowing the user options for adding a vacancy, adding an application and listing vacancies (2)
4. Run the app and document the results in a Word document. Take a copy of the Java project and save in a folder called Increment3.(3)
1. Create a VacanciesListview and associated view controller (4)
2. Modify the Appclass to create a JavaFXproject
3. Uncomment the Stageand BorderPaneattribute declarations and the initRootLayout() method and appropriate constructor of the Controller class
4. Add a listVacancies()method to populate the VacanciesListview (3)
5. Run the app, capturing screen shots and document the results in a Word document.Take a copy of the Java project and save in a folder called Increment4.(3)
1. Create AddVacancyand AddApplicationviews and associated view controllers (6)
2. Modify the RootLayoutControllerto handle Add Vacancyand Add Application requests (2)
3. Modify the VacanciesListview to include buttons for the Add Vacancyand Add Application functionality (2)
4. Add addVacancy Form(), add Vacancy(), add ApplicationForm() and addApplication() methods to the Controller class (6)
5. Remove any unnecessary methods from the Controllerclass
6. Run the app, capturing screen shots and document the results in a Word document; ensure the database is updated appropriately. Take a copy of the Java project and save in a folder called Increment5.(4)
There are a number of ways in which the app can be enhanced using some of the advanced concepts in the module. For a higher mark, select some of the options below:
1. Add authentication and authorisation functionality to your GUI app using the ideas in the module (6)
2. Create unit tests for the model classes(4)
3. Implement the Applicationclass as a nested class within the Vacancyclass (4)
4. Add a menu option to your console app allowing users to enter a phrase identifying a vacancy type e.g. manager, developer, sales etc. Display a report showing vacancy titles and number of applications for vacancies which meet the supplied criteria. Implementation should use some, or all of: lambda expressions; standard functional interfaces; and, aggregate operations.(6)
5. Create Hibernatemapping documents for each model class as represented in the supplied database schema. There is no requirement to create a Data Access Object.(4)
6. Extend the model to add a specialised form of Applicationfor external applicants – a referee name is also required. Update classes and views as necessary. Note an additional supplied database script includes such data and necessary stored procedures. This might be easier added to the console app.(12)
7. Add a menu option to your console app allowing user to select a vacancy from a list; a CSVfile should be produced of applications for this vacancy – the vacancy id and title should be included in the filename.(6)