001 package data;
002
003 /**
004 * Basic implementation of the {@link DataBasketCondition} interface. You can use this
005 * class as a basis for implementing more sophisticated queries.
006 *
007 * @author Steffen Zschaler
008 * @version 2.0 14/06/1999
009 * @since v2.0
010 */
011 public class DataBasketConditionImpl<T> extends Object implements DataBasketCondition<T> {
012
013 /**
014 * ID for serialization.
015 */
016 private static final long serialVersionUID = 3408012447279335129L;
017
018 /**
019 * The source condition.
020 *
021 * @serial
022 */
023 protected DataBasketEntrySource m_dbesSource;
024
025 /**
026 * The destination condition.
027 *
028 * @serial
029 */
030 protected DataBasketEntryDestination m_dbedDest;
031
032 /**
033 * The main key condition.
034 *
035 * @serial
036 */
037 protected String m_sMainKey;
038
039 /**
040 * The secondary key condition.
041 *
042 * @serial
043 */
044 protected String m_sSecondaryKey;
045
046 /**
047 * The value condition.
048 *
049 * @serial
050 */
051 protected Object m_oValue;
052
053 /**
054 * Create a new DataBasketConditionImpl.
055 *
056 * @param sMainKey the value for {@link #m_sMainKey}.
057 * @param sSecondaryKey the value for {@link #m_sSecondaryKey}.
058 * @param dbesSource the value for {@link #m_dbesSource}.
059 * @param dbedDest the value for {@link #m_dbedDest}.
060 * @param oValue the value for {@link #m_oValue}.
061 */
062 public DataBasketConditionImpl(String sMainKey, String sSecondaryKey, DataBasketEntrySource dbesSource,
063 DataBasketEntryDestination dbedDest, Object oValue) {
064 super();
065
066 m_sMainKey = sMainKey;
067 m_sSecondaryKey = sSecondaryKey;
068 m_dbesSource = dbesSource;
069 m_dbedDest = dbedDest;
070 m_oValue = oValue;
071 }
072
073 /**
074 * @return {@link #m_dbesSource}.
075 *
076 * @override Never Instead set the value of {@link #m_dbesSource}.
077 */
078 public DataBasketEntrySource getSource() {
079 return m_dbesSource;
080 }
081
082 /**
083 * @return {@link #m_dbedDest}.
084 *
085 * @override Never Instead set the value of {@link #m_dbedDest}.
086 */
087 public DataBasketEntryDestination getDestination() {
088 return m_dbedDest;
089 }
090
091 /**
092 * @return {@link #m_oValue}.
093 *
094 * @override Never Instead set the value of {@link #m_oValue}.
095 */
096 public Object getValue() {
097 return m_oValue;
098 }
099
100 /**
101 * @return {@link #m_sMainKey}.
102 *
103 * @override Never Instead set the value of {@link #m_sMainKey}.
104 */
105 public String getMainKey() {
106 return m_sMainKey;
107 }
108
109 /**
110 * @return {@link #m_sSecondaryKey}.
111 *
112 * @override Never Instead set the value of {@link #m_sSecondaryKey}.
113 */
114 public String getSecondaryKey() {
115 return m_sSecondaryKey;
116 }
117
118 /**
119 * As a default, always returns true.
120 *
121 * @override Sometimes
122 */
123 public boolean match(DataBasketEntry<T> dbe) {
124 return true;
125 }
126
127 // some static convenience functions and objects
128 /**
129 * A DataBasketCondition matching all items in a DataBasket.
130 */
131 public final static DataBasketCondition ALL_ENTRIES = new DataBasketConditionImpl(null, null, null, null, null);
132 /**
133 * A DataBasketCondition that matches all entries that describe StockItem movements.
134 */
135 public final static DataBasketCondition ALL_STOCK_ITEMS = new DataBasketConditionImpl(STOCK_ITEM_MAIN_KEY, null, null, null, null);
136
137 /**
138 * A DataBasketCondition that matches all entries that describe CatalogItem movements.
139 */
140 public final static DataBasketCondition ALL_CATALOG_ITEMS = new DataBasketConditionImpl(
141 CATALOG_ITEM_MAIN_KEY, null, null, null, null);
142
143 /**
144 * A DataBasketCondition that matches all entries that describe StockItems being taken from the
145 * given Stock.
146 */
147 public static final DataBasketCondition allStockItemsWithSource(Stock stSource) {
148 return new DataBasketConditionImpl(STOCK_ITEM_MAIN_KEY, null, stSource, null, null);
149 }
150
151 /**
152 * A DataBasketCondition that matches all entries that describe StockItems being entered into the
153 * given Stock.
154 */
155 public static final DataBasketCondition allStockItemsWithDest(Stock stDest) {
156 return new DataBasketConditionImpl(STOCK_ITEM_MAIN_KEY, null, null, stDest, null);
157 }
158
159 /**
160 * A DataBasketCondition that matches all entries that describe CatalogItems being taken from the
161 * given Catalog.
162 */
163 public static final DataBasketCondition allCatalogItemsWithSource(Catalog cSource) {
164 return new DataBasketConditionImpl(CATALOG_ITEM_MAIN_KEY, null, cSource, null, null);
165 }
166
167 /**
168 * A DataBasketCondition that matches all entries that describe CatalogItems being entered into the
169 * given Catalog.
170 */
171 public static final DataBasketCondition allCatalogItemsWithDest(Catalog cDest) {
172 return new DataBasketConditionImpl(CATALOG_ITEM_MAIN_KEY, null, null, cDest, null);
173 }
174
175 /**
176 * A DataBasketCondition that matches exactly one given CatalogItem.
177 */
178 public static final DataBasketCondition specificCatalogItem(CatalogItem ci) {
179 return new DataBasketConditionImpl(CATALOG_ITEM_MAIN_KEY, ci.getName(), null, null, ci);
180 }
181
182 /**
183 * A DataBasketCondition that matches exactly one given StockItem.
184 */
185 public static final DataBasketCondition specificStockItem(StockItem si) {
186 return new DataBasketConditionImpl(STOCK_ITEM_MAIN_KEY, si.getName(), null, null, si);
187 }
188 }