001 package market;
002
003 import data.Catalog;
004 import data.CatalogItem;
005 import data.filters.CatalogFilter;
006
007 /**
008 * Filters CatalogItems by their category.
009 */
010 public class CFilter extends CatalogFilter {
011
012 private Catalog source;
013 private int filter;
014
015 /**
016 * @param source the source catalog.
017 * @param filter the filter to be applied:
018 * <ul><li>0: no CatalogItems are filtered</li>
019 * <li>1: CatalogItems are filtered by their category</li></ul>
020 */
021 public CFilter(Catalog source, int filter) {
022 super(source);
023 this.source = source;
024 this.filter = filter;
025 }
026
027 /**
028 * The actual filtering.
029 * @param ci the CatalogItem to be checked.
030 * @return <code>true</code> if CatalogItem passed the filter successfully, otherwise <code>false</code>.
031 */
032 public boolean match(CatalogItem ci) {
033 String category = ((CIArticle)ci).getCategory();
034 switch (filter) {
035 case 0: return true;
036 default: return category.equals(SMarket.getArticleCategories()[filter]);
037 }
038 }
039 }