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
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 10 additions & 17 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

54 changes: 49 additions & 5 deletions src/ParkingLot/client.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,60 @@
import ParkingLot.dtos.IssueTicketRequestDTO;
import ParkingLot.dtos.IssueTicketResponseDTO;
import ParkingLot.dtos.ResponseStatus;
import ParkingLot.models.VehicleType;
import ParkingLot.models.*;
import ParkingLot.repositories.GateRepository;
import ParkingLot.repositories.ParkingLotRepository;
import ParkingLot.repositories.TicketRepository;
import ParkingLot.repositories.VehicleRepository;
import ParkingLot.services.TicketService;

import java.util.List;

public class client {
public static void main(String[] args) {
//creating parking lot, floor and slot and storing in parkinglot repository
ParkingLot parkingLot = new ParkingLot();

ParkingFloor parkingFloor = new ParkingFloor();

ParkingSlot parkingSlot1 = new ParkingSlot("1", ParkingSlotStatus.EMPTY, VehicleType.THREE_WHEELER, parkingFloor);
ParkingSlot parkingSlot2 = new ParkingSlot("2", ParkingSlotStatus.EMPTY, VehicleType.TWO_WHEELER, parkingFloor);

parkingFloor.setFloorNumber("1");
parkingFloor.setParkingFloorStatus(ParkingFloorStatus.OPEN);
parkingFloor.setParkingSlots(List.of(parkingSlot1, parkingSlot2));

parkingLot.setParkingFloors(List.of(parkingFloor));
parkingLot.setName("Parking Lot");
parkingLot.setParkingLotStatus(ParkingLotStatus.OPEN);
parkingLot.setSlotAssignmentStrategyType(SlotAssignmentStrategyType.RANDOM);

ParkingLotRepository parkingLotRepository = new ParkingLotRepository();
parkingLotRepository.save(parkingLot);

//creating gate and operator and storing in gate repository
Operator operator1 = new Operator();
Operator operator2 = new Operator();
operator1.setOperatorName("Operator1");
operator2.setOperatorName("Operator2");

Gate gate1 = new Gate("1", operator1, GateType.ENTRY, GateStatus.OPEN, parkingLot);
Gate gate2 = new Gate("2", operator2, GateType.EXIT, GateStatus.OPEN, parkingLot);

GateRepository gateRepository = new GateRepository();
gateRepository.save(gate1);
gateRepository.save(gate2);
parkingLot.setEntryGates(List.of(gate1));
parkingLot.setExitGates(List.of(gate2));

//creating vehicles and storing in vehicle repository
Vehicle vehicle1 = new Vehicle("DL 1VC 0001", "Raj", VehicleType.TWO_WHEELER);
Vehicle vehicle2 = new Vehicle("DL 1VC 00012", "Mohit sharma", VehicleType.THREE_WHEELER);

VehicleRepository vehicleRepository = new VehicleRepository();
vehicleRepository.save(vehicle1);
vehicleRepository.save(vehicle2);

TicketRepository ticketRepository = new TicketRepository();

TicketService ticketService = new TicketService(
Expand All @@ -24,10 +68,10 @@ public static void main(String[] args) {
TicketController ticketController = new TicketController(ticketService);

IssueTicketRequestDTO request = new IssueTicketRequestDTO();
request.setGateId(1);
request.setVehicleNumber("DL 1VC 0001");
request.setVehicleType(VehicleType.THREE_WHEELER);
request.setOwnerName("Mohit sharma");
request.setGateId(gate1.getId());
request.setVehicleNumber(vehicle1.getLicensePlate());
request.setVehicleType(vehicle1.getVehicleType());
request.setOwnerName(vehicle1.getOwnerName());

IssueTicketResponseDTO responseDTO = ticketController.issueTicket(request);
if(responseDTO.getResponseStatus().equals(ResponseStatus.SUCCESS)){
Expand Down
10 changes: 10 additions & 0 deletions src/ParkingLot/models/Gate.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,16 @@ public class Gate extends BaseModel{
private GateStatus gateStatus;
private ParkingLot parkingLot;

public Gate() {}

public Gate(String gateNumber, Operator operator, GateType gateType, GateStatus gateStatus, ParkingLot parkingLot) {
this.gateNumber = gateNumber;
this.operator = operator;
this.gateType = gateType;
this.gateStatus = gateStatus;
this.parkingLot = parkingLot;
}

public String getGateNumber() {
return gateNumber;
}
Expand Down
7 changes: 7 additions & 0 deletions src/ParkingLot/models/ParkingSlot.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@ public class ParkingSlot extends BaseModel{
private VehicleType vehicleType;
private ParkingFloor parkingFloor;

public ParkingSlot(String slotNumber, ParkingSlotStatus parkingSlotStatus, VehicleType vehicleType, ParkingFloor parkingFloor) {
this.slotNumber = slotNumber;
this.parkingSlotStatus = parkingSlotStatus;
this.vehicleType = vehicleType;
this.parkingFloor = parkingFloor;
}

public VehicleType getVehicleType() {
return vehicleType;
}
Expand Down
8 changes: 8 additions & 0 deletions src/ParkingLot/models/Vehicle.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@ public class Vehicle extends BaseModel{
private String ownerName;
private VehicleType vehicleType;

public Vehicle() {}

public Vehicle(String licensePlate, String ownerName, VehicleType vehicleType) {
this.licensePlate = licensePlate;
this.ownerName = ownerName;
this.vehicleType = vehicleType;
}

public VehicleType getVehicleType() {
return vehicleType;
}
Expand Down
19 changes: 19 additions & 0 deletions src/ParkingLot/repositories/GateRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,29 @@
import ParkingLot.models.Gate;

import javax.swing.text.html.Option;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

public class GateRepository {
private Map<Integer, Gate> gates;
private static int id = 1;

public GateRepository() {
gates = new HashMap<>();
}

public Gate save(Gate gate) {
gate.setId(id);
gates.put(id, gate);
id++;
return gate;
}

public Optional<Gate> findGateById(int gateId){
if(gates.containsKey(gateId)){
return Optional.of(gates.get(gateId));
}
return Optional.empty();
}
}
Expand Down
8 changes: 8 additions & 0 deletions src/ParkingLot/repositories/ParkingLotRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@

public class ParkingLotRepository {
private Map<Integer , ParkingLot> parkingLots = new TreeMap<>();
private static int id = 1;

public ParkingLot save(ParkingLot parkingLot) {
parkingLot.setId(id);
parkingLots.put(id, parkingLot);
id++;
return parkingLot;
}

public ParkingLot findParkingLotByEntryGate(Gate gateToCheck){
for(ParkingLot parkingLot : parkingLots.values()){
Expand Down
20 changes: 18 additions & 2 deletions src/ParkingLot/repositories/VehicleRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,31 @@

import ParkingLot.models.Vehicle;

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

public class VehicleRepository {
Map<Integer, Vehicle> vehicles;
public static int id = 1;

public VehicleRepository() {
vehicles = new HashMap<>();
}

public Optional<Vehicle> findVehicleByNumber(String vehicleNumber){
for(Vehicle v : vehicles.values()){
if(v.getLicensePlate().equals(vehicleNumber)){
return Optional.of(v);
}
}
return Optional.empty();
}

public Vehicle save(Vehicle vehicle){
// id will be attached
return null;
vehicle.setId(id);
vehicles.put(id, vehicle);
id++;
return vehicle;
}
}