From 6c6d87e316da9ef7cb0e3b9b7a10d9232a9208e1 Mon Sep 17 00:00:00 2001 From: Bryant Ferguson Date: Mon, 2 Mar 2026 00:31:21 -0500 Subject: [PATCH 1/6] feat: created maintenance request class --- .../codedifferently/MaintenanceOffice.java | 4 ++ .../codedifferently/MaintenanceRequest.java | 70 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 src/main/java/org/codedifferently/MaintenanceOffice.java create mode 100644 src/main/java/org/codedifferently/MaintenanceRequest.java 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 new file mode 100644 index 0000000..958f92c --- /dev/null +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -0,0 +1,70 @@ +package org.codedifferently; + +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, String status) { + this.tenantName = tenantName; + this.apartmentNumber = apartmentNumber; + this.issueType = issueType; + this.severity = severity; + this.status = status; + } + + 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) { + if (severity >= 1 && severity <= 5) { + this.severity = severity; + } else { + System.out.println("Invalid severity."); + } + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + @Override + public String toString() { + return "Tenant: " + tenantName + + " | Apt: " + apartmentNumber + + " | Issue: " + issueType + + " | Severity: " + severity + + " | Status: " + status; + } +} From 2a99a0e1961d65796242e19461a4578a0ff47809 Mon Sep 17 00:00:00 2001 From: Bryant Ferguson Date: Mon, 2 Mar 2026 00:45:31 -0500 Subject: [PATCH 2/6] feat: created a technician class --- .../java/org/codedifferently/Technician.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/org/codedifferently/Technician.java diff --git a/src/main/java/org/codedifferently/Technician.java b/src/main/java/org/codedifferently/Technician.java new file mode 100644 index 0000000..a2e4453 --- /dev/null +++ b/src/main/java/org/codedifferently/Technician.java @@ -0,0 +1,17 @@ +package org.codedifferently; + +public class Technician { + private String type; + + public Technician(String type){ + this.type = type; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} From a63af670473c74608d24c32cd81f0ac25d23c1f2 Mon Sep 17 00:00:00 2001 From: Bryant Ferguson Date: Mon, 2 Mar 2026 01:24:45 -0500 Subject: [PATCH 3/6] feat: created maintenace office class --- .../codedifferently/MaintenanceOffice.java | 41 +++++++++++++++++++ .../codedifferently/MaintenanceRequest.java | 12 +++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index b78e1b0..58c2493 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -1,4 +1,45 @@ package org.codedifferently; +import java.util.ArrayList; + public class MaintenanceOffice { + private ArrayList technicians; + private ArrayList requests; + + public MaintenanceOffice(ArrayList technicians, ArrayList requests) { + this.technicians = technicians; + this.requests = requests; + } + + public ArrayList getTechnicians() { + return technicians; + } + + public ArrayList getRequests() { + return requests; + } + + public void addRequest(MaintenanceRequest request){ + requests.add(request); + } + + public void addTechnician(Technician technician){ + technicians.add(technician); + } + + public void assignTechnician(MaintenanceRequest request){ + + } + + public void updateRequestStatus(MaintenanceRequest request){ + + } + + public void closeRequest(MaintenanceRequest request){ + + } + + public void generateDailyReport(){ + + } } diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index 958f92c..2a3cbed 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -6,6 +6,7 @@ public class MaintenanceRequest { private String issueType; private int severity; private String status; + private Technician assignedTechnician; public MaintenanceRequest(String tenantName, int apartmentNumber, String issueType, int severity, String status) { this.tenantName = tenantName; @@ -59,12 +60,21 @@ public void setStatus(String status) { this.status = status; } + public Technician getAssignedTechnician() { + return assignedTechnician; + } + + public void setAssignedTechnician(Technician assignedTechnician) { + this.assignedTechnician = assignedTechnician; + } + @Override public String toString() { return "Tenant: " + tenantName + " | Apt: " + apartmentNumber + " | Issue: " + issueType + " | Severity: " + severity + - " | Status: " + status; + " | Status: " + status + + " | Assigned Technician: " + assignedTechnician; } } From 2951afdeb96627162c58ffee897827b568bda1a9 Mon Sep 17 00:00:00 2001 From: Bryant Ferguson Date: Mon, 2 Mar 2026 02:46:33 -0500 Subject: [PATCH 4/6] feat: finished office class --- .../codedifferently/MaintenanceOffice.java | 118 +++++++++++++++++- 1 file changed, 114 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index 58c2493..1098373 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -1,5 +1,6 @@ package org.codedifferently; +import javax.sql.StatementEvent; import java.util.ArrayList; public class MaintenanceOffice { @@ -28,18 +29,127 @@ public void addTechnician(Technician technician){ } public void assignTechnician(MaintenanceRequest request){ - - } + //electrical high severity warning + if (request.getIssueType().equals("ELECTRICAL") + && request.getSeverity() >= 4) { + + System.out.println("WARNING: High severity electrical issue!"); + } - public void updateRequestStatus(MaintenanceRequest request){ + // immediate dispatch for severity 5 + if (request.getSeverity() == 5) { + System.out.println("DISPATCH IMMEDIATELY!"); + } + for (Technician technician : technicians){ + if(technician.getType().equals(request.getIssueType())) { + request.setAssignedTechnician(technician); + updateRequestStatus(request,"IN_PROGRESS"); + return; + } + } + System.out.println("No technician available for this issue."); + } + + public void updateRequestStatus(MaintenanceRequest request, String newStatus) { + request.setStatus(newStatus); } public void closeRequest(MaintenanceRequest request){ + System.out.println("Request closed successfully."); + } + + public void generateDailyReport() { + int open = countOpenRequests(); + int closed = countClosedRequests(); + int[] severityCounts = countSeverity(); // [low, medium, high] + int low = severityCounts[0]; + int medium = severityCounts[1]; + int high = severityCounts[2]; + + String mostCommonIssueType = getMostCommonIssueType(); + int highPriorityCount = high; // high severity = severity 4-5 + + // Print report + System.out.println("----- DAILY MAINTENANCE REPORT -----"); + System.out.println("Total Requests: " + requests.size()); + System.out.println("Open Requests: " + open); + System.out.println("Closed Requests: " + closed); + + System.out.println("Severity Breakdown:"); + System.out.println("Low (1-2): " + low); + System.out.println("Medium (3): " + medium); + System.out.println("High (4-5): " + high); + + System.out.println("Most Common Issue Type: " + mostCommonIssueType); + if (highPriorityCount > 3) { + System.out.println("OVERLOAD WARNING: Too many high priority requests!"); + } + + System.out.println("------------------------------------"); } - public void generateDailyReport(){ +// helper methods for the daily report method + + private int countOpenRequests() { + int count = 0; + for (MaintenanceRequest request : requests) { + if (!request.getStatus().equals("DONE")) { + count++; + } + } + return count; + } + + private int countClosedRequests() { + int count = 0; + for (MaintenanceRequest r : requests) { + if (r.getStatus().equals("DONE")) { + count++; + } + } + return count; + } + + private int[] countSeverity() { + int low = 0, medium = 0, high = 0; + for (MaintenanceRequest request : requests) { + if (request.getSeverity()<= 2) { + low++; + } else if (request.getSeverity() == 3) { + medium++; + } else { + high++; + } + } + return new int[]{low, medium, high}; + } + + private String getMostCommonIssueType() { + String mostCommonType = ""; + int highestCount = 0; + ArrayList checked = new ArrayList<>(); + + for (MaintenanceRequest request : requests) { + String type = request.getIssueType(); + // only count this issue type if we haven’t already processed it + if (!checked.contains(type)) { + int count = 0; + for (MaintenanceRequest r : requests) { + if (r.getIssueType().equals(type)) { + count++; + } + } + //max pattern + if (count > highestCount) { + highestCount = count; + mostCommonType = type; + } + checked.add(type); + } + } + return mostCommonType; } } From ef3e970c08e3b3b5022243a5555d610bf24de134 Mon Sep 17 00:00:00 2001 From: Bryant Ferguson Date: Mon, 2 Mar 2026 03:40:25 -0500 Subject: [PATCH 5/6] Finished the lab --- src/main/java/org/codedifferently/Main.java | 85 ++++++++++++++++--- .../codedifferently/MaintenanceOffice.java | 4 +- .../codedifferently/MaintenanceRequest.java | 7 +- .../java/org/codedifferently/Technician.java | 12 ++- 4 files changed, 91 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java index 435139b..8302429 100644 --- a/src/main/java/org/codedifferently/Main.java +++ b/src/main/java/org/codedifferently/Main.java @@ -1,17 +1,82 @@ package org.codedifferently; -//TIP To Run code, press or -// click the icon in the gutter. +import java.util.ArrayList; +import java.util.Scanner; + 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); + + // Initialize office and technicians + ArrayList techs = new ArrayList<>(); + techs.add(new Technician("ELECTRICAL", "Wilson Fisk")); + techs.add(new Technician("PLUMBING", "Steve Rogers")); + techs.add(new Technician("HVAC", "Frank Castle")); + techs.add(new Technician("APPLIANCE", "Luke Cage")); + + ArrayList requests = new ArrayList<>(); + MaintenanceOffice office = new MaintenanceOffice(techs, requests); + + // Level 1: create at least 3 requests + MaintenanceRequest r1 = new MaintenanceRequest("Alice", 101, "ELECTRICAL", 3); + MaintenanceRequest r2 = new MaintenanceRequest("Bob", 202, "PLUMBING", 2); + MaintenanceRequest r3 = new MaintenanceRequest("Charlie", 303, "HVAC", 4); + + office.addRequest(r1); + office.addRequest(r2); + office.assignTechnician(r2); + //mark a request as done + r2.setStatus("DONE"); + office.addRequest(r3); + office.assignTechnician(r3); + + System.out.println("*** Initial Requests ***"); + for (MaintenanceRequest request : office.getRequests()) { + System.out.println(request); + if (request.getSeverity() >= 4) { + System.out.println("HIGH PRIORITY"); + } + } + System.out.println(); + System.out.println("************************************"); + + // level 2 and 3: intake from user and assign and update + Scanner scanner = new Scanner(System.in); + while (true) { + System.out.println("Enter tenant name (or 'done' to finish):"); + String tenantName = scanner.nextLine(); + if (tenantName.equalsIgnoreCase("done")) { + break; + } + + System.out.println("Enter apartment number:"); + String aptNum = scanner.nextLine().toUpperCase(); + + System.out.println("Enter issue type (Electrical, Plumbing, HVAC, Appliance):"); + String issueType = scanner.nextLine().toUpperCase(); + + System.out.println("Enter severity (1-5):"); + int severity; + try { + severity = Integer.parseInt(scanner.nextLine()); + if (severity < 1 || severity > 5) { + System.out.println("Invalid severity. Must be 1-5. Defaulting to 3."); + severity = 3; + } + } catch (NumberFormatException e) { + System.out.println("Invalid number. Defaulting to 3."); + severity = 3; + } + + MaintenanceRequest newRequest = new MaintenanceRequest(tenantName, Integer.parseInt(aptNum), issueType, severity); + office.addRequest(newRequest); + // Print confirmation + office.assignTechnician(newRequest); + System.out.println("Request added: " + newRequest); } + + //level 4: daily report + office.generateDailyReport(); + + scanner.close(); } } \ 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 1098373..bcbc713 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -71,7 +71,7 @@ public void generateDailyReport() { int highPriorityCount = high; // high severity = severity 4-5 // Print report - System.out.println("----- DAILY MAINTENANCE REPORT -----"); + System.out.println("\n***** DAILY MAINTENANCE REPORT *****"); System.out.println("Total Requests: " + requests.size()); System.out.println("Open Requests: " + open); System.out.println("Closed Requests: " + closed); @@ -86,8 +86,6 @@ public void generateDailyReport() { if (highPriorityCount > 3) { System.out.println("OVERLOAD WARNING: Too many high priority requests!"); } - - System.out.println("------------------------------------"); } // helper methods for the daily report method diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index 2a3cbed..4f095a4 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -8,12 +8,12 @@ public class MaintenanceRequest { private String status; private Technician assignedTechnician; - public MaintenanceRequest(String tenantName, int apartmentNumber, String issueType, int severity, 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 = status; + this.status = "NEW"; } public String getTenantName() { @@ -70,11 +70,12 @@ public void setAssignedTechnician(Technician assignedTechnician) { @Override public String toString() { + String techName = (assignedTechnician != null) ? assignedTechnician.getName() : "None"; return "Tenant: " + tenantName + " | Apt: " + apartmentNumber + " | Issue: " + issueType + " | Severity: " + severity + " | Status: " + status + - " | Assigned Technician: " + assignedTechnician; + " | Assigned Technician: " + techName; } } diff --git a/src/main/java/org/codedifferently/Technician.java b/src/main/java/org/codedifferently/Technician.java index a2e4453..f9c20ee 100644 --- a/src/main/java/org/codedifferently/Technician.java +++ b/src/main/java/org/codedifferently/Technician.java @@ -2,9 +2,11 @@ public class Technician { private String type; + private String name; - public Technician(String type){ + public Technician(String type, String name){ this.type = type; + this.name = name; } public String getType() { @@ -14,4 +16,12 @@ public String getType() { public void setType(String type) { this.type = type; } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } } From 49360ac5e9c7b0988f4c48873c94abe8156363d4 Mon Sep 17 00:00:00 2001 From: Bryant Ferguson Date: Mon, 2 Mar 2026 17:45:45 -0500 Subject: [PATCH 6/6] added comments to lab --- src/main/java/org/codedifferently/Main.java | 2 +- .../org/codedifferently/MaintenanceOffice.java | 17 +++++++++++++---- .../org/codedifferently/MaintenanceRequest.java | 5 +++++ .../java/org/codedifferently/Technician.java | 3 +++ 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java index 8302429..32e57ac 100644 --- a/src/main/java/org/codedifferently/Main.java +++ b/src/main/java/org/codedifferently/Main.java @@ -31,7 +31,7 @@ public static void main(String[] args) { System.out.println("*** Initial Requests ***"); for (MaintenanceRequest request : office.getRequests()) { - System.out.println(request); + System.out.println(request.toString()); if (request.getSeverity() >= 4) { System.out.println("HIGH PRIORITY"); } diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java index bcbc713..60aa21e 100644 --- a/src/main/java/org/codedifferently/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -1,17 +1,18 @@ package org.codedifferently; - -import javax.sql.StatementEvent; import java.util.ArrayList; public class MaintenanceOffice { + //private fields for the maintenance office private ArrayList technicians; private ArrayList requests; + //constructor public MaintenanceOffice(ArrayList technicians, ArrayList requests) { this.technicians = technicians; this.requests = requests; } + //getters and setters to access private instance variables public ArrayList getTechnicians() { return technicians; } @@ -20,14 +21,17 @@ public ArrayList getRequests() { return requests; } + //adds a request to the request lists public void addRequest(MaintenanceRequest request){ requests.add(request); } + //adds a tech to the list of technicians public void addTechnician(Technician technician){ technicians.add(technician); } + //assigns a technician to the request that's being passed in public void assignTechnician(MaintenanceRequest request){ //electrical high severity warning if (request.getIssueType().equals("ELECTRICAL") @@ -51,14 +55,17 @@ public void assignTechnician(MaintenanceRequest request){ System.out.println("No technician available for this issue."); } + //updates the request status of the request passed in public void updateRequestStatus(MaintenanceRequest request, String newStatus) { request.setStatus(newStatus); } + //closes the request public void closeRequest(MaintenanceRequest request){ System.out.println("Request closed successfully."); } + //displays detailed info about the requests that come in public void generateDailyReport() { int open = countOpenRequests(); int closed = countClosedRequests(); @@ -71,7 +78,7 @@ public void generateDailyReport() { int highPriorityCount = high; // high severity = severity 4-5 // Print report - System.out.println("\n***** DAILY MAINTENANCE REPORT *****"); + System.out.println("***** DAILY MAINTENANCE REPORT *****"); System.out.println("Total Requests: " + requests.size()); System.out.println("Open Requests: " + open); System.out.println("Closed Requests: " + closed); @@ -89,7 +96,7 @@ public void generateDailyReport() { } // helper methods for the daily report method - + //gets the total amount of the open requests private int countOpenRequests() { int count = 0; for (MaintenanceRequest request : requests) { @@ -100,6 +107,7 @@ private int countOpenRequests() { return count; } + //gets the total amount of closed requests private int countClosedRequests() { int count = 0; for (MaintenanceRequest r : requests) { @@ -124,6 +132,7 @@ private int[] countSeverity() { return new int[]{low, medium, high}; } + //gets the type that appears the most in the list of the requests private String getMostCommonIssueType() { String mostCommonType = ""; int highestCount = 0; diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java index 4f095a4..6b3eb26 100644 --- a/src/main/java/org/codedifferently/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -1,6 +1,7 @@ package org.codedifferently; public class MaintenanceRequest { + //fields of a maintenance request private String tenantName; private int apartmentNumber; private String issueType; @@ -8,6 +9,7 @@ public class MaintenanceRequest { private String status; private Technician assignedTechnician; + //constructor public MaintenanceRequest(String tenantName, int apartmentNumber, String issueType, int severity) { this.tenantName = tenantName; this.apartmentNumber = apartmentNumber; @@ -16,6 +18,7 @@ public MaintenanceRequest(String tenantName, int apartmentNumber, String issueTy this.status = "NEW"; } + //getters and setters to access private instance variables public String getTenantName() { return tenantName; } @@ -45,6 +48,7 @@ public int getSeverity() { } public void setSeverity(int severity) { + //checks to see if the severity is valid or not if (severity >= 1 && severity <= 5) { this.severity = severity; } else { @@ -68,6 +72,7 @@ public void setAssignedTechnician(Technician assignedTechnician) { this.assignedTechnician = assignedTechnician; } + //displays the info of the request @Override public String toString() { String techName = (assignedTechnician != null) ? assignedTechnician.getName() : "None"; diff --git a/src/main/java/org/codedifferently/Technician.java b/src/main/java/org/codedifferently/Technician.java index f9c20ee..da7a893 100644 --- a/src/main/java/org/codedifferently/Technician.java +++ b/src/main/java/org/codedifferently/Technician.java @@ -1,14 +1,17 @@ package org.codedifferently; public class Technician { + //private fields of a technician private String type; private String name; + //constructor public Technician(String type, String name){ this.type = type; this.name = name; } + //getters and setters for the private fields public String getType() { return type; }