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<Object> {
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 * ID for serialization.
049 */
050 private static final long serialVersionUID = -1085281113728062387L;
051
052 /**
053 * The key of the affected item.
054 *
055 * @serial
056 */
057 private String m_sKey;
058
059 /**
060 * The source Stock's name, if any.
061 *
062 * @serial
063 */
064 private String m_sSourceName;
065
066 /**
067 * The destination Stock's name, if any.
068 *
069 * @serial
070 */
071 private String m_sDestName;
072
073 /**
074 * Create a new StockItemDBELogEntry.
075 *
076 * @param sidbe the DataBasketEntry to be described.
077 */
078 public StockItemDBELogEntry(StockItemDBEntry sidbe) {
079 super();
080
081 m_sKey = sidbe.getSecondaryKey();
082 m_sSourceName = ((sidbe.getSource() != null) ? (((Nameable)sidbe.getSource()).getName()) : (null));
083 m_sDestName = ((sidbe.getDestination() != null) ? (((Nameable)sidbe.getDestination()).getName()) : (null));
084 }
085
086 /**
087 * Get the affected item's key.
088 *
089 * @override Never
090 */
091 public String getKey() {
092 return m_sKey;
093 }
094
095 /**
096 * Get the source Stock's name.
097 *
098 * @override Never
099 */
100 public String getSource() {
101 return m_sSourceName;
102 }
103
104 /**
105 * Get the destination Stock's name.
106 *
107 * @override Never
108 */
109 public String getDestination() {
110 return m_sDestName;
111 }
112
113 /**
114 * Get a String representation of the LogEntry.
115 *
116 * @override Sometimes
117 */
118 public String toString() {
119 return "StockItem transfer: \"" + getKey() + "\" was transferred" + ((getSource() != null) ?
120 (" from Stock \"" + getSource() + "\"") : ("")) + ((getDestination() != null) ?
121 (" to Stock \"" + getDestination() + "\"") : ("")) + " on " + getLogDate() + ".";
122 }
123 }
124
125 /**
126 * Get a LogEntry describing this DataBasketEntry.
127 *
128 * @override Never
129 */
130 public LogEntry getLogData() {
131 return new StockItemDBELogEntry(this);
132 }
133 }