001    package data.ooimpl;
002    
003    import log.*;
004    
005    import data.*;
006    
007    /**
008     * DataBasketEntry that represents an operation with StockItems. The details as
009     * to how the individual fields are used depend on the subclasses.
010     *
011     * @author Steffen Zschaler
012     * @version 2.0 19/08/1999
013     * @since v2.0
014     */
015    public abstract class StockItemDBEntry extends DataBasketEntryImpl {
016    
017        /**
018         * Create a new StockItemDBEntry.
019         *
020         * @param sKey the key of the affected item(s).
021         * @param stiSource the source Stock.
022         * @param stiDest the destination Stock.
023         * @param oValue the value of the DataBasketEntry.
024         */
025        public StockItemDBEntry(String sKey, StockImpl stiSource, StockImpl stiDest, Object oValue) {
026            super(STOCK_ITEM_MAIN_KEY, sKey, stiSource, stiDest, oValue);
027        }
028    
029        /**
030         * Count the items affected by this DataBasketEntry.
031         *
032         * @override Sometimes The default implementation returns 1.
033         */
034        public int count() {
035            return 1;
036        }
037    
038        /**
039         * A LogEntry that describes an operation on one or more StockItem(s).
040         *
041         * @author Steffen Zschaler
042         * @version 2.0 19/08/1999
043         * @since v2.0
044         */
045        public static class StockItemDBELogEntry extends LogEntry {
046    
047            /**
048             * The key of the affected item.
049             *
050             * @serial
051             */
052            private String m_sKey;
053    
054            /**
055             * The source Stock's name, if any.
056             *
057             * @serial
058             */
059            private String m_sSourceName;
060    
061            /**
062             * The destination Stock's name, if any.
063             *
064             * @serial
065             */
066            private String m_sDestName;
067    
068            /**
069             * Create a new StockItemDBELogEntry.
070             *
071             * @param sidbe the DataBasketEntry to be described.
072             */
073            public StockItemDBELogEntry(StockItemDBEntry sidbe) {
074                super();
075    
076                m_sKey = sidbe.getSecondaryKey();
077                m_sSourceName = ((sidbe.getSource() != null) ? (((Nameable)sidbe.getSource()).getName()) : (null));
078                m_sDestName = ((sidbe.getDestination() != null) ? (((Nameable)sidbe.getDestination()).getName()) : (null));
079            }
080    
081            /**
082             * Get the affected item's key.
083             *
084             * @override Never
085             */
086            public String getKey() {
087                return m_sKey;
088            }
089    
090            /**
091             * Get the source Stock's name.
092             *
093             * @override Never
094             */
095            public String getSource() {
096                return m_sSourceName;
097            }
098    
099            /**
100             * Get the destination Stock's name.
101             *
102             * @override Never
103             */
104            public String getDestination() {
105                return m_sDestName;
106            }
107    
108            /**
109             * Get a String representation of the LogEntry.
110             *
111             * @override Sometimes
112             */
113            public String toString() {
114                return "StockItem transfer: \"" + getKey() + "\" was transferred" + ((getSource() != null) ?
115                        (" from Stock \"" + getSource() + "\"") : ("")) + ((getDestination() != null) ?
116                        (" to Stock \"" + getDestination() + "\"") : ("")) + " on " + getLogDate() + ".";
117            }
118        }
119    
120        /**
121         * Get a LogEntry describing this DataBasketEntry.
122         *
123         * @override Never
124         */
125        public LogEntry getLogData() {
126            return new StockItemDBELogEntry(this);
127        }
128    }