001 package data.swing; 002 003 import data.*; 004 005 /** 006 * DataBasketEntryGrouper that groups entries that have the same main and secondary key as well as the same 007 * source and destination and where both values contain an {@link Integer} object. These are DataBasketEntries 008 * that describe operations on CountingStock items. 009 * 010 * @author Steffen Zschaler 011 * @version 2.0 23/08/1999 012 * @since v2.0 013 */ 014 public class CountingStockDBEGrouper extends Object implements DataBasketEntryGrouper { 015 016 /** 017 * Create a new CountingStockDBEGrouper. 018 */ 019 public CountingStockDBEGrouper() { 020 super(); 021 } 022 023 /** 024 * Return true if <code>dbe1</code> and <code>dbe2</code> have the same main and secondary key as well as 025 * the same source and destination and both values contain an {@link Integer} object. 026 * 027 * @override Never 028 */ 029 public boolean canGroup(DataBasketEntry dbe1, DataBasketEntry dbe2) { 030 return ((dbe1.getMainKey().equals(dbe2.getMainKey())) && 031 (dbe1.getSecondaryKey().equals(dbe2.getSecondaryKey())) && 032 (dbe1.getSource() == dbe2.getSource()) && (dbe1.getDestination() == dbe2.getDestination()) && 033 (dbe1.getValue()instanceof Integer) && (dbe2.getValue()instanceof Integer)); 034 } 035 036 /** 037 * Return a new DataBasketEntry with the same main and secondary key, source and destination as 038 * <code>dbe1</code> and a value of <code>dbe1.getValue() + dbe2.getValue()</code>. 039 * 040 * <p>The returned DataBasketEntry cannot be used for commiting or rolling back operations.</p> 041 * 042 * @override Never 043 */ 044 public DataBasketEntry group(DataBasketEntry dbe1, DataBasketEntry dbe2) { 045 class DBE extends Object implements DataBasketEntry { 046 private String m_sMainKey; 047 private String m_sSecondaryKey; 048 private DataBasketEntrySource m_dbes; 049 private DataBasketEntryDestination m_dbed; 050 private Object m_oValue; 051 private DataBasket m_dbOwner = null; 052 053 public DBE(String sMainKey, String sSecondaryKey, DataBasketEntrySource dbes, 054 DataBasketEntryDestination dbed, Object oValue) { 055 super(); 056 057 m_sMainKey = sMainKey; 058 m_sSecondaryKey = sSecondaryKey; 059 m_dbes = dbes; 060 m_dbed = dbed; 061 m_oValue = oValue; 062 } 063 064 public void rollback() {} 065 066 public void commit() {} 067 068 public void setOwner(DataBasket dbOwner) { 069 m_dbOwner = dbOwner; 070 } 071 072 public DataBasket getOwner() { 073 return m_dbOwner; 074 } 075 076 public DataBasketEntrySource getSource() { 077 return m_dbes; 078 } 079 080 public DataBasketEntryDestination getDestination() { 081 return m_dbed; 082 } 083 084 public Object getValue() { 085 return m_oValue; 086 } 087 088 public String getMainKey() { 089 return m_sMainKey; 090 } 091 092 public String getSecondaryKey() { 093 return m_sSecondaryKey; 094 } 095 096 public boolean isHandled() { 097 return true; 098 } 099 } 100 101 return new DBE(dbe1.getMainKey(), dbe1.getSecondaryKey(), dbe1.getSource(), dbe1.getDestination(), 102 new Integer(((Integer)dbe1.getValue()).intValue() + ((Integer)dbe2.getValue()).intValue())); 103 } 104 }