Java tutorial
/* * @(#)ParkingContextBean.java 1.0 16/10/2016 * * Copyright (c) 2016, hyperCLASS. All rights reserved. hyperCLASS * proprietary/confidential. Use is subject to license terms. */ package br.com.hyperclass.parking.config; import java.util.EnumMap; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.joda.time.DateTime; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import br.com.hyperclass.parking.domain.parking.CalculationForFifteenMinutesToThirty; import br.com.hyperclass.parking.domain.parking.CalculationForThirtyMinutesOrMore; import br.com.hyperclass.parking.domain.parking.CalculationOfTheFirstFifteenMinutes; import br.com.hyperclass.parking.domain.parking.HourValue; import br.com.hyperclass.parking.domain.parking.Parking; import br.com.hyperclass.parking.domain.parking.ParkingApplication; import br.com.hyperclass.parking.domain.parking.ParkingTimeValueCalculatorService; import br.com.hyperclass.parking.domain.parking.event.ParkingEvent; import br.com.hyperclass.parking.domain.parking.event.VehicleEntryEventTest; import br.com.hyperclass.parking.domain.parking.event.VehicleOutputEvent; import br.com.hyperclass.parking.domain.vacancy.Vacancy; import br.com.hyperclass.parking.domain.vehicle.Vehicle; import br.com.hyperclass.parking.domain.vehicle.VehicleColor; import br.com.hyperclass.parking.domain.vehicle.VehicleType; /** * A classe <code>ParkingContextBean</code> define o Bean dos valores por tipo de carro. * * @author Daniel Barbosa * @version 1.0 16/10/2016 */ @Configuration public class ParkingContextBean { @Bean public Map<VehicleType, HourValue> valuesByTypeOfVehicle() { final Map<VehicleType, HourValue> mapa = new EnumMap<>(VehicleType.class); mapa.put(VehicleType.CAR, new HourValue(3.0)); mapa.put(VehicleType.MOTORCYCLE, new HourValue(2.0)); mapa.put(VehicleType.BUS, new HourValue(7.0)); mapa.put(VehicleType.TRUCK, new HourValue(6.0)); return mapa; } @Bean public ParkingTimeValueCalculatorService parkingTimeValueCalculatorService() { final ParkingTimeValueCalculatorService parkingTimeValueCalculatorService = new CalculationForThirtyMinutesOrMore(); parkingTimeValueCalculatorService.setNext(new CalculationForFifteenMinutesToThirty()); parkingTimeValueCalculatorService.setNext(new CalculationOfTheFirstFifteenMinutes()); return parkingTimeValueCalculatorService; } @Bean public List<ParkingEvent> parkingEvents() { final List<ParkingEvent> parkingEvents = new LinkedList<>(); final Vehicle v1 = new Vehicle("gfsa-6543", "Civic", VehicleColor.GRAY, VehicleType.CAR); final Vehicle v2 = new Vehicle("dgka-7431", "Xj6", VehicleColor.BLACK, VehicleType.MOTORCYCLE); parkingEvents.add(new VehicleEntryEventTest(1, v1, new DateTime(1477933200000l))); parkingEvents.add(new VehicleOutputEvent(1, v1, new DateTime(1477934400000l), 1.5)); parkingEvents.add(new VehicleEntryEventTest(2, v2, new DateTime(1477999380000l))); parkingEvents.add(new VehicleOutputEvent(2, v2, new DateTime(1478002980000l), 2)); return parkingEvents; } @Bean public Parking parking() { final Map<Integer, Vacancy> vacancys = new HashMap<>(); for (int i = 1; i <= 30; i++) { vacancys.put(i, new Vacancy(i)); } Parking parking = new Parking(vacancys); return parking; } @Bean public ParkingApplication parkingApplication() { return new ParkingApplication(); } }