001 package data.ooimpl; 002 003 import data.*; 004 005 import log.*; 006 007 /** 008 * A {@link DataBasketEntry} representing operations on {@link CatalogImpl}s 009 * and {@link CatalogItemImpl}s. The fields of the <code>DataBasketEntry</code> 010 * are set as follows: 011 * 012 * <table border=1> 013 * <tr><td><strong>Field</strong></td><td><strong>Value</strong></td></tr> 014 * <tr><td>{@link DataBasketEntry#getMainKey main key}</td> 015 * <td>{@link DataBasketKeys#CATALOG_ITEM_MAIN_KEY CATALOG_ITEM_MAIN_KEY} 016 * </td> 017 * </tr> 018 * <tr><td>{@link DataBasketEntry#getSecondaryKey secondary key}</td> 019 * <td>{@link CatalogItem#getName name} of the CatalogItem in question</td> 020 * </tr> 021 * <tr><td>{@link DataBasketEntry#getSource source}</td> 022 * <td>{@link Catalog source catalog}<td> 023 * </tr> 024 * <tr><td>{@link DataBasketEntry#getDestination destination}</td> 025 * <td>{@link Catalog destination catalog}<td> 026 * </tr> 027 * <tr><td>{@link DataBasketEntry#getValue value}</td> 028 * <td>{@link CatalogItem} in question<td> 029 * </tr> 030 * </table> 031 * 032 * @author Steffen Zschaler 033 * @version 2.0 19/08/1999 034 * @since v2.0 035 */ 036 public class CatalogItemDataBasketEntry extends DataBasketEntryImpl<Object> { 037 038 /** 039 * ID for serialization. 040 */ 041 private static final long serialVersionUID = -4008272266049438745L; 042 043 /** 044 * Create a new CatalogItemDataBasketEntry. 045 * 046 * @param cSource the source Catalog. 047 * @param cDest the destination Catalog. 048 * @param ci the CatalogItem that was operated on. 049 */ 050 public CatalogItemDataBasketEntry(CatalogImpl cSource, CatalogImpl cDest, CatalogItemImpl ci) { 051 super(CATALOG_ITEM_MAIN_KEY, ci.getName(), (SelfManagingDBESource)cSource, 052 (SelfManagingDBEDestination)cDest, ci); 053 } 054 055 /** 056 * Set the source of the DataBasketEntry. 057 * 058 * <p>This method is public as an implementation detail and must not be called directly!</p> 059 * 060 * @override Never 061 */ 062 public void setSource(CatalogImpl cSource) { 063 m_dbesSource = (SelfManagingDBESource)cSource; 064 } 065 066 /** 067 * Set the destination of the DataBasketEntry. 068 * 069 * <p>This method is public as an implementation detail and must not be called directly!</p> 070 * 071 * @override Never 072 */ 073 public void setDestination(CatalogImpl cDest) { 074 m_dbedDest = (SelfManagingDBEDestination)cDest; 075 } 076 077 /** 078 * A LogEntry that describes {@link CatalogItemDataBasketEntry CatalogItemDataBasketEntries}. 079 * 080 * @author Steffen Zschaler 081 * @version 2.0 19/08/1999 082 * @since v2.0 083 */ 084 public static class CIDBELogEntry extends LogEntry { 085 086 /** 087 * ID for serialization. 088 */ 089 private static final long serialVersionUID = -3035986340586194087L; 090 091 /** 092 * The name of the source Catalog,if any. 093 * 094 * @serial 095 */ 096 private String m_sSourceName; 097 098 /** 099 * The name of the destination Catalog, if any. 100 * 101 * @serial 102 */ 103 private String m_sDestName; 104 105 /** 106 * The key of the CatalogItem. 107 * 108 * @serial 109 */ 110 private String m_sKey; 111 112 /** 113 * The result of the CatalogItem's toString() method. 114 * 115 * @serial 116 */ 117 private String m_sCIDescription; 118 119 /** 120 * Create a new CIDBELogEntry. 121 * 122 * @param cidbe the DataBasketEntry to be logged. 123 */ 124 public CIDBELogEntry(CatalogItemDataBasketEntry cidbe) { 125 super(); 126 127 m_sSourceName = ((cidbe.getSource() != null) ? (((Nameable)cidbe.getSource()).getName()) : (null)); 128 m_sDestName = ((cidbe.getDestination() != null) ? (((Nameable)cidbe.getDestination()).getName()) : (null)); 129 m_sKey = cidbe.getSecondaryKey(); 130 m_sCIDescription = ((cidbe.getValue() != null) ? (cidbe.getValue().toString()) : (null)); 131 } 132 133 /** 134 * Get the source Catalog's name. 135 * 136 * @override Never 137 */ 138 public String getSource() { 139 return m_sSourceName; 140 } 141 142 /** 143 * Get the destination Catalog's name. 144 * 145 * @override Never 146 */ 147 public String getDestination() { 148 return m_sDestName; 149 } 150 151 /** 152 * Get the CatalogItem's key. 153 * 154 * @override Never 155 */ 156 public String getKey() { 157 return m_sKey; 158 } 159 160 /** 161 * Get the CatalogItem's description. I.e. the result of its toString() method. 162 * 163 * @override Never 164 */ 165 public String getCIDescription() { 166 return m_sCIDescription; 167 } 168 169 /** 170 * Return a String representation of this LogEntry. 171 * 172 * @override Never 173 */ 174 public String toString() { 175 return "CatalogItem transfer: \"" + getKey() + "\" (" + getCIDescription() + ") was transferred" + 176 ((getSource() != null) ? (" from Catalog \"" + getSource() + "\"") : 177 ("")) + ((getDestination() != null) ? (" to Catalog \"" + getDestination() + "\"") : 178 ("")) + " on " + getLogDate() + "."; 179 } 180 } 181 182 /** 183 * Return a LogEntry describing this DataBasketEntry. 184 * 185 * @override Never 186 */ 187 public LogEntry getLogData() { 188 return new CIDBELogEntry(this); 189 } 190 }