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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidautoAllocateSeat(AbstractOrderModel abstractOrderModel, Integer legNumber, List<String> travellerReferences) This strategy follows one rule that is to allocate the first available seat.protected booleanfindAvailableSeat(boolean isFirstAttempt, ConfiguredAccommodationType previousAccommodationType, List<SelectedAccommodationModel> selectedAccommodations, TransportOfferingModel transportOffering, Map<TravellerModel, ConfiguredAccommodationModel> travellerAccommodationMap, TravellerModel traveller, ConfiguredAccommodationModel configuredAccomModel) protected List<ConfiguredAccommodationModel>getAccommodationMapConfiguration(AccommodationMapModel accommodationMap) Gets and return list of configured accommodations belonging to a accommodation mapprotected AccommodationMapServiceprotected TravelCommerceStockServiceprotected Comparator<ConfiguredAccommodationModel>protected ConfiguredAccommodationModelgetFirstAvailableSeat(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.protected de.hybris.platform.servicelayer.model.ModelServiceprotected 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), unavailableprotected List<TransportOfferingModel>getTransportOfferings(AbstractOrderModel abstractOrderModel, Integer legNumber) This method returns a list of transportOfferings for the given leg.protected voidgetTransportOfferingTravelAccommodationMap(AbstractOrderModel abstractOrderModel, List<TravellerModel> travellers, String travelRoute, Map<TransportOfferingModel, Map<TravellerModel, ConfiguredAccommodationModel>> transportOfferingTravellerAccomodationMap, TransportOfferingModel transportOffering, Optional<TransportVehicleInfoModel> vehicleInfo, long numberOfSeatsToAllocate) protected TravellerServiceprotected StringgetTravelRoute(AbstractOrderModel abstractOrderModel, Integer legNumber) This method returns the travel route for the given leg.protected booleanisSeatAllocatedForTravellerInTransportOffering(List<SelectedAccommodationModel> selectedAccommodations, TransportOfferingModel transportOffering, TravellerModel traveller) This method returns true if the traveller has already been allocated (or selected) a seat.protected booleanisSeatAvailable(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.protected voidsaveAllocatedAccomodations(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.voidsetAccommodationMapService(AccommodationMapService accommodationMapService) voidsetCommerceStockService(TravelCommerceStockService commerceStockService) voidsetConfiguredAccomNumberComparator(Comparator<ConfiguredAccommodationModel> configuredAccomNumberComparator) voidsetModelService(de.hybris.platform.servicelayer.model.ModelService modelService) voidsetTravellerService(TravellerService travellerService)
-
Constructor Details
-
DefaultAutoAccommodationAllocationStrategy
public DefaultAutoAccommodationAllocationStrategy()
-
-
Method Details
-
autoAllocateSeat
public void autoAllocateSeat(AbstractOrderModel abstractOrderModel, Integer legNumber, List<String> travellerReferences) Description copied from interface:AutoAccommodationAllocationStrategyThis 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:
autoAllocateSeatin interfaceAutoAccommodationAllocationStrategy- Parameters:
abstractOrderModel- the abstract order modellegNumber- the leg numbertravellerReferences- 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
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
- Returns:
- the travellerService
-
setTravellerService
- Parameters:
travellerService- the travellerService to set
-
getAccommodationMapService
- Returns:
- the accommodationMapService
-
setAccommodationMapService
- Parameters:
accommodationMapService- the accommodationMapService to set
-
getConfiguredAccomNumberComparator
- Returns:
- the configuredAccomNumberComparator
-
setConfiguredAccomNumberComparator
public void setConfiguredAccomNumberComparator(Comparator<ConfiguredAccommodationModel> configuredAccomNumberComparator) - Parameters:
configuredAccomNumberComparator- the configuredAccomNumberComparator to set
-
getCommerceStockService
- Returns:
- the commerceStockService
-
setCommerceStockService
- 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
-