package com.example.scheduler_server; import java.sql.*; import java.util.Locale; /* Name: Staff Description: Responsible for sending queries and receiving responses from the database that deal with the Employee table. */ public class Staff { // Object that facilitates the connection to the database private final Connection dbConnection; /* Name: Staff Constructor Parameters: None Description: Establishes connections to the local database. If running on a different computer make sure that the port number (replace '3306'), database name (replace 'ScheduleApp'), user, and password are set correctly. Return: Staff Object */ protected Staff(Connection c) { this.dbConnection = c; } /* Name: addEmployee Parameters: String firstName: First name of the employee, String lastName: Last name of the employee . Description: Adds an employee by querying the database. Also, assigns a unique ID. Return: String newEmployee: If the employee was added successfully, then it returns their new details, else returns an empty string. */ protected String addEmployee(String firstName, String lastName, String isManager, String email, String phoneNumber, float wage){ System.out.println(firstName + " " + lastName + " " + isManager + " " + email + " " + phoneNumber + " " + wage); String newEmployee = ""; try { Statement myStatement = dbConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); myStatement.executeUpdate("insert into Employees (first_name,last_name,isManager,email,phoneNumber,wage)" + " values ('" + firstName + "','" + lastName + "'," + isManager + ",'" + email + "','" + phoneNumber + "'," + wage + ")"); ResultSet myRs = myStatement.executeQuery("select * from Employees where first_name='" + firstName + "' and last_name='" + lastName + "'"); if (myRs.last()) { newEmployee = myRs.getString("employee_ID") + "," + myRs.getString("first_name") + "," + myRs.getString("last_name") + "," + myRs.getString("isManager") + "," + myRs.getString("email") + "," + myRs.getString("phoneNumber") + "," + myRs.getString("wage") + ", "; } } catch (Exception exception) { exception.printStackTrace(); return newEmployee; } System.out.println("Employee Added"); return newEmployee; } /* Name: removeEmployee Parameters: int ID: The employees unique ID. Description: Removes the employee with the same ID by querying the database. Return: none */ protected int removeEmployee(int ID) { try { Statement myStatement = dbConnection.createStatement(); myStatement.executeUpdate("delete from Employees where employee_id = " + ID); } catch (Exception exception) { exception.printStackTrace(); return -1; } System.out.println("Employee Removed"); return ID; } protected String addPosition(int ID, String position) { try { System.out.println(ID + " " + position); Statement myStatement = dbConnection.createStatement(); ResultSet myRs = myStatement.executeQuery("select positions from Employees where employee_ID=" + ID); myRs.next(); if (myRs.getString("positions").isEmpty()) { myStatement.executeUpdate("update Employees set positions='" + position + "' where employee_ID = " + ID); } else { myStatement.executeUpdate("update Employees set positions=concat(positions,'." + position + "') where employee_ID = " + ID); } } catch (Exception exception) { exception.printStackTrace(); return ""; } return ID + "/" + position; } protected String removePosition(int ID, String position) { String removedPosition = ""; StringBuilder newPositions = new StringBuilder(); try { Statement myStatement = dbConnection.createStatement(); ResultSet myRs = myStatement.executeQuery("select positions from Employees where employee_ID=" + ID); myRs.next(); for (String s : myRs.getString("positions").split("\\.")) { if (!s.equalsIgnoreCase(position)) { if (newPositions.isEmpty()) { newPositions.append(s); } else { newPositions.append(".").append(s); } } else { removedPosition = ID + "/" + position; } } myStatement.executeUpdate("update Employees set positions='" + newPositions + "' where employee_ID = " + ID); } catch (Exception exception) { exception.printStackTrace(); return removedPosition; } return removedPosition; } protected void removePositionALLEmployee(String position) { try { String positionLowerCase = position.toLowerCase(Locale.ROOT); Statement myStatement = dbConnection.createStatement(); ResultSet myRs = myStatement.executeQuery("select * from Employees"); while (myRs.next()) { removePosition(Integer.parseInt(myRs.getString("employee_ID")), positionLowerCase); } } catch (Exception exception) { exception.printStackTrace(); } } /* Name: printEmployees Parameters: none Description: prints the id, and names of each employee Return: none */ protected String allEmployees(){ StringBuilder response = new StringBuilder("allEmployees"); try { Statement myStatement = dbConnection.createStatement(); ResultSet myRs = myStatement.executeQuery("select * from Employees"); while (myRs.next()) { response.append("/").append(myRs.getString("employee_ID")).append(",") .append(myRs.getString("first_name")).append(",") .append(myRs.getString("last_name")).append(",") .append(myRs.getString("isManager")).append(",") .append(myRs.getString("email")).append(",") .append(myRs.getString("phoneNumber")).append(",") .append(myRs.getString("wage")).append(",") .append(myRs.getString("positions")); } } catch (Exception exception) { exception.printStackTrace(); return "Error retrieving employees from database"; } return response.toString(); } }