001 package market; 002 003 import data.CatalogItem; 004 import data.CatalogItemValue; 005 import data.IntegerValue; 006 import data.QuoteValue; 007 import data.Value; 008 import data.ooimpl.CatalogItemImpl; 009 010 /** 011 * A CatalogItemImpl that represents the articles of the market. 012 */ 013 public class CIArticle extends CatalogItemImpl { 014 015 /** 016 * ID for serialization. 017 */ 018 private static final long serialVersionUID = -492742791645542590L; 019 private String name; 020 private String[] description = new String[] {"", ""}; 021 private String category; 022 023 /** 024 * @param id ID of the CIArticle. 025 * @param name name of the CIArticle 026 * @param category the CIArticle's category. 027 * @param bid the price a customer has to pay for this CIArticle. 028 * @param offer the cost of this CIArticle when the manager orders it. 029 */ 030 public CIArticle(String id, String name, String category, int bid, int offer) { 031 super(id, new QuoteValue(new IntegerValue(bid), new IntegerValue(offer))); 032 this.name = name; 033 this.category = category; 034 } 035 036 /** 037 * @param id ID of the CIArticle. 038 * @param name name of the CIArticle 039 * @param category the CIArticle's category. 040 * @param bid the price a customer has to pay for this CIArticle. 041 * @param offer the cost of this CIArticle when the manager orders it. 042 */ 043 public CIArticle(String id, String name, String category, IntegerValue bid, IntegerValue offer) { 044 super(id, new QuoteValue(bid, offer)); 045 this.name = name; 046 this.category = category; 047 } 048 049 /** 050 * Sets the name of the article. 051 * 052 * @param name the article's name. 053 */ 054 public void setArticleName(String name) { 055 this.name = name; 056 } 057 058 /** 059 * Set the description of the article. 060 * 061 * @param description the description of this article. 062 */ 063 public void setDescription(String[] description) { 064 this.description = description; 065 } 066 067 /** 068 * @return the article's name. 069 */ 070 public String getArticleName() { 071 return name; 072 } 073 074 /** 075 * @return the article's category. 076 */ 077 public String getCategory() { 078 return category; 079 } 080 081 /** 082 * @return the description of this article. 083 */ 084 public String[] getDescription() { 085 return description; 086 } 087 088 /** 089 * @return the article's offer. 090 */ 091 public int getOffer() { 092 return new Integer(((QuoteValue)getValue()).getOffer().toString()).intValue(); 093 } 094 095 /** 096 * @return the article's bid. 097 */ 098 public int getBid() { 099 return new Integer(((QuoteValue)getValue()).getBid().toString()).intValue(); 100 } 101 102 /** 103 * Sets the article's bid. 104 * @param vBid the new bid. 105 */ 106 public void setBid(Value vBid) { 107 setValue(new QuoteValue(vBid, ((QuoteValue)getValue()).getOffer())); 108 } 109 110 /** 111 * @return a CatalogItemValue which returns the bid of a CIArticle. 112 */ 113 public static CatalogItemValue getCatalogItemValue(){ 114 return new CatalogItemValue(){ 115 public Value getValue(CatalogItem ci) { 116 return ((QuoteValue)ci.getValue()).getBid(); 117 } 118 }; 119 } 120 121 /** 122 * @return an identical clone of the given CatalogItemImpl 123 */ 124 protected CatalogItemImpl getShallowClone() { 125 QuoteValue qv = (QuoteValue)this.getValue(); 126 return new CIArticle(this.getName(), this.getArticleName(), 127 this.getCategory(), (IntegerValue)qv.getBid(), (IntegerValue)qv.getOffer()); 128 } 129 130 /** 131 * Specifies how to compare CIArticles. 132 * @param o the object to be compared with this CIArticle. 133 * @return an int representing the result of the comparison. 134 */ 135 public int compareTo(Object o) { 136 return name.compareTo(((CIArticle)o).getArticleName()); 137 } 138 }