Interface StockHolder

All Known Subinterfaces:
PersonalStockHolder, StockHolderWrapper

public interface StockHolder
An interface that holds stock.

The implementation of this interface must be thread-safe.

  • Method Details

    • getName

      @NotNull @NotNull String getName()
      Gets the name of this holder.
      Returns:
      the name of this holder
    • getUUID

      @NotNull @NotNull UUID getUUID()
      Gets the uuid of this holder.
      Returns:
      the uuid of this holder
    • getAmount

      default int getAmount(@NotNull @NotNull BoxItem item)
      Gets the stock quantity of the specified item.
      Parameters:
      item - the item to get the stock
      Returns:
      the current stock quantity
      Throws:
      NullPointerException - if item is null
    • getAmount

      int getAmount(int itemId)
      Gets the stock quantity of the specified item.
      Parameters:
      itemId - the id of the BoxItem to get the stock
      Returns:
      the current stock quantity
      Throws:
      NullPointerException - if item is null
    • setAmount

      void setAmount(@NotNull @NotNull BoxItem item, @org.jetbrains.annotations.Range(from=0L, to=2147483647L) int amount, @NotNull StockEvent.Cause cause)
      Sets the stock quantity of the specified item.
      Parameters:
      item - the item to set the stock quantity
      amount - the amount
      cause - the cause that indicates why this method called
      Throws:
      IllegalArgumentException - if amount is negative
      NullPointerException - if item or cause is null
    • increase

      int increase(@NotNull @NotNull BoxItem item, @org.jetbrains.annotations.Range(from=0L, to=2147483647L) int increment, @NotNull StockEvent.Cause cause)
      Increases the stock of the specified item.

      If increment is zero, this method returns getAmount(BoxItem).

      The behavior when the stock has overflowed depends on the implementation.

      Parameters:
      item - the item to increase the stock
      increment - the amount to increase the stock
      cause - the cause that indicates why this method called
      Returns:
      the stock quantity after increasing
      Throws:
      IllegalArgumentException - if increment is negative
      NullPointerException - if item or cause is null
    • decrease

      int decrease(@NotNull @NotNull BoxItem item, @org.jetbrains.annotations.Range(from=0L, to=2147483647L) int decrement, @NotNull StockEvent.Cause cause)
      Decreases the stock of the specified item.

      If decrement is zero, this method returns getAmount(BoxItem).

      If the current stock is less than decrement, this method sets the stock to zero. In other words, this method does not guarantee that the stock is always decreased by decrement.

      If you want to decrease the stock when it is sufficient, use decreaseIfPossible(BoxItem, int, StockEvent.Cause).

      Parameters:
      item - the item to decrease the stock
      decrement - the amount to decrease the stock
      cause - the cause that indicates why this method called
      Returns:
      the stock quantity after decreasing
      Throws:
      IllegalArgumentException - if decrement is negative
      NullPointerException - if item or cause is null
    • decreaseToZero

      int decreaseToZero(@NotNull @NotNull BoxItem item, @org.jetbrains.annotations.Range(from=0L, to=2147483647L) int limit, @NotNull StockEvent.Cause cause)
      Decreases the stock of the specified item.

      This method has the following specification:

      • If the stock is less than limit, this method sets the stock to zero and returns the stock before set to zero
      • Otherwise, this method decreases the stock by limit and returns limit

      This method is useful when you want to decrease the stock as much as possible, with limit as the maximum decrement.

      Parameters:
      item - the item to decrease the stock
      limit - the maximum decrement
      cause - the cause that indicates why this method called
      Returns:
      the amount of decrement
      Throws:
      IllegalArgumentException - if limit is negative
      NullPointerException - if item or cause is null
    • decreaseIfPossible

      int decreaseIfPossible(@NotNull @NotNull BoxItem item, @org.jetbrains.annotations.Range(from=0L, to=2147483647L) int decrement, @NotNull StockEvent.Cause cause)
      Decreases the stock of the specified item.

      If the stock is less than the decrement, this method does not actually decrease it, and returns -1.

      Parameters:
      item - the item to decrease the stock
      decrement - the amount to decrease the stock
      cause - the cause that indicates why this method called
      Returns:
      the stock quantity after decreasing or -1 when the stock is less than the decrement
      Throws:
      IllegalArgumentException - if decrement is negative
      NullPointerException - if item or cause is null
    • decreaseIfPossible

      @NonExtendable default boolean decreaseIfPossible(@NotNull @NotNull Map<BoxItem,Integer> decrementMap, @NotNull StockEvent.Cause cause)
      Decreases the stock of the specified items.
      Parameters:
      decrementMap - the map (key: BoxItem, value: decrement)
      cause - the cause that indicates why this method called
      Returns:
      true if stock of all specified items is decreased, otherwise false
      Throws:
      IllegalArgumentException - if the negative value is contained in decrementMap
      NullPointerException - if decrementMap or cause is null
      See Also:
    • decreaseIfPossible

      boolean decreaseIfPossible(@NotNull @NotNull it.unimi.dsi.fastutil.objects.Object2IntMap<BoxItem> decrementMap, @NotNull StockEvent.Cause cause)
      Decreases the stock of the specified items.

      This method is implemented as follows:

      • If all items in the decrementMap are greater than the decrement (the value keyed by BoxItem), this method will actually decrease them and return true.
      • If even one item is lacking, it returns false without any stock modification.
      • If decrementMap is empty, this method returns true.
      • When the negative value is contained in decrementMap, this method throws IllegalArgumentException
      • When the decrement value is zero, this method ignores it.
      Parameters:
      decrementMap - the map (key: BoxItem, value: decrement)
      cause - the cause that indicates why this method called
      Returns:
      true if stock of all specified items is decreased, otherwise false
      Throws:
      IllegalArgumentException - if the negative value is contained in decrementMap
      NullPointerException - if decrementMap or cause is null
    • getStockedItems

      @NotNull @NotNull @Unmodifiable Collection<BoxItem> getStockedItems()
      Gets a stocked item collection.
      Returns:
      a stocked item collection.
    • toStockDataCollection

      @NotNull @NotNull @Unmodifiable Collection<StockData> toStockDataCollection()
      Gets the current stock as a StockData collection.
      Returns:
      the collection of StockData
    • reset

      @NotNull @NotNull @Unmodifiable Collection<StockData> reset()
      Resets all stock.
      Returns:
      the collection of StockData before reset