Class PriceDetailComparator

java.lang.Object
com.broadleafcommerce.pricing.service.PriceDetailComparator
All Implemented Interfaces:
Serializable, Comparator<com.broadleafcommerce.pricing.client.domain.PriceDetailComparable>

public class PriceDetailComparator extends Object implements Comparator<com.broadleafcommerce.pricing.client.domain.PriceDetailComparable>, Serializable
Comparator for PriceListPriceDetail used to determine the best price for a PriceableTarget. The default puts nulls last except for prices where null is equal to zero. This comparator compares in order:
  1. Whether the two details are null, nulls last
  2. The PriceListPriceDetail.getPriceListPriority(), nulls last
  3. The PriceListPriceDetail.getPriority(), nulls last
  4. The PriceListPriceDetail.getPrice(), null equals 0
  5. The PriceListPriceDetail.getRecurringPriceDetail(), nulls first. If neither are null, compares RecurringPriceDetail.getPrice(), null equals 0.
  6. The PriceListPriceDetail.getUsagePriceDetail(), nulls first. If neither are null, compares RecurringPriceDetail.getPrice(), null equals 0.
Author:
Nathan Moore (nathandmoore)
See Also:
  • Constructor Details

    • PriceDetailComparator

      public PriceDetailComparator(javax.money.CurrencyUnit requestedCurrency, boolean includeListPriority, boolean includeDetailPriority)
    • PriceDetailComparator

      public PriceDetailComparator(javax.money.CurrencyUnit requestedCurrency, boolean includeListPriority, boolean includeDetailPriority, boolean preferContractPriceLists)
  • Method Details

    • compare

      public int compare(com.broadleafcommerce.pricing.client.domain.PriceDetailComparable a, com.broadleafcommerce.pricing.client.domain.PriceDetailComparable b)
      Specified by:
      compare in interface Comparator<com.broadleafcommerce.pricing.client.domain.PriceDetailComparable>
    • buildPriceComparator

      protected Comparator<com.broadleafcommerce.pricing.client.domain.PriceDetailComparable> buildPriceComparator(Comparator<com.broadleafcommerce.pricing.client.domain.PriceDetailComparable> comparator, com.broadleafcommerce.pricing.client.domain.PriceDetailComparable a, com.broadleafcommerce.pricing.client.domain.PriceDetailComparable b)
    • nullsLast

      protected int nullsLast(Object a, Object b)
    • compareCurrency

      protected int compareCurrency(com.broadleafcommerce.pricing.client.domain.PriceDetailComparable val1, com.broadleafcommerce.pricing.client.domain.PriceDetailComparable val2)
    • comparePrice

      protected int comparePrice(javax.money.MonetaryAmount val1, javax.money.MonetaryAmount val2)
    • preferContractPriceLists

      protected int preferContractPriceLists(com.broadleafcommerce.pricing.client.domain.PriceDetailComparable a, com.broadleafcommerce.pricing.client.domain.PriceDetailComparable b)
    • compareRecurringPriceDetail

      protected int compareRecurringPriceDetail(com.broadleafcommerce.pricing.client.domain.PriceDetailComparable a, com.broadleafcommerce.pricing.client.domain.PriceDetailComparable b)
    • compareUsagePriceDetails

      protected int compareUsagePriceDetails(com.broadleafcommerce.pricing.client.domain.PriceDetailComparable a, com.broadleafcommerce.pricing.client.domain.PriceDetailComparable b)
    • getRequestedCurrency

      public javax.money.CurrencyUnit getRequestedCurrency()
    • isIncludeListPriority

      public boolean isIncludeListPriority()
    • isIncludeDetailPriority

      public boolean isIncludeDetailPriority()
    • isPreferContractPriceLists

      public boolean isPreferContractPriceLists()
    • getPcUtility

      public PriceComparisonUtility getPcUtility()
    • setRequestedCurrency

      public void setRequestedCurrency(javax.money.CurrencyUnit requestedCurrency)
    • setIncludeListPriority

      public void setIncludeListPriority(boolean includeListPriority)
    • setIncludeDetailPriority

      public void setIncludeDetailPriority(boolean includeDetailPriority)
    • setPreferContractPriceLists

      public void setPreferContractPriceLists(boolean preferContractPriceLists)
    • setPcUtility

      public void setPcUtility(PriceComparisonUtility pcUtility)