001    package data.ooimpl;
002    
003    import data.*; // This is to help javadoc...
004    
005    /**
006     * DataBasketEntry that describes operations with StoringStock's items. The
007     * fields of the <code>DataBasketEntry</code> are set as follows:
008     *
009     * <table border=1>
010     * <tr><td><strong>Field</strong></td><td><strong>Value</strong></td></tr>
011     * <tr><td>{@link DataBasketEntry#getMainKey main key}</td>
012     *     <td>{@link DataBasketKeys#STOCK_ITEM_MAIN_KEY STOCK_ITEM_MAIN_KEY}
013     *     </td>
014     * </tr>
015     * <tr><td>{@link DataBasketEntry#getSecondaryKey secondary key}</td>
016     *     <td>{@link StockItem#getName name} of the StockItem in question</td>
017     * </tr>
018     * <tr><td>{@link DataBasketEntry#getSource source}</td>
019     *     <td>{@link Stock source stock}<td>
020     * </tr>
021     * <tr><td>{@link DataBasketEntry#getDestination destination}</td>
022     *     <td>{@link Stock destination stock}<td>
023     * </tr>
024     * <tr><td>{@link DataBasketEntry#getValue value}</td>
025     *     <td>{@link StockItem} that was moved.<td>
026     * </tr>
027     * </table>
028     *
029     * @author Steffen Zschaler
030     * @version 2.0 19/09/1999
031     * @since v2.0
032     */
033    public class StoringStockItemDBEntry extends StockItemDBEntry {
034    
035        /**
036         * Create a new StoringStockItemDBEntry.
037         *
038         * @param sstiSource the source Stock.
039         * @param sstiDest the destination Stock.
040         * @param siiItem the item that was operated on.
041         */
042        public StoringStockItemDBEntry(StoringStockImpl sstiSource, StoringStockImpl sstiDest,
043                StockItemImpl siiItem) {
044            super(siiItem.getName(), sstiSource, sstiDest, siiItem);
045        }
046    
047        /**
048         * Rollback the destination part of the operation described by this {@link data.DataBasketEntry}.
049         *
050         * <p>The method will correctly update the underlying DataBasket.</p>
051         *
052         * <p><strong>Attention</strong>: The method is public as an implementation detail and should not be called
053         * directly.</p>
054         *
055         * @override Never
056         */
057        public void rollbackDestination() {
058            DataBasketEntryImpl dbe = new StoringStockItemDBEntry(null, (StoringStockImpl)getDestination(),
059                    (StockItemImpl)getValue());
060    
061            dbe.setOwner(m_dbiOwner);
062    
063            m_dbedDest = null;
064    
065            dbe.rollback();
066        }
067    
068        /**
069         * Commit the source part of the operation described by this {@link data.DataBasketEntry}.
070         *
071         * <p>The method will correctly update the underlying DataBasket.</p>
072         *
073         * <p><strong>Attention</strong>: The method is public as an implementation detail and should not be called
074         * directly.</p>
075         *
076         * @override Never
077         */
078        public void commitSource() {
079            DataBasketEntryImpl dbe = new StoringStockItemDBEntry((StoringStockImpl)getSource(), null,
080                    (StockItemImpl)getValue());
081            dbe.setOwner(m_dbiOwner);
082    
083            m_dbesSource = null;
084    
085            dbe.commit();
086        }
087    }