From 2d78699105f980993ec8d9212ffe48d4df2c4637 Mon Sep 17 00:00:00 2001 From: michaelmoss Date: Sun, 1 Mar 2026 23:13:44 -0500 Subject: [PATCH 1/2] michaelmoss apartment-maintenance-request-tracker --- src/main/java/org/codedifferently/michaelmoss/Main.java | 4 ++++ .../org/codedifferently/michaelmoss/MaintenanceOffice.java | 4 ++++ .../org/codedifferently/michaelmoss/MaintenanceRequest.java | 4 ++++ 3 files changed, 12 insertions(+) create mode 100644 src/main/java/org/codedifferently/michaelmoss/Main.java create mode 100644 src/main/java/org/codedifferently/michaelmoss/MaintenanceOffice.java create mode 100644 src/main/java/org/codedifferently/michaelmoss/MaintenanceRequest.java diff --git a/src/main/java/org/codedifferently/michaelmoss/Main.java b/src/main/java/org/codedifferently/michaelmoss/Main.java new file mode 100644 index 0000000..35da50b --- /dev/null +++ b/src/main/java/org/codedifferently/michaelmoss/Main.java @@ -0,0 +1,4 @@ +package org.codedifferently.michaelmoss; + +public class Main { +} diff --git a/src/main/java/org/codedifferently/michaelmoss/MaintenanceOffice.java b/src/main/java/org/codedifferently/michaelmoss/MaintenanceOffice.java new file mode 100644 index 0000000..b9e8faa --- /dev/null +++ b/src/main/java/org/codedifferently/michaelmoss/MaintenanceOffice.java @@ -0,0 +1,4 @@ +package org.codedifferently.michaelmoss; + +public class MaintenanceOffice { +} diff --git a/src/main/java/org/codedifferently/michaelmoss/MaintenanceRequest.java b/src/main/java/org/codedifferently/michaelmoss/MaintenanceRequest.java new file mode 100644 index 0000000..b60894e --- /dev/null +++ b/src/main/java/org/codedifferently/michaelmoss/MaintenanceRequest.java @@ -0,0 +1,4 @@ +package org.codedifferently.michaelmoss; + +public class MaintenanceRequest { +} From bc81d80a78478a7100ac9912ad7540bde0a18e12 Mon Sep 17 00:00:00 2001 From: michaelmoss Date: Tue, 3 Mar 2026 14:35:37 -0500 Subject: [PATCH 2/2] micahelmoss apartament-maintenance-reqest-tracker --- .../org/codedifferently/michaelmoss/Main.java | 75 +++++++++++++++- .../michaelmoss/MaintenanceOffice.java | 86 ++++++++++++++++++- .../michaelmoss/MaintenanceRequest.java | 83 +++++++++++++++++- 3 files changed, 241 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/codedifferently/michaelmoss/Main.java b/src/main/java/org/codedifferently/michaelmoss/Main.java index 35da50b..6d7c821 100644 --- a/src/main/java/org/codedifferently/michaelmoss/Main.java +++ b/src/main/java/org/codedifferently/michaelmoss/Main.java @@ -1,4 +1,77 @@ package org.codedifferently.michaelmoss; +import java.util.Scanner; + public class Main { -} + + + public static void main(String[] args) { + + Scanner scanner = new Scanner(System.in); + MaintenanceOffice office = new MaintenanceOffice(); + + // Level 1 — Preloaded Requests + MaintenanceRequest r1 = new MaintenanceRequest("John Smith", "101", "Plumbing", 2); + MaintenanceRequest r2 = new MaintenanceRequest("Lisa Brown", "204", "Electrical", 5); + MaintenanceRequest r3 = new MaintenanceRequest("Mark Lee", "305", "HVAC", 4); + + office.addRequest(r1); + office.addRequest(r2); + office.addRequest(r3); + + System.out.println("Initial Requests:"); + for (MaintenanceRequest r : office.getRequests()) { + System.out.println(r); + if (r.getSeverity() >= 4) { + System.out.println("HIGH PRIORITY"); + } + } + + // Level 2 — User Intake + System.out.println("\nEnter new maintenance requests (type 'done' to stop)"); + + while (true) { + System.out.print("Tenant name: "); + String name = scanner.nextLine(); + if (name.equalsIgnoreCase("done")) + break; + + System.out.print("Apartment number: "); + String apt = scanner.nextLine(); + + System.out.print("Issue type: "); + String issue = scanner.nextLine(); + + System.out.print("Severity (1-5): "); + int severity = Integer.parseInt(scanner.nextLine()); + + MaintenanceRequest newRequest = new MaintenanceRequest(name, apt, issue, severity); + office.addRequest(newRequest); + + System.out.println("Request logged successfully."); + + // Rules + if (issue.equalsIgnoreCase("Electrical") && severity >= 4) { + System.out.println("WARNING: High-risk electrical issue!"); + } + + if (severity == 5) { + System.out.println("Dispatching technician immediately."); + office.assignTech(newRequest); + } + } + + // Level 3 — Mark some requests done for demo + if (!office.getRequests().isEmpty()) { + MaintenanceRequest first = office.getRequests().get(0); + first.setStatus("DONE"); + office.closeRequest(first); + } + + // Level 4 — Report + office.printDailyReport(); + + scanner.close(); + } + } + diff --git a/src/main/java/org/codedifferently/michaelmoss/MaintenanceOffice.java b/src/main/java/org/codedifferently/michaelmoss/MaintenanceOffice.java index b9e8faa..f1c29fb 100644 --- a/src/main/java/org/codedifferently/michaelmoss/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/michaelmoss/MaintenanceOffice.java @@ -1,4 +1,88 @@ package org.codedifferently.michaelmoss; +import java.util.ArrayList; + public class MaintenanceOffice { -} + + private ArrayList requests; + + public MaintenanceOffice() { + requests = new ArrayList<>(); + } + + public void addRequest(MaintenanceRequest request) { + requests.add(request); + } + + // Assign tech based on severity + public void assignTech(MaintenanceRequest request) { + if (request.getSeverity() >= 4) { + System.out.println("Assigned Senior Technician to Apt " + request.getApartmentNumber()); + } else { + System.out.println("Assigned General Technician to Apt " + request.getApartmentNumber()); + } + request.setStatus("IN_PROGRESS"); + } + + // Close request only if DONE + public void closeRequest(MaintenanceRequest request) { + if (request.getStatus().equals("DONE")) { + System.out.println("Request for Apt " + request.getApartmentNumber() + " is now CLOSED."); + } else { + System.out.println("Cannot close. Request is not marked DONE."); + } + } + + // Daily Report (Level 4) + public void printDailyReport() { + int total = requests.size(); + int open = 0; + int closed = 0; + int low = 0, medium = 0, high = 0; + + java.util.HashMap issueCount = new java.util.HashMap<>(); + + for (MaintenanceRequest r : requests) { + + if (r.getStatus().equals("DONE")) + closed++; + else + open++; + + if (r.getSeverity() <= 2) + low++; + else if (r.getSeverity() == 3) + medium++; + else + high++; + + issueCount.put(r.getIssueType(), + issueCount.getOrDefault(r.getIssueType(), 0) + 1); + } + + // Find most common issue + String commonIssue = "None"; + int max = 0; + for (String issue : issueCount.keySet()) { + if (issueCount.get(issue) > max) { + max = issueCount.get(issue); + commonIssue = issue; + } + } + + System.out.println("\n--- Daily Maintenance Report ---"); + System.out.println("Total Requests: " + total); + System.out.println("Open: " + open + " | Closed: " + closed); + System.out.println("Low: " + low + " | Medium: " + medium + " | High: " + high); + System.out.println("Most Common Issue: " + commonIssue); + + if (high > 3) { + System.out.println("WARNING: High priority overload!"); + } + } + + public ArrayList getRequests() { + return requests; + } + } + diff --git a/src/main/java/org/codedifferently/michaelmoss/MaintenanceRequest.java b/src/main/java/org/codedifferently/michaelmoss/MaintenanceRequest.java index b60894e..7fc2180 100644 --- a/src/main/java/org/codedifferently/michaelmoss/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/michaelmoss/MaintenanceRequest.java @@ -1,4 +1,85 @@ package org.codedifferently.michaelmoss; public class MaintenanceRequest { -} + + private String tenantName; + private String apartmentNumber; + private String issueType; + private int severity; // 1–5 + private String status; + + // Default constructor + public MaintenanceRequest() { + this.tenantName = ""; + this.apartmentNumber = ""; + this.issueType = ""; + this.severity = 1; + this.status = "NEW"; + } + + // Parameterized constructor + public MaintenanceRequest(String tenantName, String apartmentNumber, String issueType, int severity) { + this.tenantName = tenantName; + this.apartmentNumber = apartmentNumber; + this.issueType = issueType; + this.severity = severity; + this.status = "NEW"; + } + + // Getters and Setters + public String getTenantName() { + return tenantName; + } + + public void setTenantName(String tenantName) { + this.tenantName = tenantName; + } + + public String getApartmentNumber() { + return apartmentNumber; + } + + public void setApartmentNumber(String 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; + } + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + if (status.equals("NEW") || status.equals("IN_PROGRESS") || status.equals("DONE")) { + this.status = status; + } else { + System.out.println("Invalid status."); + } + } + + @Override + public String toString() { + return "Tenant: " + tenantName + + ", Apt: " + apartmentNumber + + ", Issue: " + issueType + + ", Severity: " + severity + + ", Status: " + status; + } + } +