diff --git a/src/com/zerofiltre/parkingbot/Main.java b/src/com/zerofiltre/parkingbot/Main.java deleted file mode 100644 index 4fac574..0000000 --- a/src/com/zerofiltre/parkingbot/Main.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.zerofiltre.parkingbot; - -public class Main { - - public static void main(String[] args) { - System.out.println("Hello World"); - } -} diff --git a/src/com/zerofiltre/parkingbot/ParkingBot.java b/src/com/zerofiltre/parkingbot/ParkingBot.java new file mode 100644 index 0000000..8b84976 --- /dev/null +++ b/src/com/zerofiltre/parkingbot/ParkingBot.java @@ -0,0 +1,41 @@ +package com.zerofiltre.parkingbot; + + +import com.zerofiltre.parkingbot.model.Parking; +import com.zerofiltre.parkingbot.model.Vehicle; +import com.zerofiltre.parkingbot.service.ParkingService; + +import java.util.List; + +import static com.zerofiltre.parkingbot.model.ParkingTypeEnum.SPOT; + +public class ParkingBot { + + static ParkingService parkingService = new ParkingService(); + + /** + * Ceci est la méthode Main + * + * @param args : Tableau de données entrées lors du lancement de l'application + */ + public static void main(String[] args) { +Parking parking = parkingService.initParking(); +listCars(parking); + } + + static void listCars (Parking parking){ + if (SPOT.equals(parking.getType())){ + Vehicle vehicle = parking.getVehicle(); + System.out.println("Vehicule d'immatriculation " + + vehicle.getRegistrationNumber() + +" situé à la place " + + vehicle.getParkingSpotNumber()); + }else{ + List subParkings = parking.getSubParkings(); + for (Parking subParking : subParkings){ + listCars(subParking); + } + } + } + +} \ No newline at end of file diff --git a/src/com/zerofiltre/parkingbot/model/Bicycle.java b/src/com/zerofiltre/parkingbot/model/Bicycle.java new file mode 100644 index 0000000..c0fe3c9 --- /dev/null +++ b/src/com/zerofiltre/parkingbot/model/Bicycle.java @@ -0,0 +1,10 @@ +package com.zerofiltre.parkingbot.model; + +public class Bicycle extends Vehicle{ + + @Override + public String getCategory() { + return "2 ROUES"; + } + +} \ No newline at end of file diff --git a/src/com/zerofiltre/parkingbot/model/Car.java b/src/com/zerofiltre/parkingbot/model/Car.java new file mode 100644 index 0000000..d45f8bc --- /dev/null +++ b/src/com/zerofiltre/parkingbot/model/Car.java @@ -0,0 +1,9 @@ +package com.zerofiltre.parkingbot.model; + +public class Car extends Vehicle{ + + @Override + public String getCategory() { + return "CITADINE"; + } +} \ No newline at end of file diff --git a/src/com/zerofiltre/parkingbot/model/Parking.java b/src/com/zerofiltre/parkingbot/model/Parking.java new file mode 100644 index 0000000..555b385 --- /dev/null +++ b/src/com/zerofiltre/parkingbot/model/Parking.java @@ -0,0 +1,47 @@ +package com.zerofiltre.parkingbot.model; + +import java.util.ArrayList; +import java.util.List; + +public class Parking { + + List subParkings = new ArrayList<>(); + Vehicle vehicle; + int number; + + public Vehicle getVehicle() { + return vehicle; + } + + public void setVehicle(Vehicle vehicle) { + this.vehicle = vehicle; + } + + public List getSubParkings() { + return subParkings; + } + + public void setSubParkings(List subParkings) { + this.subParkings = subParkings; + } + + public int getNumber() { + return number; + } + + public void setNumber(int number) { + this.number = number; + } + + public ParkingTypeEnum getType() { + return type; + } + + public void setType(ParkingTypeEnum type) { + this.type = type; + } + + ParkingTypeEnum type; + + +} diff --git a/src/com/zerofiltre/parkingbot/model/ParkingTypeEnum.java b/src/com/zerofiltre/parkingbot/model/ParkingTypeEnum.java new file mode 100644 index 0000000..f0393ef --- /dev/null +++ b/src/com/zerofiltre/parkingbot/model/ParkingTypeEnum.java @@ -0,0 +1,9 @@ +package com.zerofiltre.parkingbot.model; + +public enum ParkingTypeEnum { + + BUILDING, + FLOOR, + HALL, + SPOT +} diff --git a/src/com/zerofiltre/parkingbot/model/Ticket.java b/src/com/zerofiltre/parkingbot/model/Ticket.java new file mode 100644 index 0000000..5437568 --- /dev/null +++ b/src/com/zerofiltre/parkingbot/model/Ticket.java @@ -0,0 +1,49 @@ +package com.zerofiltre.parkingbot.model; + +import java.util.Date; + +public class Ticket { + + private double amount; + private Vehicle vehicle; + private Date enteringTime; + private Date exitTime; + + public double getAmount() { + return amount; + } + + public void setAmount(double amount) { + this.amount = amount; + } + + public Vehicle getVehicle() { + return vehicle; + } + + public void setVehicle(Vehicle vehicle) { + this.vehicle = vehicle; + } + + public Date getEnteringTime() { + return enteringTime; + } + + public void setEnteringTime(Date enteringTime) { + this.enteringTime = enteringTime; + } + + public Date getExitTime() { + return exitTime; + } + + public void setExitTime(Date exitTime) { + this.exitTime = exitTime; + } + + @Override + public String toString() { + return "Ticket d'un montant de :" +amount+ " € pour véhicule de type " + vehicle.getCategory() + " immatriculé: " +vehicle.getRegistrationNumber()+ " entré à " + enteringTime + " et sorti à " + exitTime; + + } +} diff --git a/src/com/zerofiltre/parkingbot/model/Vehicle.java b/src/com/zerofiltre/parkingbot/model/Vehicle.java new file mode 100644 index 0000000..87c1c0a --- /dev/null +++ b/src/com/zerofiltre/parkingbot/model/Vehicle.java @@ -0,0 +1,28 @@ +package com.zerofiltre.parkingbot.model; + +public class Vehicle { + + private String registrationNumber; + + private String parkingSpotNumber; + + public String getRegistrationNumber() { + return registrationNumber; + } + + public void setRegistrationNumber(String registrationNumber) { + this.registrationNumber = registrationNumber; + } + + public String getCategory() { + return "VEHICLE"; + } + + public String getParkingSpotNumber() { + return parkingSpotNumber; + } + + public void setParkingSpotNumber(String parkingSpotNumber) { + this.parkingSpotNumber = parkingSpotNumber; + } +} \ No newline at end of file diff --git a/src/com/zerofiltre/parkingbot/service/ParkingService.java b/src/com/zerofiltre/parkingbot/service/ParkingService.java new file mode 100644 index 0000000..5346d48 --- /dev/null +++ b/src/com/zerofiltre/parkingbot/service/ParkingService.java @@ -0,0 +1,80 @@ +package com.zerofiltre.parkingbot.service; + +import com.zerofiltre.parkingbot.model.Parking; +import com.zerofiltre.parkingbot.model.ParkingTypeEnum; +import com.zerofiltre.parkingbot.model.Ticket; +import com.zerofiltre.parkingbot.model.Vehicle; +import java.security.SecureRandom; +import java.util.Date; + +public class ParkingService { + + public Ticket processIncomingVehicle(Vehicle vehicle) { + Ticket ticket = new Ticket(); + Date now = new Date(); + ticket.setEnteringTime(now); + ticket.setVehicle(vehicle); + return ticket; + } + + public Ticket processExitingVehicle(Ticket ticket) { + long now = new Date().getTime(); + now += 60 * 60 * 1000; + + Date exitTime = new Date(now); + ticket.setExitTime(exitTime); + + Vehicle vehicle = ticket.getVehicle(); + String category = vehicle.getCategory(); + + double pricePerMinForCitadine = 0.08; + double pricePerMinFor2Roues = 0.02; + double defaultPricePerMin = 0.05; + long durationInMinutes = (ticket.getExitTime().getTime() - ticket.getEnteringTime().getTime()) / (60 * 1000); + + double finalPrice = 0; + + if ("CITADINE".equals(category)) { + finalPrice = durationInMinutes * pricePerMinForCitadine; + } else if ("2 ROUES".equals(category)) { + finalPrice = durationInMinutes * pricePerMinFor2Roues; + } else { + finalPrice = durationInMinutes * defaultPricePerMin; + } + ticket.setAmount(finalPrice); + + return ticket; + + } + + public Parking initParking() { + Parking building = new Parking(); + building.setType(ParkingTypeEnum.BUILDING); + building.setNumber(1); + for (int i = 0; i < 50; i++) { + Parking floor = new Parking(); + floor.setType(ParkingTypeEnum.FLOOR); + floor.setNumber(i); + + for (int j = 1; j <= 30; j++) { + Parking hall = new Parking(); + hall.setType(ParkingTypeEnum.HALL); + hall.setNumber(j); + for (int k = 1; k <= 20; k++) { + Parking spot = new Parking(); + spot.setType(ParkingTypeEnum.SPOT); + spot.setNumber(k); + Vehicle vehicle = new Vehicle(); + vehicle.setRegistrationNumber(String.valueOf(new SecureRandom().nextInt(10000))); + vehicle.setParkingSpotNumber(""); + vehicle.setParkingSpotNumber("1-" + i + "-" + j + "-" + k); + spot.setVehicle(vehicle); + hall.getSubParkings().add(spot); + } + floor.getSubParkings().add(hall); + } + building.getSubParkings().add(floor); + } + return building; + } +} \ No newline at end of file