001    package data;
002    
003    /**
004             * Strategy that increases a {@link Stock Stock's} total value by adding {@link StockItem StockItems} that sum
005     * up to a given amount.
006     *
007     * @see Stock#fillStockWithValue
008     *
009     * @author Steffen Zschaler
010     * @version 2.0 18/08/1999
011     * @since v0.5
012     */
013    public interface StockFromValueCreator {
014    
015        /**
016         * The actual algorithm.
017         *
018         * <p>The method should add StockItems to <code>st</code> so that the total value of all these items becomes
019         * the biggest value that is smaller or equal <code>v</code>. The difference between <code>v</code> and the
020         * actual total value of the added StockItems is to be returned.</p>
021         *
022         * <p>To avoid dead-locks, this method must not trigger any threads!</p>
023         *
024         * @param st the Stock to which to add the StockItems.
025         * @param v the value to be added to the Stock.
026         * @param db the DataBasket relative to which to perform the operation.
027         *
028         * @override Always
029         */
030        public Value fillStock(Stock st, Value v, DataBasket db);
031    
032    }