-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy pathAccount.java
More file actions
102 lines (80 loc) · 2.73 KB
/
Account.java
File metadata and controls
102 lines (80 loc) · 2.73 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
90
91
92
93
94
95
96
97
98
99
100
101
102
package parkinglot;
import java.util.*;
import java.io.*;
public abstract class Account {
private String userName;
private String password;
private AccountStatus status;
private Person person;
ParkingLot parkingLot;
public Account(Person person, ParkingLot parkingLot) {
this.person = person;
this.parkingLot = parkingLot;
}
public boolean resetPassword() {
System.out.println("Resetting Password");
return true;
}
}
class Admin extends Account {
public Admin(Person person, ParkingLot parkingLot) {
super(person, parkingLot);
}
public boolean addParkingFloor(ParkingFloor floor) {
return parkingLot.addParkingFloor(floor);
}
public boolean addParkingSpot(String floorName, ParkingSpot spot) {
return parkingLot.addParkingSpot(floorName, spot);
}
public boolean addEntrancePanel(EntryPanel entrancePanel) {
return parkingLot.addEntrancePanel(entrancePanel);
}
public boolean addExitPanel(ExitPanel exitPanel) {
return parkingLot.addExitPanel(exitPanel);
}
public CustomerInfoPanel addCustomerInfoPanel() {
return new CustomerInfoPanel(parkingLot);
}
}
class ParkingAttendant extends Account implements TicketProcessor {
public ParkingAttendant(Person person, ParkingLot parkingLot) {
super(person, parkingLot);
}
public ParkingTicket newTicket(Vehicle vehicle, String floor) {
return newTicket(parkingLot, vehicle, floor);
}
public boolean processTicket(String ticketNumber) {
return processTicket(parkingLot, ticketNumber);
}
}
interface TicketProcessor {
default ParkingTicket newTicket(ParkingLot parkingLot, Vehicle vehicle, String floor) {
return parkingLot.newTicket(vehicle, floor);
}
default ParkingTicket newTicket(ParkingLot parkingLot, Vehicle vehicle) {
return parkingLot.newTicket(vehicle);
}
default boolean processTicket(ParkingLot parkingLot, String ticketNumber) {
ParkingTicket parkingTicket = getTicket(parkingLot, ticketNumber);
Double fee = parkingTicket.getFee();
System.out.println("Kindly pay a Fee of : " + fee);
if (parkingLot.collectFee(parkingTicket)) {
return parkingLot.processTicket(parkingTicket);
}
return false;
}
default ParkingTicket getTicket(ParkingLot parkingLot, String ticketNumber) {
return parkingLot.getTicket(ticketNumber);
}
}
class Person {
String firstName;
String lastName;
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
enum AccountStatus {
ACTIVE, BLOCKED, BANNED, COMPROMISED, ARCHIVED, UNKNOWN
}