Advanced Java Concept

COMPETENCIES
4025.1.5 : Database and File Server Applications

The graduate produces database and file server applications using advanced Java programming language constructs to meet business requirements.

4025.1.6 : Lambda

The graduate incorporates lambda expressions in application development to meet business requirements more efficiently.

4025.1.7 : Collections

The graduate incorporates streams and filters in application development to manipulate data more efficiently.

4025.1.8 : Localization API and Date/Time API

The graduate applies the localization API and date/time API in application development to support end-users in various geographical regions.

4025.1.9 : Advanced Exception Control

The graduate incorporates advanced exception control mechanisms in application development for improving user experience and application stability.

INTRODUCTION
Throughout your career in software design and development, you will be asked to create applications with various features and criteria based on a variety of business requirements. For this assessment, you will create your own GUI-based Java application with requirements that mirror those you will likely encounter in a real-world job assignment.

The skills you will showcase in this assessment are also directly relevant to technical interview questions for future employment. This application may become a portfolio piece for you to show to future employers.

Several attachments and links have been included to help you complete this task. Refer to the MySQL Virtual Access Instruction attachment for help accessing the database for your application. Note that this database is for functional purposes only. The attached Database ERD shows the entity relationship diagram (ERD) for this database, which you can reference as you create your application.

The preferred integrated development environment (IDE) for this assignment is NetBeans version 11.1 or later, or IntelliJ IDEA (Community Edition). Use the links in the Web Links section of this assessment to install one of these IDEs. If you choose to use another IDE, you must export your project into NetBeans 11.1 or later, or IntelliJ format, or your submission will be returned. This assessment also requires the following software: JDK 11, JavaFX SDK, and Scene Builder, which are also available for download in the Web Links section of this assessment.

Your submission should include a zip file with all the necessary code files to compile, support, and run your application. Your submission should also include an index.html file with reflective Javadoc comments in the .java files. The zip file submission must keep the project file and folder structure intact for the IDE.

In NetBeans, zip your file by going to File>Export Project>To ZIP and click Export. In IntelliJ Idea, go to File>Export to Zip File and click OK. If you try to zip your project files with an external program, it will include the build files and make the zip files too large for submission.

Note: You may receive an error message upon submitting your files because the automated plagiarism detectors at WGU will not be able to access a zipped file, but the evaluation team will run their checks manually when evaluating your submission.

SCENARIO
You are working for a software company that has been contracted to develop a GUI-based scheduling desktop application. The contract is with a global consulting organization that conducts business in multiple languages and has main offices in Phoenix, Arizona; White Plains, New York; Montreal, Canada; and London, England. The consulting organization has provided a MySQL database that the application must pull data from. The database is used for other systems, so its structure cannot be modified.

The organization outlined specific business requirements that must be met as part of the application. From these requirements, a system analyst at your company created solution statements for you to implement in developing the application. These statements are listed in the requirements section.

Your company acquires Country and First-Level-Division data from a third party that is updated once per year. These tables are prepopulated with read-only data. Please use the attachment Locale Codes for Region and Language to review division data. Your company also supplies a list of contacts, which are prepopulated in the Contacts table; however, administrative functions such as adding users are beyond the scope of the application and done by your companys IT support staff. Your application should be organized logically using one or more design patterns and generously commented using Javadoc so your code can be read and maintained by other programmers.

REQUIREMENTS
Your submission must be your original work. No more than a combined total of 30% of the submission and no more than a 10% match to any one individual source can be directly quoted or closely paraphrased from sources, even if cited correctly. The originality report that is provided when you submit your task can be used as a guide.

You must use the rubric to direct the creation of your submission because it provides detailed criteria that will be used to evaluate your work. Each requirement below may be evaluated by more than one rubric aspect. The rubric aspect titles may contain hyperlinks to relevant portions of the course.

You must use “test” as the username and password to login to your application.

Tasks may not be submitted as cloud links, such as links to Google Docs, Google Slides, OneDrive, etc., unless specified in the task requirements. All other submissions must be file types that are uploaded and submitted as attachments (e.g., .docx, .pdf, .ppt).

A.  Create a GUI-based application for the company in the scenario. Regarding your file submissionthe use of non-Java API libraries are not allowed with the exception of JavaFX SDK and MySQL JDBC Driver. If you are using the NetBeans IDE, the custom library for your JavaFX .jar files in your IDE must be named JavaFX.

Note: If you are using IntelliJ IDEA, the folder where the JavaFX SDK resides will be used as the library name as shown in the JavaFX SDK with IntelliJ IDEA webinar.

1.  Create a log-in form with the following capabilities:

  accepts a user ID and password and provides an appropriate error message

  determines the users location (i.e., ZoneId) and displays it in a label on the log-in form

  displays the log-in form in English or French based on the users computer language setting to translate all the text, labels, buttons, and errors on the form

  automatically translates error control messages into English or French based on the users computer language setting

Note: Some operating systems require a reboot when changing the language settings.

2.  Write code that provides the following customer record functionalities:

  Customer records and appointments can be added, updated, and deleted.

–  When deleting a customer record, all of the customers appointments must be deleted first, due to foreign key constraints.

  When adding and updating a customer, text fields are used to collect the following data: customer name, address, postal code, and phone number.

–  Customer IDs are auto-generated, and first-level division (i.e., states, provinces) and country data are collected using separate combo boxes.

Note: The address text field should not include first-level division and country data. Please use the following examples to format addresses:

  U.S. address: 123 ABC Street, White Plains

  Canadian address: 123 ABC Street, Newmarket

  UK address: 123 ABC Street, Greenwich, London

–  When updating a customer, the customer data autopopulates in the form.

  Country and first-level division data is prepopulated in separate combo boxes or lists in the user interface for the user to choose. The first-level list should be filtered by the users selection of a country (e.g., when choosing U.S., filter so it only shows states).

  All of the original customer information is displayed on the update form.

–  Customer_ID must be disabled.

  All of the fields can be updated except for Customer_ID.

  Customer data is displayed using a TableView, including first-level division data. A list of all the customers and their information may be viewed in a TableView, and updates of the data can be performed in text fields on the form.

  When a customer record is deleted, a custom message should display in the user interface.

3.  Add scheduling functionalities to the GUI-based application by doing the following:

a.  Write code that enables the user to add, update, and delete appointments. The code should also include the following functionalities:

  A contact name is assigned to an appointment using a drop-down menu or combo box.

  A custom message is displayed in the user interface with the Appointment_ID and type of appointment canceled.

  The Appointment_ID is auto-generated and disabled throughout the application.

  When adding and updating an appointment, record the following data: Appointment_ID, title, description, location, contact, type, start date and time, end date and time, Customer_ID, and User_ID.

  All of the original appointment information is displayed on the update form in local time zone.

  All of the appointment fields can be updated except Appointment_ID, which must be disabled.

b.  Write code that enables the user to view appointment schedules by month and week using a TableView and allows the user to choose between these two options using tabs or radio buttons for filtering appointments. Please include each of the following requirements as columns:

  Appointment_ID

  Title

  Description

  Location

  Contact

  Type

  Start Date and Time

  End Date and Time

  Customer_ID

c.  Write code that enables the user to adjust appointment times. While the appointment times should be stored in Coordinated Universal Time (UTC), they should be automatically and consistently updated according to the local time zone set on the users computer wherever appointments are displayed in the application.

Note: There are up to three time zones in effect. Coordinated Universal Time (UTC) is used for storing the time in the database, the users local time is used for display purposes, and Eastern Standard Time (EST) is used for the companys office hours. Local time will be checked against EST business hours before they are stored in the database as UTC.

d.  Write code to implement input validation and logical error checks to prevent each of the following changes when adding or updating information; display a custom message specific for each error check in the user interface:

  scheduling an appointment outside of business hours defined as 8:00 a.m. to 10:00 p.m. EST, including weekends

  scheduling overlapping appointments for customers

  entering an incorrect username and password

e.  Write code to provide an alert when there is an appointment within 15 minutes of the users log-in. A custom message should be displayed in the user interface and include the appointment ID, date, and time. If the user does not have any appointments within 15 minutes of logging in, display a custom message in the user interface indicating there are no upcoming appointments.

Note: Since evaluation may be testing your application outside of business hours, your alerts must be robust enough to trigger an appointment within 15 minutes of the local time set on the users computer, which may or may not be EST.

f.  Write code that generates accurate information in each of the following reports and will display the reports in the user interface:

Note: You do not need to save and print the reports to a file or provide a screenshot.

  the total number of customer appointments by type and month

  a schedule for each contact in your organization that includes appointment ID, title, type and description, start date and time, end date and time, and customer ID

  an additional report of your choice that is different from the two other required reports in this prompt and from the user log-in date and time stamp that will be tracked in part C

B.  Write at least two different lambda expressions to improve your code.

C.  Write code that provides the ability to track user activity by recording all user log-in attempts, dates, and time stamps and whether each attempt was successful in a file named login_activity.txt. Append each new record to the existing file, and save to the root folder of the application.

D.  Provide descriptive Javadoc comments for at least 70 percent of the classes and their members throughout the code, and create an index.html file of your comments to include with your submission based on Oracles guidelines for the Javadoc tool best practices. Your comments should include a justification for each lambda expression in the method where it is used.

Note: The comments on the lambda need to be located in the comments describing the method where it is located for it to export properly.

E.  Create a README.txt file that includes the following information:

  title and purpose of the application

  author, contact information, student application version, and date

  IDE including version number (e.g., IntelliJ Community 2020.01), full JDK of version 11 used (e.g., Java SE 11.0.4), and JavaFX version compatible with JDK 11 (e.g. JavaFX-SDK-11.0.2)

  directions for how to run the program

  a description of the additional report of your choice you ran in part A3f

  the MySQL Connector driver version number, including the update number (e.g., mysql-connector-java-8.1.23)

F.  Demonstrate professional communication in the content and presentation of your submission.

File Restrictions
File name may contain only letters, numbers, spaces, and these symbols: ! – _ . * ‘ ( )
File size limit: 200 MB
File types allowed: doc, docx, rtf, xls, xlsx, ppt, pptx, odt, pdf, txt, qt, mov, mpg, avi, mp3, wav, mp4, wma, flv, asf, mpeg, wmv, m4v, svg, tif, tiff, jpeg, jpg, gif, png, zip, rar, tar, 7z
RUBRIC
A:GUI-BASED APPLICATION
NOT EVIDENT

No code is provided for an application.

APPROACHING COMPETENCE

The provided application is not GUI-based or does not include all the supporting files for the IDE. Or non-Java APIs or custom libraries are used, with the exception of JavaFX SDK and MySQL JDBC Driver.

COMPETENT

The provided GUI-based application includes all the supporting files for the IDE. Non-Java APIs or custom libraries are not used, with the exception of JavaFX SDK and MySQL JDBC Driver.

A1:LOG-IN FORM
NOT EVIDENT

No code is provided for a log-in form.

APPROACHING COMPETENCE

The submitted log-in form does not include each of the required capabilities, or 1 or more of the capabilities are not fully functional.

COMPETENT

The submitted log-in form includes each of the required capabilities, and all are fully functional.

A2:CUSTOMER RECORD FUNCTIONALITIES
NOT EVIDENT

No code is provided for customer record functionalities.

APPROACHING COMPETENCE

The submitted application does not include each of the required customer record functionalities, or 1 or more of the provided functionalities do not work correctly.

COMPETENT

The submitted application includes each of the required customer record functionalities, and all work correctly.

A3A:SCHEDULING FUNCTIONALITY: ADD, UPDATE, AND DELETE
NOT EVIDENT

No code is provided.

APPROACHING COMPETENCE

The submitted code does not enable the user to add, update, or delete appointments or does not include each of the required functionalities, or 1 or more of the provided functionalities do not work correctly.

COMPETENT

The submitted code enables the user to add, update, and delete appointments and includes each of the required functionalities and all work correctly.

A3B:SCHEDULING FUNCTIONALITY: VIEWS
NOT EVIDENT

No code is provided.

APPROACHING COMPETENCE

The submitted code does not enable the user to view appointment schedules by month and week using a TableView or does not allow the user to choose between the two options using tabs or radio buttons for filtering appointments. Or each of the given requirements are not represented as columns.

COMPETENT

The submitted code enables the user to view appointment schedules by month and week using a TableView and allows the user to choose between the two options using tabs or radio buttons for filtering appointments. Each of the given requirements are represented as columns.

A3C:TIME ZONES
NOT EVIDENT

No code is provided.

APPROACHING COMPETENCE

The submitted code does not enable the user to adjust appointment times based on the local time zone set on the users computer or does not automatically or consistently display appointment times in the application.

COMPETENT

The submitted code enables the user to adjust appointment times based on the local time zone set on the users computer, and the appointment times are automatically and consistently displayed in the application.

A3D:INPUT VALIDATION AND LOGICAL ERROR CHECKS
NOT EVIDENT

No code is provided.

APPROACHING COMPETENCE

The submitted code does not implement input validation and logical error checks to prevent each of the listed errors when adding or updating information or does not display a custom message specific for each error check in the user interface.

COMPETENT

The submitted code implements input validation and logical error checks to prevent each of the listed errors when adding or updating information and displays a custom message specific for each error check in the user interface.

A3E:ALERTS
NOT EVIDENT

No code is provided.

APPROACHING COMPETENCE

The submitted code does not provide an alert when there is an appointment within 15 minutes of the users log-in or does not display a custom message in the user interface, or the message does not include the appointment ID, date, or time. Or a custom message is not displayed upon log-in in the user interface indicating there are no upcoming appointments if the user does not have any appointments in the next 15 minutes.

COMPETENT

The submitted code provides an alert when there is an appointment within 15 minutes of the users log-in and displays a custom message in the user interface that is visible to the user that includes the appointment ID, date, and time. A custom message is displayed upon log-in in the user interface indicating there are no upcoming appointments if the user does not have any appointments in the next 15 minutes.

A3F:REPORTS
NOT EVIDENT

No code is provided.

APPROACHING COMPETENCE

The submitted code does not generate accurate information for each of the three required reports or will not display them in the user interface. Or the additional, chosen report is the same as one of the two other required reports. Or the additional, chosen report is the same as the one required in part C.

COMPETENT

The submitted code generates accurate information for each of the three required reports and will display them in the user interface. The additional, chosen report is different from the two other required reports and from the one required in part C.

B:LAMBDA EXPRESSIONS
NOT EVIDENT

The submission does not include at least 2 lambda expressions.

APPROACHING COMPETENCE

The submission includes at least 2 lambda expressions, but they are not different or do not improve the code.

COMPETENT

The submission includes at least 2 different lambda expressions that improve the code.

C:TRACK USER ACTIVITY
NOT EVIDENT

No code is provided.

APPROACHING COMPETENCE

The submitted code does not provide the ability to track user activity or does not record all user log-in attempts, dates, or time stamps or does not record whether each log-in attempt was successful. Or this information is not recorded in a file named login_activity.txt. Or each new record is not appended to the existing file or does not save the information to the root folder of the application.

COMPETENT

The submitted code provides the ability to track user activity by recording all user log-in attempts, dates, and time stamps and whether each log-in attempt was successful in a file named login_activity.txt. Each new record is appended to the existing file and saves the information to the root folder of the application.

D:JAVADOC COMMENTS
NOT EVIDENT

The submission does not include an index.html file containing Javadoc comments.

APPROACHING COMPETENCE

The submission includes an index.html file containing descriptive Javadoc comments, but the comments are not based on Oracles guidelines for the Javadoc tool best practices. Or a comment is not provided for at least 70 percent of the classes and their members throughout the code, or the comments do not include a justification for each lambda expression in the method where it is used.

COMPETENT

The submission includes an index.html file containing descriptive Javadoc comments based on Oracles guidelines for the Javadoc tool best practices for at least 70 percent of the classes and their members throughout the code, including a justification for each lambda expression in the method where it is used.

E:README.TXT
NOT EVIDENT

The submission does not include a README.txt file.

APPROACHING COMPETENCE

The submission includes a README.txt file, but the file does not include all of the required information, or the provided information for 1 or more of the requirements is inaccurate.

COMPETENT

The submission includes a README.txt file that includes all of the required information.

F:PROFESSIONAL COMMUNICATION
NOT EVIDENT

Content is unstructured, is disjointed, or contains pervasive errors in mechanics, usage, or grammar. Vocabulary or tone is unprofessional or distracts from the topic.

APPROACHING COMPETENCE

Content is poorly organized, is difficult to follow, or contains errors in mechanics, usage, or grammar that cause confusion. Terminology is misused or ineffective.

COMPETENT

Content reflects attention to detail, is organized, and focuses on the main ideas as prescribed in the task or chosen by the candidate. Terminology is pertinent, is used correctly, and effectively conveys the intended meaning. Mechanics, usage, and grammar promote accurate interpretation and understanding.