The main goal of the scheduling application is to let the user store appointments in the most efficient
way possible while making it easy to understand for the user. This program connects to an Oracle database
that will verify the password on the login screen; also store any changes made in the program. Implementing
localization and date/time APIs in the program will automatically update the time to the user's localization.
This application was created with Scene Builder for the graphical user interface and coded in NetBeans IDE.
The database was modified using MySQL workbench.
The login form is the first part of this application. It does the following:
- Accepts a user ID and password.
- Provides an appropriate error message if it is incorrect.
- Determines the user’s location (i.e., ZoneId) and displays it in a label on the login form.
- Displays the login form in English or French based on the user’s computer language settings.
It will translate all the text, labels, buttons, and errors on the form.
- Automatically translates error control messages into English or French based on the user’s computer language setting.

The rest of the program has the following functionalities:
- Customer records and appointments can be added, updated, and deleted.
- Customer IDs are auto-generated, and first-level division (i.e., states, provinces) and country data are collected using separate combo boxes.
- When updating a customer, the customer data auto-populates 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 user’s
selection of a country (e.g., when choosing the U.S., filter so it only shows states).
- All of the original customer information is displayed on the update form.
- 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 is displayed.
- 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 the
local time zone.
- All of the appointment fields can be updated except Appointment_ID, which must be
disabled.
Code to implement input validation and logical error check to prevent each of the following
changes when adding or updating information; displays a custom message specific for each
error check in the user interface:
- 1 Scheduling an appointment outside of business hours is defined as 8:00 a.m. to 10:00 p.m. EST, including weekends.
- 2 Scheduling overlapping appointments for customers.
- 3 Entering an incorrect username and password
- Code to provide an alert when there is an appointment within 15 minutes of the user’s
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,
a custom message is displayed in the user interface indicating there are no upcoming appointments.
-
AT LEAST Two different lambda expressions to improve the code.
- 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.
Opinion:
project took me some time to finish; however, it was easy to get it done. I already had some experience using Scene Builder(create a GUI)
and coding in Java. The most difficult requirement was implementing the date/time functionalities.
Since this was my first project using data/time APIs, it was hard to figure out how to convert my
local time to the user's local time. I needed to get the location of the user and convert the local
time to UTC and then to the user's local time. Once I understood the process, it was just a matter of
time I got it done. Another requirement that gave me a hard time was the overlap issue. I had created
code that could detect if the user accidentally scheduled an appointment that overlaps with other
appointments. Solving these problems was tough but that's what makes it enjoyable.