From 582961bb827e40aff680771817e7ca4b565416cb Mon Sep 17 00:00:00 2001 From: Jayden Andrews Date: Fri, 27 Feb 2026 15:39:06 -0500 Subject: [PATCH 01/12] Initial commit --- src/main/java/org/codedifferently/MaintenanceRequest.java | 4 ++++ src/main/java/org/codedifferently/MaintenanceTracker.java | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 src/main/java/org/codedifferently/MaintenanceRequest.java create mode 100644 src/main/java/org/codedifferently/MaintenanceTracker.java diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java new file mode 100644 index 0000000..c36e5bc --- /dev/null +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -0,0 +1,4 @@ +package org.codedifferently; + +public class MaintenanceRequest { +} diff --git a/src/main/java/org/codedifferently/MaintenanceTracker.java b/src/main/java/org/codedifferently/MaintenanceTracker.java new file mode 100644 index 0000000..cf1bf8c --- /dev/null +++ b/src/main/java/org/codedifferently/MaintenanceTracker.java @@ -0,0 +1,4 @@ +package org.codedifferently; + +public class MaintenanceTracker { +} From ec5bd4c46cd853fb9f3717afda806d834ed5b41a Mon Sep 17 00:00:00 2001 From: Jayden Andrews Date: Sat, 28 Feb 2026 12:24:48 -0500 Subject: [PATCH 02/12] Implemented skeleton of Maintenance Tracker --- .idea/misc.xml | 2 +- src/main/java/org/codedifferently/Main.java | 12 +- .../codedifferently/MaintenanceOffice.java | 4 + .../codedifferently/MaintenanceRequest.java | 125 ++++++++++++++++++ .../codedifferently/MaintenanceTracker.java | 25 ++++ 5 files changed, 158 insertions(+), 10 deletions(-) create mode 100644 src/main/java/org/codedifferently/MaintenanceOffice.java diff --git a/.idea/misc.xml b/.idea/misc.xml index fdc35ea..efb1e13 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java index 435139b..f22885d 100644 --- a/src/main/java/org/codedifferently/Main.java +++ b/src/main/java/org/codedifferently/Main.java @@ -1,17 +1,11 @@ package org.codedifferently; +import java.util.Scanner; + //TIP To Run code, press or // click the icon in the gutter. public class Main { public static void main(String[] args) { - //TIP Press with your caret at the highlighted text - // to see how IntelliJ IDEA suggests fixing it. - System.out.printf("Hello and welcome!"); - - for (int i = 1; i <= 5; i++) { - //TIP Press to start debugging your code. We have set one breakpoint - // for you, but you can always add more by pressing . - System.out.println("i = " + i); - } + MaintenanceTracker.displayMenu(new Scanner(System.in)); } } \ No newline at end of file diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java new file mode 100644 index 0000000..b78e1b0 --- /dev/null +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -0,0 +1,4 @@ +package org.codedifferently; + +public class MaintenanceOffice { +} diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index c36e5bc..352c62e 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -1,4 +1,129 @@ package org.codedifferently; +import java.util.Scanner; + public class MaintenanceRequest { + private String tenantName; + private int apartmentNumber; + private String issueType; + private int severity; + private String status; + + public MaintenanceRequest(String tenantName, int apartmentNumber, String issueType, int severity) { + this.tenantName = tenantName; + this.apartmentNumber = apartmentNumber; + this.issueType = issueType; + this.severity = severity; + this.status = "NEW"; + } + + public String getTenantName() { + return tenantName; + } + + public void setTenantName(String tenantName) { + this.tenantName = tenantName; + } + + public int getApartmentNumber() { + return apartmentNumber; + } + + public void setApartmentNumber(int apartmentNumber) { + this.apartmentNumber = apartmentNumber; + } + + public String getIssueType() { + return issueType; + } + + public void setIssueType(String issueType) { + this.issueType = issueType; + } + + public int getSeverity() { + return severity; + } + + public void setSeverity(int severity) { + this.severity = severity; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public MaintenanceRequest createRequest(Scanner sc) { + String name = validateName(sc); + + System.out.print("Enter an apartment number: "); + int apt = sc.nextInt(); + sc.nextLine(); + + System.out.print("Enter issue type: "); + String type = sc.nextLine(); + + System.out.print("Rate it's severity on a scale from 1-5"); + int severity = validateSeverity(sc); + + MaintenanceRequest ticket = new MaintenanceRequest(name, apt, type, severity); + + System.out.print("Maintenance request created.\n"); + ticket.toString(); + + if (severity >= 4 && type.equalsIgnoreCase("Electrical")) { + System.out.println("WARNING! THIS REQUEST REQUIRES URGENT ATTENTION"); + } + return ticket; + } + + + @Override + public String toString() { + System.out.println("Maintenance Ticket"); + System.out.println("Name: " + this.tenantName); + System.out.println("Apartment Number: " + this.apartmentNumber); + System.out.println("Issue Type: " + this.issueType); + System.out.println("Severity: " + this.severity); + return null; + } + + // Validates that the user's name input contains only permitted characters. + public static String validateName(Scanner sc) { + // Repeats continuously until valid input is provided. + while (true) { + // Prompts the user to enter their name. + System.out.print("\nEnter a name: "); + String name = sc.nextLine(); + + // Checks whether the input matches the required name pattern. + // Allows letters and optionally single spaces, hyphens, or apostrophes between words. + if (name.matches("^[a-zA-Z]+([ '-][a-zA-Z]+)*$")) { + // Returns the validated name if it meets the pattern requirements. + return name; + } else { + // Displays an error message if validation fails. + System.out.println("\nInvalid name. Please use letters only."); + } + } + } + + public static int validateSeverity(Scanner sc) { + // Repeats continuously until valid input is provided. + while (true) { + // Prompts the user to enter their name. + System.out.print("\nRate it's severity on a scale from 1-5: "); + int severity = sc.nextInt(); + + if (severity >= 1 && severity <= 5) { + return severity; + } else { + System.out.println("\nInvalid severity level. Please provide a number on a 1-5 scale."); + } + } + } } diff --git a/src/main/java/org/codedifferently/MaintenanceTracker.java b/src/main/java/org/codedifferently/MaintenanceTracker.java index cf1bf8c..2766c97 100644 --- a/src/main/java/org/codedifferently/MaintenanceTracker.java +++ b/src/main/java/org/codedifferently/MaintenanceTracker.java @@ -1,4 +1,29 @@ package org.codedifferently; +import java.util.Scanner; + public class MaintenanceTracker { + public static void displayMenu(Scanner sc) { + String input; + do { + // Displays the main menu options to the user. + System.out.println("\n=== Maintenance Management Menu ==="); + System.out.println("Type \"Enter\" to make a new request"); + System.out.println("Type \"Done\" to exit out"); + System.out.print("Selection: "); + + // Validates numeric input before processing. + input = sc.nextLine(); + + switch (input) { + case "Enter": + break; + case "Done": + break; + default: + System.out.println("\nPlease select a valid option."); + } + // Stopping condition. Program will exit when the user inputs 0. + } while (!(input.equals("Done"))); + } } From 89dd054b0374bc04b6a74c67e317da01b1b3ea93 Mon Sep 17 00:00:00 2001 From: Jayden Andrews Date: Sat, 28 Feb 2026 14:24:57 -0500 Subject: [PATCH 03/12] Implemented most of level 3 --- .../codedifferently/MaintenanceOffice.java | 42 +++++++++++++++++++ .../codedifferently/MaintenanceRequest.java | 20 ++++++--- .../codedifferently/MaintenanceTracker.java | 9 ++++ src/main/java/org/codedifferently/Status.java | 7 ++++ 4 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/codedifferently/Status.java diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index b78e1b0..a16a82a 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -1,4 +1,46 @@ package org.codedifferently; +import java.util.ArrayList; + public class MaintenanceOffice { + private ArrayList requests; + + public MaintenanceOffice() { + requests = new ArrayList<>(); + } + + public void assignTechnician(MaintenanceRequest request) { + if (request.getSeverity() >= 4) { + request.setAssignedTechnician("Senior Technician"); + } else { + request.setAssignedTechnician("Junior Technician"); + } + request.setStatus(Status.IN_PROGRESS); + } + + public void addRequest(MaintenanceRequest request) { + requests.add(request); + } + + public void updateStatus(MaintenanceRequest request, Status newStatus) { + if (newStatus == Status.NEW || + newStatus == Status.IN_PROGRESS || + newStatus == Status.DONE) { + + request.setStatus(newStatus); + } + } + + public void closeRequest(MaintenanceRequest request) { + if (request.getStatus() == Status.DONE) { + requests.remove(request); + System.out.println("Request closed successfully."); + } else { + System.out.println("Cannot close request unless it is DONE."); + } + } + + public ArrayList getRequests() { + return requests; + } } diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index 352c62e..76077ae 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -7,14 +7,15 @@ public class MaintenanceRequest { private int apartmentNumber; private String issueType; private int severity; - private String status; + private Status status; + private String assignedTechnician; public MaintenanceRequest(String tenantName, int apartmentNumber, String issueType, int severity) { this.tenantName = tenantName; this.apartmentNumber = apartmentNumber; this.issueType = issueType; this.severity = severity; - this.status = "NEW"; + this.status = Status.NEW; } public String getTenantName() { @@ -49,15 +50,15 @@ public void setSeverity(int severity) { this.severity = severity; } - public String getStatus() { + public Status getStatus() { return status; } - public void setStatus(String status) { + public void setStatus(Status status) { this.status = status; } - public MaintenanceRequest createRequest(Scanner sc) { + public static MaintenanceRequest createRequest(Scanner sc) { String name = validateName(sc); System.out.print("Enter an apartment number: "); @@ -78,6 +79,7 @@ public MaintenanceRequest createRequest(Scanner sc) { if (severity >= 4 && type.equalsIgnoreCase("Electrical")) { System.out.println("WARNING! THIS REQUEST REQUIRES URGENT ATTENTION"); } + return ticket; } @@ -126,4 +128,12 @@ public static int validateSeverity(Scanner sc) { } } } + + public String getAssignedTechnician() { + return assignedTechnician; + } + + public void setAssignedTechnician(String assignedTechnician) { + this.assignedTechnician = assignedTechnician; + } } diff --git a/src/main/java/org/codedifferently/MaintenanceTracker.java b/src/main/java/org/codedifferently/MaintenanceTracker.java index 2766c97..44d5d85 100644 --- a/src/main/java/org/codedifferently/MaintenanceTracker.java +++ b/src/main/java/org/codedifferently/MaintenanceTracker.java @@ -1,8 +1,11 @@ package org.codedifferently; +import java.util.ArrayList; import java.util.Scanner; public class MaintenanceTracker { + private static MaintenanceOffice office = new MaintenanceOffice(); + public static void displayMenu(Scanner sc) { String input; do { @@ -17,6 +20,11 @@ public static void displayMenu(Scanner sc) { switch (input) { case "Enter": + MaintenanceRequest request = MaintenanceRequest.createRequest(sc); + office.addRequest(request); + if (request.getSeverity() == 5) { + office.assignTechnician(request); + } break; case "Done": break; @@ -25,5 +33,6 @@ public static void displayMenu(Scanner sc) { } // Stopping condition. Program will exit when the user inputs 0. } while (!(input.equals("Done"))); + sc.close(); } } diff --git a/src/main/java/org/codedifferently/Status.java b/src/main/java/org/codedifferently/Status.java new file mode 100644 index 0000000..98b186b --- /dev/null +++ b/src/main/java/org/codedifferently/Status.java @@ -0,0 +1,7 @@ +package org.codedifferently; + +public enum Status { + NEW, + IN_PROGRESS, + DONE +} From aa1c1467f80fc1115304890bb3c6d075cb59de33 Mon Sep 17 00:00:00 2001 From: Jayden Andrews Date: Sat, 28 Feb 2026 15:00:06 -0500 Subject: [PATCH 04/12] Made mode progress on level 3 --- .../codedifferently/MaintenanceOffice.java | 32 ++++++++++++++++++- .../codedifferently/MaintenanceRequest.java | 1 + .../codedifferently/MaintenanceTracker.java | 13 ++++++-- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index a16a82a..ba1b3bf 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -1,9 +1,10 @@ package org.codedifferently; import java.util.ArrayList; +import java.util.Scanner; public class MaintenanceOffice { - private ArrayList requests; + private static ArrayList requests; public MaintenanceOffice() { requests = new ArrayList<>(); @@ -31,6 +32,35 @@ public void updateStatus(MaintenanceRequest request, Status newStatus) { } } + public MaintenanceRequest searchRequest(int aptNum, Scanner sc) { + ArrayList requestsFound = new ArrayList<>(); + for (MaintenanceRequest request : requests) { + if (request.getApartmentNumber() == aptNum) { + requestsFound.add(request); + } + } + // Returns null if the customer is not found. + if (requestsFound.isEmpty()) { + return null; + // Returns the customer if there are no duplicate phone numbers. + } else if (requestsFound.size() == 1) { + return requestsFound.getFirst(); + // Prompts the user to select by customer id since more than one customer used the same phone number. + } else { + System.out.println("\nMultiple requests found: " + requestsFound + "\n"); + while(true) { + System.out.print("Enter tenant name: "); + String name = sc.nextLine(); + for (MaintenanceRequest request : requests) { + if (request.getTenantName().equalsIgnoreCase(name)) { + return request; + } + } + System.out.println("Invalid tenant name. Try again.\n"); + } + } + } + public void closeRequest(MaintenanceRequest request) { if (request.getStatus() == Status.DONE) { requests.remove(request); diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index 76077ae..3398c68 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -1,5 +1,6 @@ package org.codedifferently; +import java.util.ArrayList; import java.util.Scanner; public class MaintenanceRequest { diff --git a/src/main/java/org/codedifferently/MaintenanceTracker.java b/src/main/java/org/codedifferently/MaintenanceTracker.java index 44d5d85..eb32e0b 100644 --- a/src/main/java/org/codedifferently/MaintenanceTracker.java +++ b/src/main/java/org/codedifferently/MaintenanceTracker.java @@ -11,8 +11,11 @@ public static void displayMenu(Scanner sc) { do { // Displays the main menu options to the user. System.out.println("\n=== Maintenance Management Menu ==="); - System.out.println("Type \"Enter\" to make a new request"); - System.out.println("Type \"Done\" to exit out"); + System.out.println("Type \"Enter\" to make a new request."); + System.out.println("Type \"Assign\" to assign a technician."); + System.out.println("Type \"Update\" to get a status update on all requests."); + System.out.println("Type \"Report\" to print a daily report."); + System.out.println("Type \"Done\" to exit out."); System.out.print("Selection: "); // Validates numeric input before processing. @@ -26,6 +29,12 @@ public static void displayMenu(Scanner sc) { office.assignTechnician(request); } break; + case "Assign": + System.out.print("Enter an apt number: "); + int aptNum = sc.nextInt(); + sc.nextLine(); + MaintenanceRequest toAssign = office.searchRequest(aptNum, sc); + office.assignTechnician(toAssign); case "Done": break; default: From ff13c3a53f36a22a25539fe168408bd00cfbbfed Mon Sep 17 00:00:00 2001 From: Jayden Andrews Date: Sat, 28 Feb 2026 15:26:41 -0500 Subject: [PATCH 05/12] Did initial implementation of get ProgressUpdate --- src/main/java/org/codedifferently/Main.java | 2 -- .../codedifferently/MaintenanceOffice.java | 25 ++++++++++++------- .../codedifferently/MaintenanceRequest.java | 20 +++++++++++++++ .../codedifferently/MaintenanceTracker.java | 21 +++++++++++++--- 4 files changed, 53 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java index f22885d..6641b75 100644 --- a/src/main/java/org/codedifferently/Main.java +++ b/src/main/java/org/codedifferently/Main.java @@ -2,8 +2,6 @@ import java.util.Scanner; -//TIP To Run code, press or -// click the icon in the gutter. public class Main { public static void main(String[] args) { MaintenanceTracker.displayMenu(new Scanner(System.in)); diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index ba1b3bf..9d2c82b 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -23,12 +23,11 @@ public void addRequest(MaintenanceRequest request) { requests.add(request); } - public void updateStatus(MaintenanceRequest request, Status newStatus) { - if (newStatus == Status.NEW || - newStatus == Status.IN_PROGRESS || - newStatus == Status.DONE) { - - request.setStatus(newStatus); + public void getProgressUpdate() { + for (MaintenanceRequest request : requests) { + if (request.getStatus() == Status.IN_PROGRESS) { + request.setStatus(Status.DONE); + } } } @@ -49,10 +48,10 @@ public MaintenanceRequest searchRequest(int aptNum, Scanner sc) { } else { System.out.println("\nMultiple requests found: " + requestsFound + "\n"); while(true) { - System.out.print("Enter tenant name: "); - String name = sc.nextLine(); + System.out.print("Enter request id: "); + int requestId = sc.nextInt(); for (MaintenanceRequest request : requests) { - if (request.getTenantName().equalsIgnoreCase(name)) { + if (request.getRequestId() == requestId) { return request; } } @@ -70,6 +69,14 @@ public void closeRequest(MaintenanceRequest request) { } } + public void passTime() { + + } + + public void viewRequests() { + System.out.println(requests); + } + public ArrayList getRequests() { return requests; } diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index 3398c68..a63fda0 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -4,12 +4,14 @@ import java.util.Scanner; public class MaintenanceRequest { + private static int count = 1; private String tenantName; private int apartmentNumber; private String issueType; private int severity; private Status status; private String assignedTechnician; + private int requestId; public MaintenanceRequest(String tenantName, int apartmentNumber, String issueType, int severity) { this.tenantName = tenantName; @@ -17,6 +19,7 @@ public MaintenanceRequest(String tenantName, int apartmentNumber, String issueTy this.issueType = issueType; this.severity = severity; this.status = Status.NEW; + this.requestId = count; } public String getTenantName() { @@ -59,6 +62,22 @@ public void setStatus(Status status) { this.status = status; } + public int getRequestId() { + return requestId; + } + + public void setRequestId(int requestId) { + this.requestId = requestId; + } + + public static int getCount() { + return count; + } + + public static void setCount(int count) { + MaintenanceRequest.count = count; + } + public static MaintenanceRequest createRequest(Scanner sc) { String name = validateName(sc); @@ -81,6 +100,7 @@ public static MaintenanceRequest createRequest(Scanner sc) { System.out.println("WARNING! THIS REQUEST REQUIRES URGENT ATTENTION"); } + setCount(count + 1); return ticket; } diff --git a/src/main/java/org/codedifferently/MaintenanceTracker.java b/src/main/java/org/codedifferently/MaintenanceTracker.java index eb32e0b..cca1a83 100644 --- a/src/main/java/org/codedifferently/MaintenanceTracker.java +++ b/src/main/java/org/codedifferently/MaintenanceTracker.java @@ -1,6 +1,5 @@ package org.codedifferently; -import java.util.ArrayList; import java.util.Scanner; public class MaintenanceTracker { @@ -8,19 +7,19 @@ public class MaintenanceTracker { public static void displayMenu(Scanner sc) { String input; + int aptNum; do { // Displays the main menu options to the user. System.out.println("\n=== Maintenance Management Menu ==="); System.out.println("Type \"Enter\" to make a new request."); System.out.println("Type \"Assign\" to assign a technician."); - System.out.println("Type \"Update\" to get a status update on all requests."); + System.out.println("Type \"Status\" to get a status update on all requests."); System.out.println("Type \"Report\" to print a daily report."); System.out.println("Type \"Done\" to exit out."); System.out.print("Selection: "); // Validates numeric input before processing. input = sc.nextLine(); - switch (input) { case "Enter": MaintenanceRequest request = MaintenanceRequest.createRequest(sc); @@ -29,12 +28,26 @@ public static void displayMenu(Scanner sc) { office.assignTechnician(request); } break; + case "View": + office.viewRequests(); + break; case "Assign": System.out.print("Enter an apt number: "); - int aptNum = sc.nextInt(); + aptNum = sc.nextInt(); sc.nextLine(); MaintenanceRequest toAssign = office.searchRequest(aptNum, sc); office.assignTechnician(toAssign); + case "Status": + office.getProgressUpdate(); + break; + case "Close": + System.out.print("Enter an apt number: "); + aptNum = sc.nextInt(); + MaintenanceRequest toClose = office.searchRequest(aptNum, sc); + office.closeRequest(toClose); + break; + case "Report": + break; case "Done": break; default: From 46015b598412a25db755f65c2dfc674e795989d2 Mon Sep 17 00:00:00 2001 From: Jayden Andrews Date: Sat, 28 Feb 2026 16:08:54 -0500 Subject: [PATCH 06/12] Implemented most of level 4 --- .../codedifferently/MaintenanceOffice.java | 29 +++++++++++++++---- .../codedifferently/MaintenanceRequest.java | 21 ++++++++------ .../java/org/codedifferently/Severity.java | 7 +++++ 3 files changed, 43 insertions(+), 14 deletions(-) create mode 100644 src/main/java/org/codedifferently/Severity.java diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index 9d2c82b..7326872 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -5,13 +5,17 @@ public class MaintenanceOffice { private static ArrayList requests; + private static int closures = 0; + private int lowSeverity = 0; + private int medSeverity = 0; + private int highSeverity = 0; public MaintenanceOffice() { requests = new ArrayList<>(); } public void assignTechnician(MaintenanceRequest request) { - if (request.getSeverity() >= 4) { + if (request.getSeverity() == Severity.HIGH) { request.setAssignedTechnician("Senior Technician"); } else { request.setAssignedTechnician("Junior Technician"); @@ -21,6 +25,13 @@ public void assignTechnician(MaintenanceRequest request) { public void addRequest(MaintenanceRequest request) { requests.add(request); + if (request.getSeverity() == Severity.LOW) { + lowSeverity++; + } else if (request.getSeverity() == Severity.MEDIUM) { + medSeverity++; + } else { + highSeverity++; + } } public void getProgressUpdate() { @@ -60,19 +71,27 @@ public MaintenanceRequest searchRequest(int aptNum, Scanner sc) { } } + public void printDailyReport() { + System.out.println("=== DAILY REPORT ==="); + System.out.println("Total Requests: " + MaintenanceRequest.getCount()); + System.out.println("Number of Open Requests Currently Open: " + requests.size()); + System.out.println("Number of Closed Requests: " + closures); + + System.out.println("\nNumber of Low Severity Cases: " + lowSeverity); + System.out.println("Number of Medium Severity Cases: " + medSeverity); + System.out.println("Number of High Severity Cases: " + highSeverity); + } + public void closeRequest(MaintenanceRequest request) { if (request.getStatus() == Status.DONE) { requests.remove(request); System.out.println("Request closed successfully."); + closures++; } else { System.out.println("Cannot close request unless it is DONE."); } } - public void passTime() { - - } - public void viewRequests() { System.out.println(requests); } diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index a63fda0..f522b14 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -4,11 +4,12 @@ import java.util.Scanner; public class MaintenanceRequest { - private static int count = 1; + private static int count = 0; + private String tenantName; private int apartmentNumber; private String issueType; - private int severity; + private Severity severity; private Status status; private String assignedTechnician; private int requestId; @@ -17,9 +18,15 @@ public MaintenanceRequest(String tenantName, int apartmentNumber, String issueTy this.tenantName = tenantName; this.apartmentNumber = apartmentNumber; this.issueType = issueType; - this.severity = severity; + if (severity == 1 || severity == 2) { + this.severity = Severity.LOW; + } else if (severity == 3) { + this.severity = Severity.MEDIUM; + } else { + this.severity = Severity.HIGH; + } this.status = Status.NEW; - this.requestId = count; + this.requestId = count + 1; } public String getTenantName() { @@ -46,14 +53,10 @@ public void setIssueType(String issueType) { this.issueType = issueType; } - public int getSeverity() { + public Severity getSeverity() { return severity; } - public void setSeverity(int severity) { - this.severity = severity; - } - public Status getStatus() { return status; } diff --git a/src/main/java/org/codedifferently/Severity.java b/src/main/java/org/codedifferently/Severity.java new file mode 100644 index 0000000..7daa6d4 --- /dev/null +++ b/src/main/java/org/codedifferently/Severity.java @@ -0,0 +1,7 @@ +package org.codedifferently; + +public enum Severity { + LOW, + MEDIUM, + HIGH +} From 25dbcccd2638eb348c5bd869cc3e9c566053b33e Mon Sep 17 00:00:00 2001 From: Jayden Andrews Date: Sat, 28 Feb 2026 16:35:48 -0500 Subject: [PATCH 07/12] Finished initial implementation. Still need to debug --- .../java/org/codedifferently/IssueType.java | 8 ++++ .../codedifferently/MaintenanceOffice.java | 37 +++++++++++++++++ .../codedifferently/MaintenanceRequest.java | 40 +++++++++++++------ 3 files changed, 72 insertions(+), 13 deletions(-) create mode 100644 src/main/java/org/codedifferently/IssueType.java diff --git a/src/main/java/org/codedifferently/IssueType.java b/src/main/java/org/codedifferently/IssueType.java new file mode 100644 index 0000000..e3ac3ae --- /dev/null +++ b/src/main/java/org/codedifferently/IssueType.java @@ -0,0 +1,8 @@ +package org.codedifferently; + +public enum IssueType { + ELECTRICAL, + PLUMBING, + HVAC, + APPLIANCE +} \ No newline at end of file diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index 7326872..5c243fd 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -6,10 +6,19 @@ public class MaintenanceOffice { private static ArrayList requests; private static int closures = 0; + private int lowSeverity = 0; private int medSeverity = 0; private int highSeverity = 0; + private int electrical = 0; + private int hvac = 0; + private int plumbing = 0; + private int appliance = 0; + + int mostCommonCount = 0; + IssueType mostCommonType; + public MaintenanceOffice() { requests = new ArrayList<>(); } @@ -32,6 +41,32 @@ public void addRequest(MaintenanceRequest request) { } else { highSeverity++; } + + if (request.getIssueType() == IssueType.ELECTRICAL) { + electrical++; + if (electrical > mostCommonCount) { + mostCommonCount = electrical; + mostCommonType = IssueType.ELECTRICAL; + } + } else if (request.getIssueType() == IssueType.HVAC) { + hvac++; + if (hvac > mostCommonCount) { + mostCommonCount = hvac; + mostCommonType = IssueType.HVAC; + } + } else if (request.getIssueType() == IssueType.PLUMBING) { + plumbing++; + if (plumbing > mostCommonCount) { + mostCommonCount = plumbing; + mostCommonType = IssueType.PLUMBING; + } + } else { + appliance++; + if (appliance > mostCommonCount) { + mostCommonCount = appliance; + mostCommonType = IssueType.APPLIANCE; + } + } } public void getProgressUpdate() { @@ -80,6 +115,8 @@ public void printDailyReport() { System.out.println("\nNumber of Low Severity Cases: " + lowSeverity); System.out.println("Number of Medium Severity Cases: " + medSeverity); System.out.println("Number of High Severity Cases: " + highSeverity); + + System.out.println("Most common issue: "); } public void closeRequest(MaintenanceRequest request) { diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index f522b14..6f4876d 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -8,13 +8,13 @@ public class MaintenanceRequest { private String tenantName; private int apartmentNumber; - private String issueType; + private IssueType issueType; private Severity severity; private Status status; private String assignedTechnician; private int requestId; - public MaintenanceRequest(String tenantName, int apartmentNumber, String issueType, int severity) { + public MaintenanceRequest(String tenantName, int apartmentNumber, IssueType issueType, int severity) { this.tenantName = tenantName; this.apartmentNumber = apartmentNumber; this.issueType = issueType; @@ -45,13 +45,10 @@ public void setApartmentNumber(int apartmentNumber) { this.apartmentNumber = apartmentNumber; } - public String getIssueType() { + public IssueType getIssueType() { return issueType; } - public void setIssueType(String issueType) { - this.issueType = issueType; - } public Severity getSeverity() { return severity; @@ -69,10 +66,6 @@ public int getRequestId() { return requestId; } - public void setRequestId(int requestId) { - this.requestId = requestId; - } - public static int getCount() { return count; } @@ -88,8 +81,7 @@ public static MaintenanceRequest createRequest(Scanner sc) { int apt = sc.nextInt(); sc.nextLine(); - System.out.print("Enter issue type: "); - String type = sc.nextLine(); + IssueType type = validateIssueType(sc); System.out.print("Rate it's severity on a scale from 1-5"); int severity = validateSeverity(sc); @@ -99,7 +91,7 @@ public static MaintenanceRequest createRequest(Scanner sc) { System.out.print("Maintenance request created.\n"); ticket.toString(); - if (severity >= 4 && type.equalsIgnoreCase("Electrical")) { + if (severity >= 4 && type == IssueType.ELECTRICAL) { System.out.println("WARNING! THIS REQUEST REQUIRES URGENT ATTENTION"); } @@ -153,6 +145,28 @@ public static int validateSeverity(Scanner sc) { } } + public static IssueType validateIssueType(Scanner sc) { + // Repeats continuously until valid input is provided. + while (true) { + // Prompts the user to enter their name. + System.out.print("Enter issue type: "); + String issueType = sc.nextLine(); + + if (issueType.equalsIgnoreCase("Electrical")) { + return IssueType.ELECTRICAL; + } else if (issueType.equalsIgnoreCase("HVAC")) { + return IssueType.HVAC; + } else if (issueType.equalsIgnoreCase("PLUMBING")) { + return IssueType.PLUMBING; + } else if (issueType.equalsIgnoreCase("APPLIANCE")) { + return IssueType.APPLIANCE; + } else { + System.out.println("\nInvalid issue. We only handle Electrical," + + " HVAC, Plumbing, and Appliance related inquiries"); + } + } + } + public String getAssignedTechnician() { return assignedTechnician; } From 739a818aba7112836e72eb572d757da85d59d9d8 Mon Sep 17 00:00:00 2001 From: Jayden Andrews Date: Sun, 1 Mar 2026 13:49:17 -0500 Subject: [PATCH 08/12] Debugged Enter and View cases --- pom.xml | 8 ++ .../codedifferently/MaintenanceOffice.java | 1 + .../codedifferently/MaintenanceRequest.java | 81 +++++++++++++------ .../codedifferently/MaintenanceTracker.java | 3 +- 4 files changed, 66 insertions(+), 27 deletions(-) diff --git a/pom.xml b/pom.xml index fad9976..de5362c 100644 --- a/pom.xml +++ b/pom.xml @@ -13,5 +13,13 @@ 21 UTF-8 + + + junit + junit + RELEASE + test + + \ No newline at end of file diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index 5c243fd..7a8782d 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -130,6 +130,7 @@ public void closeRequest(MaintenanceRequest request) { } public void viewRequests() { + System.out.println("\nActive Requests"); System.out.println(requests); } diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index 6f4876d..9329958 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -20,7 +20,7 @@ public MaintenanceRequest(String tenantName, int apartmentNumber, IssueType issu this.issueType = issueType; if (severity == 1 || severity == 2) { this.severity = Severity.LOW; - } else if (severity == 3) { + } else if (severity == 3 || severity == 4) { this.severity = Severity.MEDIUM; } else { this.severity = Severity.HIGH; @@ -76,20 +76,19 @@ public static void setCount(int count) { public static MaintenanceRequest createRequest(Scanner sc) { String name = validateName(sc); - - System.out.print("Enter an apartment number: "); - int apt = sc.nextInt(); - sc.nextLine(); - + int apt = validateAptNum(sc); IssueType type = validateIssueType(sc); - - System.out.print("Rate it's severity on a scale from 1-5"); int severity = validateSeverity(sc); MaintenanceRequest ticket = new MaintenanceRequest(name, apt, type, severity); - System.out.print("Maintenance request created.\n"); - ticket.toString(); + System.out.print("\nMaintenance request created.\n"); + + System.out.println("Maintenance Request"); + System.out.println("Name: " + ticket.getTenantName()); + System.out.println("Apartment Number: " + ticket.getApartmentNumber()); + System.out.println("Issue Type: " + ticket.getIssueType()); + System.out.println("Severity: " + ticket.getSeverity()); if (severity >= 4 && type == IssueType.ELECTRICAL) { System.out.println("WARNING! THIS REQUEST REQUIRES URGENT ATTENTION"); @@ -102,12 +101,11 @@ public static MaintenanceRequest createRequest(Scanner sc) { @Override public String toString() { - System.out.println("Maintenance Ticket"); - System.out.println("Name: " + this.tenantName); - System.out.println("Apartment Number: " + this.apartmentNumber); - System.out.println("Issue Type: " + this.issueType); - System.out.println("Severity: " + this.severity); - return null; + return "[Name: " + this.tenantName + + ", Apartment Number: " + this.apartmentNumber + + ", Issue Type: " + this.issueType + + ", Severity: " + this.severity + + ", Status: " + this.getStatus() + "]\n"; } // Validates that the user's name input contains only permitted characters. @@ -130,17 +128,45 @@ public static String validateName(Scanner sc) { } } - public static int validateSeverity(Scanner sc) { + public static int validateAptNum(Scanner sc) { // Repeats continuously until valid input is provided. while (true) { - // Prompts the user to enter their name. - System.out.print("\nRate it's severity on a scale from 1-5: "); - int severity = sc.nextInt(); + // Prompts the user to enter a severity level. + System.out.print("Enter an apartment number: "); + // Captures the full line of user input. + String input = sc.nextLine(); + + try { + return Integer.parseInt(input); + } catch (NumberFormatException e) { + // Displays an error message if the input cannot be parsed as a number. + System.out.println("\nInvalid input. Please enter a number.\n"); + } + } + } - if (severity >= 1 && severity <= 5) { - return severity; - } else { - System.out.println("\nInvalid severity level. Please provide a number on a 1-5 scale."); + public static int validateSeverity(Scanner sc) { + // Repeats continuously until valid input is provided. + while (true) { + // Prompts the user to enter a severity level. + System.out.print("Rate its severity on a scale from 1-5: "); + // Captures the full line of user input. + String input = sc.nextLine(); + + try { + // Attempts to convert the input into an integer. + int severity = Integer.parseInt(input); + // Checks whether the integer falls within the valid range. + if (severity >= 1 && severity <= 5) { + // Returns the validated severity level. + return severity; + } else { + // Displays an error message if the number is outside the valid range. + System.out.println("\nInvalid input. Please enter a number from 1-5.\n"); + } + } catch (NumberFormatException e) { + // Displays an error message if the input cannot be parsed as a number. + System.out.println("\nInvalid input. Please enter a number from 1-5.\n"); } } } @@ -161,8 +187,11 @@ public static IssueType validateIssueType(Scanner sc) { } else if (issueType.equalsIgnoreCase("APPLIANCE")) { return IssueType.APPLIANCE; } else { - System.out.println("\nInvalid issue. We only handle Electrical," + - " HVAC, Plumbing, and Appliance related inquiries"); + System.out.println(""" + + Invalid issue type. We only handle Electrical,\ + HVAC, Plumbing, or Appliance related inquiries. + """); } } } diff --git a/src/main/java/org/codedifferently/MaintenanceTracker.java b/src/main/java/org/codedifferently/MaintenanceTracker.java index cca1a83..08b032b 100644 --- a/src/main/java/org/codedifferently/MaintenanceTracker.java +++ b/src/main/java/org/codedifferently/MaintenanceTracker.java @@ -12,6 +12,7 @@ public static void displayMenu(Scanner sc) { // Displays the main menu options to the user. System.out.println("\n=== Maintenance Management Menu ==="); System.out.println("Type \"Enter\" to make a new request."); + System.out.println("Type \"View\" to view all current requests."); System.out.println("Type \"Assign\" to assign a technician."); System.out.println("Type \"Status\" to get a status update on all requests."); System.out.println("Type \"Report\" to print a daily report."); @@ -24,7 +25,7 @@ public static void displayMenu(Scanner sc) { case "Enter": MaintenanceRequest request = MaintenanceRequest.createRequest(sc); office.addRequest(request); - if (request.getSeverity() == 5) { + if (request.getSeverity() == Severity.HIGH) { office.assignTechnician(request); } break; From db3be9026c179681eae7807aab7f3fe3d3aa5a66 Mon Sep 17 00:00:00 2001 From: Jayden Andrews Date: Sun, 1 Mar 2026 16:32:49 -0500 Subject: [PATCH 09/12] Did more debugging --- src/main/java/org/codedifferently/MaintenanceOffice.java | 7 +++++-- src/main/java/org/codedifferently/MaintenanceRequest.java | 5 ++++- src/main/java/org/codedifferently/MaintenanceTracker.java | 4 ++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index 7a8782d..ecc7c80 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -26,8 +26,10 @@ public MaintenanceOffice() { public void assignTechnician(MaintenanceRequest request) { if (request.getSeverity() == Severity.HIGH) { request.setAssignedTechnician("Senior Technician"); + System.out.println("Senior Technician assigned to request #" + request.getRequestId()); } else { request.setAssignedTechnician("Junior Technician"); + System.out.println("Junior Technician to request #" + request.getRequestId()); } request.setStatus(Status.IN_PROGRESS); } @@ -70,6 +72,7 @@ public void addRequest(MaintenanceRequest request) { } public void getProgressUpdate() { + System.out.println("\nReceiving progress report. Type \"View\" to see updates."); for (MaintenanceRequest request : requests) { if (request.getStatus() == Status.IN_PROGRESS) { request.setStatus(Status.DONE); @@ -96,6 +99,7 @@ public MaintenanceRequest searchRequest(int aptNum, Scanner sc) { while(true) { System.out.print("Enter request id: "); int requestId = sc.nextInt(); + sc.nextLine(); for (MaintenanceRequest request : requests) { if (request.getRequestId() == requestId) { return request; @@ -115,8 +119,7 @@ public void printDailyReport() { System.out.println("\nNumber of Low Severity Cases: " + lowSeverity); System.out.println("Number of Medium Severity Cases: " + medSeverity); System.out.println("Number of High Severity Cases: " + highSeverity); - - System.out.println("Most common issue: "); + System.out.println("\nMost Common Issue Type: " + mostCommonType); } public void closeRequest(MaintenanceRequest request) { diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index 9329958..d7fdbb3 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -27,6 +27,7 @@ public MaintenanceRequest(String tenantName, int apartmentNumber, IssueType issu } this.status = Status.NEW; this.requestId = count + 1; + this.assignedTechnician = "None"; } public String getTenantName() { @@ -102,10 +103,12 @@ public static MaintenanceRequest createRequest(Scanner sc) { @Override public String toString() { return "[Name: " + this.tenantName + + ", Request Id: " + this.requestId + ", Apartment Number: " + this.apartmentNumber + ", Issue Type: " + this.issueType + ", Severity: " + this.severity + - ", Status: " + this.getStatus() + "]\n"; + ", Status: " + this.getStatus() + + ", Technician: " + this.getAssignedTechnician() + "]\n"; } // Validates that the user's name input contains only permitted characters. diff --git a/src/main/java/org/codedifferently/MaintenanceTracker.java b/src/main/java/org/codedifferently/MaintenanceTracker.java index 08b032b..a9cff8e 100644 --- a/src/main/java/org/codedifferently/MaintenanceTracker.java +++ b/src/main/java/org/codedifferently/MaintenanceTracker.java @@ -15,6 +15,7 @@ public static void displayMenu(Scanner sc) { System.out.println("Type \"View\" to view all current requests."); System.out.println("Type \"Assign\" to assign a technician."); System.out.println("Type \"Status\" to get a status update on all requests."); + System.out.println("Type \"Close\" to close a request."); System.out.println("Type \"Report\" to print a daily report."); System.out.println("Type \"Done\" to exit out."); System.out.print("Selection: "); @@ -38,6 +39,7 @@ public static void displayMenu(Scanner sc) { sc.nextLine(); MaintenanceRequest toAssign = office.searchRequest(aptNum, sc); office.assignTechnician(toAssign); + break; case "Status": office.getProgressUpdate(); break; @@ -48,6 +50,7 @@ public static void displayMenu(Scanner sc) { office.closeRequest(toClose); break; case "Report": + office.printDailyReport(); break; case "Done": break; @@ -56,6 +59,7 @@ public static void displayMenu(Scanner sc) { } // Stopping condition. Program will exit when the user inputs 0. } while (!(input.equals("Done"))); + System.out.println("\nGoodbye."); sc.close(); } } From 7647ebc0fe7033ac05560f730ac17658a21a895d Mon Sep 17 00:00:00 2001 From: Jayden Andrews Date: Sun, 1 Mar 2026 16:56:50 -0500 Subject: [PATCH 10/12] Did more debugging --- .../codedifferently/MaintenanceOffice.java | 20 ++++++++----- .../codedifferently/MaintenanceRequest.java | 2 +- .../codedifferently/MaintenanceTracker.java | 30 ++++++++++++------- 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index ecc7c80..fc36a32 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -24,14 +24,18 @@ public MaintenanceOffice() { } public void assignTechnician(MaintenanceRequest request) { - if (request.getSeverity() == Severity.HIGH) { - request.setAssignedTechnician("Senior Technician"); - System.out.println("Senior Technician assigned to request #" + request.getRequestId()); + if (request.getAssignedTechnician().equals("None")) { + if (request.getSeverity() == Severity.HIGH) { + request.setAssignedTechnician("Senior Technician"); + System.out.println("\nSenior Technician assigned to request #" + request.getRequestId()); + } else { + request.setAssignedTechnician("Junior Technician"); + System.out.println("\nJunior Technician to request #" + request.getRequestId()); + } + request.setStatus(Status.IN_PROGRESS); } else { - request.setAssignedTechnician("Junior Technician"); - System.out.println("Junior Technician to request #" + request.getRequestId()); + System.out.println("\nA technician has already been assigned to this request."); } - request.setStatus(Status.IN_PROGRESS); } public void addRequest(MaintenanceRequest request) { @@ -125,10 +129,10 @@ public void printDailyReport() { public void closeRequest(MaintenanceRequest request) { if (request.getStatus() == Status.DONE) { requests.remove(request); - System.out.println("Request closed successfully."); + System.out.println("\nRequest closed successfully."); closures++; } else { - System.out.println("Cannot close request unless it is DONE."); + System.out.println("\nCannot close request unless it is DONE."); } } diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index d7fdbb3..c329b36 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -85,7 +85,7 @@ public static MaintenanceRequest createRequest(Scanner sc) { System.out.print("\nMaintenance request created.\n"); - System.out.println("Maintenance Request"); + System.out.println("\nMaintenance Request"); System.out.println("Name: " + ticket.getTenantName()); System.out.println("Apartment Number: " + ticket.getApartmentNumber()); System.out.println("Issue Type: " + ticket.getIssueType()); diff --git a/src/main/java/org/codedifferently/MaintenanceTracker.java b/src/main/java/org/codedifferently/MaintenanceTracker.java index a9cff8e..5db151f 100644 --- a/src/main/java/org/codedifferently/MaintenanceTracker.java +++ b/src/main/java/org/codedifferently/MaintenanceTracker.java @@ -1,5 +1,6 @@ package org.codedifferently; +import java.sql.SQLOutput; import java.util.Scanner; public class MaintenanceTracker { @@ -21,38 +22,47 @@ public static void displayMenu(Scanner sc) { System.out.print("Selection: "); // Validates numeric input before processing. - input = sc.nextLine(); + input = sc.nextLine().toLowerCase(); switch (input) { - case "Enter": + case "enter": MaintenanceRequest request = MaintenanceRequest.createRequest(sc); office.addRequest(request); if (request.getSeverity() == Severity.HIGH) { office.assignTechnician(request); } break; - case "View": + case "view": office.viewRequests(); break; - case "Assign": + case "assign": System.out.print("Enter an apt number: "); aptNum = sc.nextInt(); sc.nextLine(); MaintenanceRequest toAssign = office.searchRequest(aptNum, sc); - office.assignTechnician(toAssign); + if (toAssign != null) { + office.assignTechnician(toAssign); + } else { + System.out.println("Apartment Number not found. Please try again."); + } break; - case "Status": + case "status": office.getProgressUpdate(); break; - case "Close": + case "close": System.out.print("Enter an apt number: "); aptNum = sc.nextInt(); + sc.nextLine(); MaintenanceRequest toClose = office.searchRequest(aptNum, sc); - office.closeRequest(toClose); + if (toClose != null) { + office.closeRequest(toClose); + } else { + System.out.println("Apartment Number not found. Please try again"); + } break; - case "Report": + case "report": office.printDailyReport(); break; - case "Done": + case "done": break; default: System.out.println("\nPlease select a valid option."); From 16706cfe1aa9eddc68c659c9ab857b771b4417c9 Mon Sep 17 00:00:00 2001 From: Jayden Andrews Date: Sun, 1 Mar 2026 18:17:04 -0500 Subject: [PATCH 11/12] Implemented overload warning --- src/main/java/org/codedifferently/MaintenanceOffice.java | 4 ++++ src/main/java/org/codedifferently/MaintenanceTracker.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index fc36a32..d23b50b 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -124,6 +124,10 @@ public void printDailyReport() { System.out.println("Number of Medium Severity Cases: " + medSeverity); System.out.println("Number of High Severity Cases: " + highSeverity); System.out.println("\nMost Common Issue Type: " + mostCommonType); + + if (highSeverity > 3) { + System.out.println("WARNING: SYSTEM OVERLOADED."); + } } public void closeRequest(MaintenanceRequest request) { diff --git a/src/main/java/org/codedifferently/MaintenanceTracker.java b/src/main/java/org/codedifferently/MaintenanceTracker.java index 5db151f..58c3b07 100644 --- a/src/main/java/org/codedifferently/MaintenanceTracker.java +++ b/src/main/java/org/codedifferently/MaintenanceTracker.java @@ -68,7 +68,7 @@ public static void displayMenu(Scanner sc) { System.out.println("\nPlease select a valid option."); } // Stopping condition. Program will exit when the user inputs 0. - } while (!(input.equals("Done"))); + } while (!(input.equalsIgnoreCase("Done"))); System.out.println("\nGoodbye."); sc.close(); } From 61b4485d436d69cd7e2bd3f43a7efcc0986f924d Mon Sep 17 00:00:00 2001 From: Jayden Andrews Date: Sun, 1 Mar 2026 18:35:19 -0500 Subject: [PATCH 12/12] Implemented enumMap and did some debugging --- .../codedifferently/MaintenanceOffice.java | 93 +++++++++---------- .../codedifferently/MaintenanceRequest.java | 2 +- .../codedifferently/MaintenanceTracker.java | 2 +- 3 files changed, 46 insertions(+), 51 deletions(-) diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index d23b50b..6bb395f 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -2,25 +2,28 @@ import java.util.ArrayList; import java.util.Scanner; +import java.util.EnumMap; public class MaintenanceOffice { private static ArrayList requests; + EnumMap severityCounts; + EnumMap issueCounts; private static int closures = 0; - private int lowSeverity = 0; - private int medSeverity = 0; - private int highSeverity = 0; + public MaintenanceOffice() { + requests = new ArrayList<>(); - private int electrical = 0; - private int hvac = 0; - private int plumbing = 0; - private int appliance = 0; + severityCounts = new EnumMap<>(Severity.class); + issueCounts = new EnumMap<>(IssueType.class); - int mostCommonCount = 0; - IssueType mostCommonType; + // Initialize all enum values to 0 + for (Severity s : Severity.values()) { + severityCounts.put(s, 0); + } - public MaintenanceOffice() { - requests = new ArrayList<>(); + for (IssueType type : IssueType.values()) { + issueCounts.put(type, 0); + } } public void assignTechnician(MaintenanceRequest request) { @@ -40,39 +43,14 @@ public void assignTechnician(MaintenanceRequest request) { public void addRequest(MaintenanceRequest request) { requests.add(request); - if (request.getSeverity() == Severity.LOW) { - lowSeverity++; - } else if (request.getSeverity() == Severity.MEDIUM) { - medSeverity++; - } else { - highSeverity++; - } - if (request.getIssueType() == IssueType.ELECTRICAL) { - electrical++; - if (electrical > mostCommonCount) { - mostCommonCount = electrical; - mostCommonType = IssueType.ELECTRICAL; - } - } else if (request.getIssueType() == IssueType.HVAC) { - hvac++; - if (hvac > mostCommonCount) { - mostCommonCount = hvac; - mostCommonType = IssueType.HVAC; - } - } else if (request.getIssueType() == IssueType.PLUMBING) { - plumbing++; - if (plumbing > mostCommonCount) { - mostCommonCount = plumbing; - mostCommonType = IssueType.PLUMBING; - } - } else { - appliance++; - if (appliance > mostCommonCount) { - mostCommonCount = appliance; - mostCommonType = IssueType.APPLIANCE; - } - } + // Update severity count + Severity severity = request.getSeverity(); + severityCounts.put(severity, severityCounts.get(severity) + 1); + + // Update issue type count + IssueType type = request.getIssueType(); + issueCounts.put(type, issueCounts.get(type) + 1); } public void getProgressUpdate() { @@ -117,19 +95,36 @@ public MaintenanceRequest searchRequest(int aptNum, Scanner sc) { public void printDailyReport() { System.out.println("=== DAILY REPORT ==="); System.out.println("Total Requests: " + MaintenanceRequest.getCount()); - System.out.println("Number of Open Requests Currently Open: " + requests.size()); + System.out.println("Number of Open Requests: " + requests.size()); System.out.println("Number of Closed Requests: " + closures); - System.out.println("\nNumber of Low Severity Cases: " + lowSeverity); - System.out.println("Number of Medium Severity Cases: " + medSeverity); - System.out.println("Number of High Severity Cases: " + highSeverity); - System.out.println("\nMost Common Issue Type: " + mostCommonType); + System.out.println("\nSeverity Breakdown:"); + for (Severity s : severityCounts.keySet()) { + System.out.println(s + " CASES: " + severityCounts.get(s)); + } + + System.out.println("\nMost Common Issue Type: " + getMostCommonIssueType()); - if (highSeverity > 3) { + if (severityCounts.get(Severity.HIGH) > 3) { System.out.println("WARNING: SYSTEM OVERLOADED."); } } + private IssueType getMostCommonIssueType() { + IssueType mostCommon = null; + int max = 0; + + for (IssueType type : issueCounts.keySet()) { + int count = issueCounts.get(type); + + if (count > max) { + max = count; + mostCommon = type; + } + } + return mostCommon; + } + public void closeRequest(MaintenanceRequest request) { if (request.getStatus() == Status.DONE) { requests.remove(request); diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index c329b36..7f04839 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -91,7 +91,7 @@ public static MaintenanceRequest createRequest(Scanner sc) { System.out.println("Issue Type: " + ticket.getIssueType()); System.out.println("Severity: " + ticket.getSeverity()); - if (severity >= 4 && type == IssueType.ELECTRICAL) { + if (severity >= 5 && type == IssueType.ELECTRICAL) { System.out.println("WARNING! THIS REQUEST REQUIRES URGENT ATTENTION"); } diff --git a/src/main/java/org/codedifferently/MaintenanceTracker.java b/src/main/java/org/codedifferently/MaintenanceTracker.java index 58c3b07..ff270c6 100644 --- a/src/main/java/org/codedifferently/MaintenanceTracker.java +++ b/src/main/java/org/codedifferently/MaintenanceTracker.java @@ -27,7 +27,7 @@ public static void displayMenu(Scanner sc) { case "enter": MaintenanceRequest request = MaintenanceRequest.createRequest(sc); office.addRequest(request); - if (request.getSeverity() == Severity.HIGH) { + if (request.getIssueType() == IssueType.ELECTRICAL && request.getSeverity() == Severity.HIGH) { office.assignTechnician(request); } break;