Package org.talend.services.reservationservice.service

Source Code of org.talend.services.reservationservice.service.ReservationServiceImpl

/*
* #%L
* ReservationService Service
* %%
* Copyright (C) 2011 - 2014 Talend Inc.
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/

/**
* Please modify this class to meet your needs
* This class is not complete
*/

package org.talend.services.reservationservice.service;

import java.util.logging.Logger;
//import javax.jws.WebMethod;
//import javax.jws.WebParam;
//import javax.jws.WebResult;
//import javax.jws.WebService;
//import javax.jws.soap.SOAPBinding;
//import javax.xml.bind.annotation.XmlSeeAlso;

import java.math.BigInteger;

import org.talend.services.crm.types.CRMStatusType;
import org.talend.services.reservation.types.ConfirmationType;
import org.talend.services.reservation.types.RESCarListType;
import org.talend.services.reservation.types.RESCarType;
import org.talend.services.reservation.types.RESProfileType;
import org.talend.services.reservation.types.RESStatucCodeType;
import org.talend.services.reservation.types.RESStatusType;
import org.talend.services.reservation.types.ReservationType;
import org.talend.services.reservationservice.ReservationService;

/**
* This class was generated by Apache CXF 2.4.0-SNAPSHOT
* 2011-01-17T11:54:21.894+02:00
* Generated source version: 2.4.0-SNAPSHOT
*
*/

                    
public class ReservationServiceImpl implements ReservationService {

    private static final Logger LOG = Logger.getLogger(ReservationServiceImpl.class.getName());
  private org.talend.services.reservation.types.ObjectFactory resFactory;
  private org.talend.services.crm.types.ObjectFactory crmFactory;

 
  // ####################################################
  // Constructors
  // ####################################################

  public ReservationServiceImpl() {
    resFactory = new org.talend.services.reservation.types.ObjectFactory();
    crmFactory = new org.talend.services.crm.types.ObjectFactory();
  }
 
  // ####################################################
  // Public methods
  // ####################################################

  /**
   * {@inheritDoc}
   */
  public org.talend.services.reservation.types.RESCarListType getAvailableCars(
      org.talend.services.reservation.types.RESProfileType profile) {
    //
    logData("getAvailableCars", "request", profile);
    // Load customer data
    RESCarListType carList = getListOfAvailableCars(profile);

    logData("getAvailableCars", "response", carList);
    return carList;
  }

  /**
   * {@inheritDoc}
   */
  public org.talend.services.reservation.types.ConfirmationType getConfirmationOfReservation(
      org.talend.services.reservation.types.ReservationType reservation) {
    //
    logData("getConfirmationOfReservation", "request", reservation);
    // Load customer data
    ConfirmationType status = getCarReservation(reservation);

    logData("getConfirmationOfReservation", "response", status);
    return status;
  }

  /**
   * {@inheritDoc}
   */
  public org.talend.services.reservation.types.RESStatusType submitCarReservation(
      org.talend.services.reservation.types.ReservationType reservation) {
    //
    logData("submitCarReservation", "request", reservation);
    // Load customer data
    RESStatusType status = startCarReservation(reservation);

    logData("submitCarReservation", "response", status);
    return status;
  }

  // ####################################################
  // Private methods
  // ####################################################

  private RESCarListType getListOfAvailableCars(RESProfileType profile) {
    /*
     * <xsd:enumeration value="NONE" /> <xsd:enumeration value="NORMAL" />
     * <xsd:enumeration value="GOLD" /> <xsd:enumeration value="PLATINUM" />
     */
    RESCarListType carList = resFactory.createRESCarListType();

    CRMStatusType status = profile.getCrmStatus();
    if (status == CRMStatusType.NONE) {
      carList.getCar().add(
          createCar("01-001-00099", "Panda", "Basic", "Fiat",
              "30.00", "45.00", "25.00"));
    } else if (status == CRMStatusType.NORMAL) {
      carList.getCar().add(
          createCar("01-001-00099", "Panda", "Basic", "Fiat",
              "30.00", "45.00", "25.00"));
      carList.getCar().add(
          createCar("01-002-00079", "Fiesta", "Basic", "Ford",
              "40.00", "55.00", "35.00"));
      carList.getCar().add(
          createCar("01-004-00022", "Golf", "Standard", "VW",
              "50.00", "75.00", "40.00"));
    } else if (status == CRMStatusType.GOLD) {
      carList.getCar().add(
          createCar("01-002-00079", "Fiesta", "Basic", "Ford",
              "40.00", "55.00", "35.00"));
      carList.getCar().add(
          createCar("01-004-00022", "Golf", "Standard", "VW",
              "50.00", "75.00", "40.00"));
      carList.getCar().add(
          createCar("01-008-00102", "320i", "Sport", "BMW", "60.00",
              "90.00", "45.00"));
      carList.getCar().add(
          createCar("01-015-00002", "MX5", "Sport", "Mazda", "65.00",
              "95.00", "50.00"));
    } else if (status == CRMStatusType.PLATINUM) {
      carList.getCar().add(
          createCar("01-004-00022", "Golf", "Standard", "VW",
              "50.00", "75.00", "40.00"));
      carList.getCar().add(
          createCar("01-004-00022", "320i", "Sport", "BMW", "60.00",
              "90.00", "45.00"));
      carList.getCar().add(
          createCar("01-004-00022", "MX5", "Sport", "Mazda", "65.00",
              "95.00", "50.00"));
      carList.getCar().add(
          createCar("01-004-00022", "LX400", "SUV", "Lexus", "85.00",
              "120.00", "100.00"));
      carList.getCar().add(
          createCar("01-004-00022", "E320", "Delux", "Mercedes",
              "95.00", "140.00", "100.00"));
    }

    return carList;
  }

  private ConfirmationType getCarReservation(ReservationType reservation) {
    ConfirmationType status = resFactory.createConfirmationType();
    status.setCustomer(reservation.getCustomer());
    status.setFromDate(reservation.getFromDate());
    status.setToDate(reservation.getToDate());
   
    String clazz = reservation.getCar().getClazz();
    status.setCreditPoints(new BigInteger("0"));

    if (clazz.equalsIgnoreCase("BASIC")) {
      status.setCreditPoints(new BigInteger("120"));
    } else if (clazz.equalsIgnoreCase("STANDRAD")) {
      status.setCreditPoints(new BigInteger("180"));
    } else if (clazz.equalsIgnoreCase("SPORT")) {
      status.setCreditPoints(new BigInteger("210"));
    } else if (clazz.equalsIgnoreCase("SUV")) {
      status.setCreditPoints(new BigInteger("280"));
    } else if (clazz.equalsIgnoreCase("DELUX")) {
      status.setCreditPoints(new BigInteger("280"));
    }

    // status.setCode(RESStatucCodeType.OK);
    if (reservation.getReservationId() != null) {
      status.setReservationId(reservation.getReservationId());
    }
   
    status.setDescription("Your reservation is booked!");
    RESCarType car = reservation.getCar();
    status.setCar(car);
   
    if (car != null) {
      // check design model
      String model = car.getDesignModel();

      if ((model != null) && (model.equalsIgnoreCase("GOLF"))) {
        //
        // status.setCode(RESStatucCodeType.FAILED);
        status.setDescription("Your reservation failed! This car is booked by an other customer already.");
      }
    }

    return status;
  }

  private RESStatusType startCarReservation(ReservationType reservation) {
    //
    RESStatusType status = resFactory.createRESStatusType();
    status.setCode(RESStatucCodeType.OK);
    status.setId(generateID());
    status.setDescription("Your reservation is booked!");

    return status;
  }

  private RESCarType createCar(String id, String designModel, String clazz,
      String brand, String rateDay, String rateWeekend, String guarantee) {
    RESCarType car = resFactory.createRESCarType();
    car.setCarId(id);
    car.setBrand(brand);
    car.setClazz(clazz);
    car.setDesignModel(designModel);
    car.setRateDay(rateDay);
    car.setRateWeekend(rateWeekend);
    car.setSecurityGuarantee(guarantee);
    return car;
  }

  private void logData(String operation, String option, Object data) {
    System.out.println("###############################################");
    System.out.println(operation + "() invoked ... " + option + " data:");
    System.out.println(data);
    System.out.println("###############################################");
  }

  private static final String generateID() {
    String string = Long.toString(System.nanoTime());
    return "SGA-" + string.substring(string.length() - 6);
  }
}
TOP

Related Classes of org.talend.services.reservationservice.service.ReservationServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.