Class DefaultAutoAccommodationAllocationStrategy

java.lang.Object
de.hybris.platform.travelservices.strategies.impl.DefaultAutoAccommodationAllocationStrategy
All Implemented Interfaces:
AutoAccommodationAllocationStrategy
Direct Known Subclasses:
DefaultShoppingAutoAccommodationAllocationStrategy

public class DefaultAutoAccommodationAllocationStrategy extends Object implements AutoAccommodationAllocationStrategy
Strategy class to auto allocate seats. This strategy follows one rule that is to allocate the first seat that is available. Accommodation types are represented in the following hierarchy Decks -> Cabin -> Rows -> Columns -> Seats. So, finding the first seat available, resembles the traditional DFS(Depth first search) algorithm.
  • Constructor Details

    • DefaultAutoAccommodationAllocationStrategy

      public DefaultAutoAccommodationAllocationStrategy()
  • Method Details

    • autoAllocateSeat

      public void autoAllocateSeat(AbstractOrderModel abstractOrderModel, Integer legNumber, List<String> travellerReferences)
      Description copied from interface: AutoAccommodationAllocationStrategy
      This strategy follows one rule that is to allocate the first available seat. Accommodation types are represented in the following hierarchy Decks -> Cabin -> Rows -> Columns -> Seats. So, finding the first seat available, resembles the traditional DFS(Depth first search) algorithm.
      Specified by:
      autoAllocateSeat in interface AutoAccommodationAllocationStrategy
      Parameters:
      abstractOrderModel - the abstract order model
      legNumber - the leg number
      travellerReferences - the traveller references
    • getTransportOfferingTravelAccommodationMap

      protected void getTransportOfferingTravelAccommodationMap(AbstractOrderModel abstractOrderModel, List<TravellerModel> travellers, String travelRoute, Map<TransportOfferingModel,Map<TravellerModel,ConfiguredAccommodationModel>> transportOfferingTravellerAccomodationMap, TransportOfferingModel transportOffering, Optional<TransportVehicleInfoModel> vehicleInfo, long numberOfSeatsToAllocate)
    • saveAllocatedAccomodations

      protected void saveAllocatedAccomodations(Map<TransportOfferingModel,Map<TravellerModel,ConfiguredAccommodationModel>> transportOfferingTravellerAccomodationMap, AbstractOrderModel abstractOrderModel)
      Once all seats are found, creates SelectedAccommodationModel for each traveller for which we need to auto allocate and save them.
      Parameters:
      transportOfferingTravellerAccomodationMap - a Map of TransportOfferings as key and Map as value.
      abstractOrderModel - AbstractOrderModel object.
    • getFirstAvailableSeat

      protected ConfiguredAccommodationModel getFirstAvailableSeat(List<ConfiguredAccommodationModel> accomodationConfigurations, boolean isFirstAttempt, ConfiguredAccommodationType previousAccommodationType, List<SelectedAccommodationModel> selectedAccommodations, TransportOfferingModel transportOffering, Map<TravellerModel,ConfiguredAccommodationModel> travellerAccommodationMap, TravellerModel traveller)
      This method gets called recursively until we reach the bottom of accommodation ladder(Seats) and an unoccupied seat is found. Each time a search is performed on an accommodation type(ie, Decks or cabins or Rows or Columns) they are sorted as defined in configuredAccomNumberComparator. Also, the process is constantly checked if the accommodations data are in correct hierarchy. Throws AccommodationMapDataSetUpException if the data is not in correct hierarchy. Once the seat is found store it in travellerAccommodationMap against the traveller.
      Parameters:
      accomodationConfigurations -
      isFirstAttempt -
      previousAccommodationType -
      selectedAccommodations -
      transportOffering -
      travellerAccommodationMap -
      traveller -
      Returns:
    • findAvailableSeat

      protected boolean findAvailableSeat(boolean isFirstAttempt, ConfiguredAccommodationType previousAccommodationType, List<SelectedAccommodationModel> selectedAccommodations, TransportOfferingModel transportOffering, Map<TravellerModel,ConfiguredAccommodationModel> travellerAccommodationMap, TravellerModel traveller, ConfiguredAccommodationModel configuredAccomModel)
    • isSeatAvailable

      protected boolean isSeatAvailable(ConfiguredAccommodationModel seat, List<SelectedAccommodationModel> selectedAccommodations, TransportOfferingModel transportOffering, Map<TravellerModel,ConfiguredAccommodationModel> travellerAccommodationMap)
      This method returns true if the seat is available, as in The stock for the seat product is greater than O. The seat is not an already selected seat in the same transport offering. And it is not allocated to the one of the travellers in the current allocation process.
      Parameters:
      seat -
      selectedAccommodations -
      transportOffering -
      travellerAccommodationMap -
      Returns:
    • getTravelRoute

      protected String getTravelRoute(AbstractOrderModel abstractOrderModel, Integer legNumber)
      This method returns the travel route for the given leg.
      Parameters:
      abstractOrderModel -
      legNumber -
      Returns:
    • getTransportOfferings

      protected List<TransportOfferingModel> getTransportOfferings(AbstractOrderModel abstractOrderModel, Integer legNumber)
      This method returns a list of transportOfferings for the given leg.
      Parameters:
      abstractOrderModel -
      legNumber -
      Returns:
    • isSeatAllocatedForTravellerInTransportOffering

      protected boolean isSeatAllocatedForTravellerInTransportOffering(List<SelectedAccommodationModel> selectedAccommodations, TransportOfferingModel transportOffering, TravellerModel traveller)
      This method returns true if the traveller has already been allocated (or selected) a seat.
      Parameters:
      selectedAccommodations -
      transportOffering -
      traveller -
      Returns:
    • getAccommodationMapConfiguration

      protected List<ConfiguredAccommodationModel> getAccommodationMapConfiguration(AccommodationMapModel accommodationMap) throws AccommodationMapDataSetUpException
      Gets and return list of configured accommodations belonging to a accommodation map
      Parameters:
      accommodationMap -
      Returns:
      Throws:
      AccommodationMapDataSetUpException
    • getSelectedAccommodations

      protected List<SelectedAccommodationModel> getSelectedAccommodations(TransportOfferingModel transportOffering)
      Create the status parameters to find selected accommodations that belong to an order, for making accommodations already selected and already added to order(not in cancelled state), unavailable
      Parameters:
      transportOffering -
      Returns:
    • getTravellerService

      protected TravellerService getTravellerService()
      Returns:
      the travellerService
    • setTravellerService

      public void setTravellerService(TravellerService travellerService)
      Parameters:
      travellerService - the travellerService to set
    • getAccommodationMapService

      protected AccommodationMapService getAccommodationMapService()
      Returns:
      the accommodationMapService
    • setAccommodationMapService

      public void setAccommodationMapService(AccommodationMapService accommodationMapService)
      Parameters:
      accommodationMapService - the accommodationMapService to set
    • getConfiguredAccomNumberComparator

      protected Comparator<ConfiguredAccommodationModel> getConfiguredAccomNumberComparator()
      Returns:
      the configuredAccomNumberComparator
    • setConfiguredAccomNumberComparator

      public void setConfiguredAccomNumberComparator(Comparator<ConfiguredAccommodationModel> configuredAccomNumberComparator)
      Parameters:
      configuredAccomNumberComparator - the configuredAccomNumberComparator to set
    • getCommerceStockService

      protected TravelCommerceStockService getCommerceStockService()
      Returns:
      the commerceStockService
    • setCommerceStockService

      public void setCommerceStockService(TravelCommerceStockService commerceStockService)
      Parameters:
      commerceStockService - the commerceStockService to set
    • getModelService

      protected de.hybris.platform.servicelayer.model.ModelService getModelService()
      Returns:
      the modelService
    • setModelService

      public void setModelService(de.hybris.platform.servicelayer.model.ModelService modelService)
      Parameters:
      modelService - the modelService to set