br.com.hyperclass.parking.config.ParkingContextBean.java Source code

Java tutorial

Introduction

Here is the source code for br.com.hyperclass.parking.config.ParkingContextBean.java

Source

/*
 * @(#)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();
    }

}