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 { 037 038 /** 039 * Create a new CatalogItemDataBasketEntry. 040 * 041 * @param cSource the source Catalog. 042 * @param cDest the destination Catalog. 043 * @param ci the CatalogItem that was operated on. 044 */ 045 public CatalogItemDataBasketEntry(CatalogImpl cSource, CatalogImpl cDest, CatalogItemImpl ci) { 046 super(CATALOG_ITEM_MAIN_KEY, ci.getName(), (SelfManagingDBESource)cSource, 047 (SelfManagingDBEDestination)cDest, ci); 048 } 049 050 /** 051 * Set the source of the DataBasketEntry. 052 * 053 * <p>This method is public as an implementation detail and must not be called directly!</p> 054 * 055 * @override Never 056 */ 057 public void setSource(CatalogImpl cSource) { 058 m_dbesSource = (SelfManagingDBESource)cSource; 059 } 060 061 /** 062 * Set the destination of the DataBasketEntry. 063 * 064 * <p>This method is public as an implementation detail and must not be called directly!</p> 065 * 066 * @override Never 067 */ 068 public void setDestination(CatalogImpl cDest) { 069 m_dbedDest = (SelfManagingDBEDestination)cDest; 070 } 071 072 /** 073 * A LogEntry that describes {@link CatalogItemDataBasketEntry CatalogItemDataBasketEntries}. 074 * 075 * @author Steffen Zschaler 076 * @version 2.0 19/08/1999 077 * @since v2.0 078 */ 079 public static class CIDBELogEntry extends LogEntry { 080 081 /** 082 * The name of the source Catalog,if any. 083 * 084 * @serial 085 */ 086 private String m_sSourceName; 087 088 /** 089 * The name of the destination Catalog, if any. 090 * 091 * @serial 092 */ 093 private String m_sDestName; 094 095 /** 096 * The key of the CatalogItem. 097 * 098 * @serial 099 */ 100 private String m_sKey; 101 102 /** 103 * The result of the CatalogItem's toString() method. 104 * 105 * @serial 106 */ 107 private String m_sCIDescription; 108 109 /** 110 * Create a new CIDBELogEntry. 111 * 112 * @param cidbe the DataBasketEntry to be logged. 113 */ 114 public CIDBELogEntry(CatalogItemDataBasketEntry cidbe) { 115 super(); 116 117 m_sSourceName = ((cidbe.getSource() != null) ? (((Nameable)cidbe.getSource()).getName()) : (null)); 118 m_sDestName = ((cidbe.getDestination() != null) ? (((Nameable)cidbe.getDestination()).getName()) : (null)); 119 m_sKey = cidbe.getSecondaryKey(); 120 m_sCIDescription = ((cidbe.getValue() != null) ? (cidbe.getValue().toString()) : (null)); 121 } 122 123 /** 124 * Get the source Catalog's name. 125 * 126 * @override Never 127 */ 128 public String getSource() { 129 return m_sSourceName; 130 } 131 132 /** 133 * Get the destination Catalog's name. 134 * 135 * @override Never 136 */ 137 public String getDestination() { 138 return m_sDestName; 139 } 140 141 /** 142 * Get the CatalogItem's key. 143 * 144 * @override Never 145 */ 146 public String getKey() { 147 return m_sKey; 148 } 149 150 /** 151 * Get the CatalogItem's description. I.e. the result of its toString() method. 152 * 153 * @override Never 154 */ 155 public String getCIDescription() { 156 return m_sCIDescription; 157 } 158 159 /** 160 * Return a String representation of this LogEntry. 161 * 162 * @override Never 163 */ 164 public String toString() { 165 return "CatalogItem transfer: \"" + getKey() + "\" (" + getCIDescription() + ") was transferred" + 166 ((getSource() != null) ? (" from Catalog \"" + getSource() + "\"") : 167 ("")) + ((getDestination() != null) ? (" to Catalog \"" + getDestination() + "\"") : 168 ("")) + " on " + getLogDate() + "."; 169 } 170 } 171 172 /** 173 * Return a LogEntry describing this DataBasketEntry. 174 * 175 * @override Never 176 */ 177 public LogEntry getLogData() { 178 return new CIDBELogEntry(this); 179 } 180 }