001 package data;
002
003 /**
004 * An item in a {@link Stock}.
005 *
006 * <p>StockItems describe actually available items. They refer to a {@link CatalogItem} and describe an item
007 * of the CatalogItem's type that is actually available in a Shop's storage, on an order form etc.</p>
008 *
009 * <p><strong>Note</strong> that the name as obtained via {@link Nameable#getName} is used as the StockItem's
010 * key when inserting the StockItem in a Stock.</p>
011 *
012 * <p>Stocks are a special form of StockItems.</p>
013 *
014 * @author Steffen Zschaler
015 * @version 2.0 18/08/1999
016 * @since v2.0
017 */
018 public interface StockItem extends Cloneable, Comparable, Nameable {
019
020 /**
021 * Get the Stock that contains this StockItem.
022 *
023 * @override Always
024 */
025 public Stock getStock();
026
027 /**
028 * Get the CatalogItem that is associated to this StockItem.
029 *
030 * @param db the DataBasket that is used for checking visibility.
031 *
032 * @override Always
033 */
034 public CatalogItem getAssociatedItem(DataBasket db);
035
036 /**
037 * Clone the StockItem.
038 *
039 * @override Always
040 */
041 public Object clone();
042 }