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; }
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; }
public void clearSpots() { for (ParkingSpot spot : parkingSpots) { spot.removeVehicle(); } }
public boolean canFitInSpot(ParkingSpot spot) { return spot.getSize() == VehicleSize.Large || spot.getSize() == VehicleSize.Compact; }
public boolean canFitInSpot(ParkingSpot spot) { return spot.getSpotSize().equals("large"); }