Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions src/main/java/org/codedifferently/Main.java

This file was deleted.

12 changes: 12 additions & 0 deletions src/main/java/org/codedifferently/christopherbennett/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.codedifferently.christopherbennett;

import org.codedifferently.christopherbennett.menus.MainMenu;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
public static void main(String[] args) {
MainMenu mainMenu = new MainMenu();
mainMenu.promptMainMenu();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package org.codedifferently.christopherbennett;

import org.codedifferently.christopherbennett.data.MaintenanceRequest;
import org.codedifferently.christopherbennett.data.Technician;
import org.codedifferently.christopherbennett.enums.EActivity;
import org.codedifferently.christopherbennett.enums.EStatusUpdate;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class MaintenanceOffice {

public void assignTechs(List<MaintenanceRequest> requests, List<Technician> techs) {

//Sort requests by severity
requests.sort(Comparator.comparing(MaintenanceRequest::getSeverity).reversed());

//Sort techs by highest level of seniority.
techs.sort(Comparator.comparing(Technician::getProfessionLevel).reversed());

int techCounter = 0;
int requestCounter = 0;
while(techCounter < techs.size() && requestCounter < requests.size()) {

//ignore already done requests
if(requests.get(techCounter).getStatus() == EStatusUpdate.DONE) {
requestCounter++;
continue;
}

//print statement
System.out.println("[" + requests.get(requestCounter).getApartmentNumber()
+ "] Severity "
+ requests.get(requestCounter).getSeverity()
+ " -> Assigned to " + techs.get(techCounter).getName());

//update statuses
requests.get(requestCounter).setStatus(EStatusUpdate.INPROGRESS);
techs.get(techCounter).setActivity(EActivity.Working);

techs.get(techCounter).setRequest(requests.get(requestCounter));

//Increment request and tech counters;
requestCounter++;
techCounter++;
}
System.out.println();
}

public void techCompleteTasks(List<Technician> techs) {
for(int i = 0; i < techs.size(); i++) {
techs.get(i).setActivity(EActivity.Idle);

if(techs.get(i).getRequest() != null) {
techs.get(i).getRequest().setStatus(EStatusUpdate.DONE);
}

}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package org.codedifferently.christopherbennett.data;

import org.codedifferently.christopherbennett.enums.EIssueType;
import org.codedifferently.christopherbennett.enums.EStatusUpdate;

public class MaintenanceRequest {
private String tenantName;
private String apartmentNumber;
private EIssueType issueType;
private int severity;
private EStatusUpdate status = EStatusUpdate.NEW;


public MaintenanceRequest(String tenantName, String apartmentNumber, EIssueType issueType, int severity) {
this.tenantName = tenantName;
this.apartmentNumber = apartmentNumber;
this.issueType = issueType;
this.severity = severity;
}

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 EIssueType getIssueType() {
return issueType;
}

public void setIssueType(EIssueType issueType) {
this.issueType = issueType;
}

public int getSeverity() {
return severity;
}

public void setSeverity(int severity) {
if(severity > 5) {
System.out.println("Max severity is 5!!");
severity = 5;
}
this.severity = severity;
}

public EStatusUpdate getStatus() {
return status;
}

public void setStatus(EStatusUpdate status) {
this.status = status;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package org.codedifferently.christopherbennett.data;

import org.codedifferently.christopherbennett.enums.EActivity;
import org.codedifferently.christopherbennett.enums.EProfessionLevel;

public class Technician {
private String name;
private int age;
private EProfessionLevel professionLevel;
private EActivity activity;
private MaintenanceRequest request;


public Technician(String name, int age, EProfessionLevel professionLevel, EActivity activity) {
this.name = name;
this.age = age;
this.professionLevel = professionLevel;
this.activity = activity;
}

public String getName() {
return name;
}

public int getAge() {
return age;
}

public EProfessionLevel getProfessionLevel() {
return professionLevel;
}

public EActivity getActivity() {
return activity;
}

public void setActivity(EActivity activity) {
this.activity = activity;
}

public void setRequest(MaintenanceRequest request) {
this.request = request;
}

public MaintenanceRequest getRequest() {
return request;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.codedifferently.christopherbennett.data;

import java.util.List;

public class UpdateRequest {
List<Technician> technicianList;
List<MaintenanceRequest> maintenanceRequestList;

public List<MaintenanceRequest> getMaintenanceRequestList() {
return maintenanceRequestList;
}

public List<Technician> getTechnicianList() {
return technicianList;
}

public void setTechnicianList(List<Technician> technicianList) {
this.technicianList = technicianList;
}

public void setMaintenanceRequestList(List<MaintenanceRequest> maintenanceRequestList) {
this.maintenanceRequestList = maintenanceRequestList;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.codedifferently.christopherbennett.enums;

public enum EActivity {
Idle,
Working,
OnBreak,
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.codedifferently.christopherbennett.enums;

public enum EIssueType {
Electrical,
Plumbing,
HVAC,
Other
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.codedifferently.christopherbennett.enums;

public enum EProfessionLevel {
Junior,
MidLevel,
Senior
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.codedifferently.christopherbennett.enums;

public enum EStatusUpdate {
NEW,
INPROGRESS,
DONE
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package org.codedifferently.christopherbennett.helpers;

import org.codedifferently.christopherbennett.enums.EIssueType;

import java.util.Scanner;

public class InputHandler {

public static int handleIntegerInput() {
Scanner scan = new Scanner(System.in);
int scanInput = 0;
boolean validScanInput = false;
//While loop to make sure user puts in the correct input
while(!validScanInput) {
//Call Scanner methods
try {
//Scanner method to collect input
scanInput = scan.nextInt();
validScanInput = true;
}
catch (Exception e) {
//If user enters invalid input, the catch block will prevent errors.
System.out.println("Invalid input! Try typing a number instead of a String!");
scan.next();
}
}
return scanInput;
}

public static String handleStringInput() {
Scanner scan = new Scanner(System.in);
String scanInput = "";
boolean validScanInput = false;
//While loop to make sure user puts in the correct input
while(!validScanInput) {
//Call Scanner methods
try {
//Scanner method to collect input
scanInput = scan.nextLine();
validScanInput = true;
}
catch (Exception e) {
//If user enters invalid input, the catch block will prevent errors.
System.out.println("Invalid input! Try typing a valid String!");
scan.next();
}
}
return scanInput;
}

public static EIssueType handleEnumInput(EIssueType[] validOptions) {
Scanner scan = new Scanner(System.in);
EIssueType result = null;

while (result == null) {
String scanInput = scan.nextLine().trim();

for (int i = 0; i < validOptions.length; i++) {
if (scanInput.equalsIgnoreCase(validOptions[i].name())) {
result = validOptions[i];
break;
}
}

if (result == null) {
System.out.println("Invalid input! Valid options are:");
for (EIssueType option : validOptions) {
System.out.println(" - " + option.name());
}
}
}

return result;
}

}
Loading