-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLog.java
More file actions
89 lines (74 loc) · 3.96 KB
/
Log.java
File metadata and controls
89 lines (74 loc) · 3.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;
public class Log {
public ArrayList<Ticket> getInput() throws Exception{
ArrayList<Ticket> tickets = new ArrayList<>();
try {
File file = new File("Multithreaded-Parking-System-Simulation/input.txt");
Scanner s = new Scanner(file);
while (s.hasNextLine()) {
String data = s.nextLine();
Ticket ticket = new Ticket();
String[] information = data.split(",");
String[] values;
values = information[0].trim().split(" ");
ticket.gate = Integer.parseInt(values[1]);
values = information[1].trim().split(" ");
ticket.car = Integer.parseInt(values[1]);
values = information[2].trim().split(" ");
ticket.arrive = Integer.parseInt(values[1]);
values = information[3].trim().split(" ");
ticket.parks = Integer.parseInt(values[1]);
tickets.add(ticket);
}
s.close();
} catch (FileNotFoundException e) {
System.out.println("An error occurred.");
}
Collections.sort(tickets, Comparator.comparing(Ticket::getArrive).thenComparing(Ticket::getParks));
for(int i = 1; i < tickets.size(); ++i)
{
if(tickets.get(i).getArrive() == tickets.get(i-1).getArrive() && tickets.get(i).getGate() == tickets.get(i-1).getGate())
throw new InvalidInputException();
if(tickets.get(i-1).getParks() < 1 || tickets.get(i-1).getArrive() < 0)
throw new InvalidTimeException();
if(tickets.get(i-1).getGate() < 1 || tickets.get(i-1).getGate() > 4)
throw new InvalidGateException();
}
if(tickets.get(tickets.size()-1).getParks() < 1 || tickets.get(tickets.size()-1).getArrive() < 0)
throw new InvalidTimeException();
if(tickets.get(tickets.size()-1).getGate() < 1 || tickets.get(tickets.size()-1).getGate() > 4)
throw new InvalidGateException();
return tickets;
}
public void logArrive(Car car){
String arrivalMessage = "Car " + car.getCarId() + " from Gate "+ car.getGateId()+ " arrived at time " + car.getArrivalTime();
System.out.println(arrivalMessage);;
}
public void logWait(Car car){
String waitingMessage = "Car " + car.getCarId() + " from Gate "+ car.getGateId()+ " waiting for a spot. ";
System.out.println(waitingMessage);;
}
public void logPark(Car car, int occupiedSlots){
String parkedMessage = "Car " + car.getCarId() + " from Gate "+ car.getGateId()+ " parked." + " (Parking Status: "+occupiedSlots+" spots occupied)";
System.out.println(parkedMessage);;
}
public void logLeave(Car car, int occupiedSlots){
String leaveMessage = "Car " + car.getCarId() + " from Gate "+ car.getGateId()+ " left after " + car.getParkDuration() + " units of time." + " (Parking Status: "+occupiedSlots+" spots occupied)";
System.out.println(leaveMessage);;
}
public void logParkAFterWait(Car car, int occupiedSlots)
{
String parkAfterWaitMessage = "Car " + car.getCarId() + " from Gate "+ car.getGateId()+ " parked after waiting for " + car.getWaitingTime() + " units of time."+ " (Parking Status: "+occupiedSlots+" spots occupied)";
System.out.println(parkAfterWaitMessage);
}
public void printLogSummary(ArrayList<Ticket> tickets){
int servedGates[] = new int[4];
for (Ticket ticket : tickets) {
servedGates[ticket.getGate()]++;
}
String summary = "\n...\nTotal Cars Served: " + tickets.size() + "\nCurrent Cars in Parking: 0" + "\nDetails:" + "\n-Gate 1 served " + servedGates[1]+ " cars." + "\n-Gate 2 served " + servedGates[2]+ " cars." + "\n-Gate 3 served " + servedGates[3]+ " cars.";
System.out.println(summary);
}
}