예제 #1
0
 public void print() {
   int lastRow = -1;
   for (int i = 0; i < spots.length; i++) {
     ParkingSpot spot = spots[i];
     if (spot.getRow() != lastRow) {
       System.out.print("  ");
       lastRow = spot.getRow();
     }
     spot.print();
   }
 }
 /**
  * Retrieves a vehicle from the parking spot.
  *
  * @param ticket The <em>ticket</em> used to find the <em>Vehicle</em> in the parking.
  * @return The <em>Vehicle</em> that was parked.
  */
 public T retrieveVehicle(ParkingTicket ticket) {
   ParkingSpot<T> spot;
   T vehicle;
   spot = keyCupboard.get(ticket.getUniqueTicket());
   float distance = spot.getDistance();
   vehicle = spot.unparkVehicle();
   vehicle.start();
   vehicle.drive(distance);
   vehicle.stop();
   return vehicle;
 }
 /**
  * Parks a vehicle on an available spot in the parking. The vehicle <em>drive</em> method to
  * simulate driving the vehicle from reception to the parking spot.
  *
  * @param vehicle The <em>Vehicle</em> to be parked.
  * @return An <em>ParkingTicket</em> that can be used to retrieve the parked vehicle from the
  *     parking.
  */
 public ParkingTicket parkVehicle(T vehicle) {
   ParkingTicket ticket = new ParkingTicket(vehicle);
   ParkingSpot<T> spot = getFreeSpot();
   float distance = spot.getDistance();
   vehicle.start();
   vehicle.drive(distance);
   vehicle.stop();
   spot.parkVehicle(vehicle);
   keyCupboard.put(ticket.getUniqueTicket(), spot);
   return ticket;
 }
 /**
  * Iterates through all the parking lots until it finds one that is not occupied.
  *
  * @return The first unoccupied <em>ParkingSpot<T></em> it finds in the parking lot. This method
  *     throws an <em>IllegalStateException</em> in case there are no available parking spots.
  */
 private ParkingSpot<T> getFreeSpot() {
   ParkingSpot<T> spot = null;
   for (ParkingSpot<T> sc : parkingLot) {
     if (!sc.isOccupied()) {
       spot = sc;
       break;
     }
   }
   if (spot == null) {
     throw new IllegalStateException("The parking lot is full!");
   }
   return spot;
 }
예제 #5
0
 private int findAvailableSpots(Vehicle vehicle) {
   int spotsNeeded = vehicle.getSpotsNeeded();
   int lastRow = -1;
   int spotsFound = 0;
   for (int i = 0; i < spots.length; i++) {
     ParkingSpot spot = spots[i];
     if (lastRow != spot.getRow()) {
       spotsFound = 0;
       lastRow = spot.getRow();
     }
     if (spot.canFitVehicle(vehicle)) {
       spotsFound++;
     } else {
       spotsFound = 0;
     }
     if (spotsFound == spotsNeeded) {
       return i - (spotsNeeded - 1);
     }
   }
   return -1;
 }
예제 #6
0
 public void clearSpots() {
   for (ParkingSpot spot : parkingSpots) {
     spot.removeVehicle();
   }
 }
예제 #7
0
 public boolean canFitInSpot(ParkingSpot spot) {
   return spot.getSize() == VehicleSize.Large || spot.getSize() == VehicleSize.Compact;
 }
예제 #8
0
 public boolean canFitInSpot(ParkingSpot spot) {
   return spot.getSpotSize().equals("large");
 }