package kwik.remote.api; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import kwik.app.KwikApp; import kwik.remote.api.exceptions.APIBadResponseException; import kwik.remote.api.exceptions.HTTPException; import kwik.remote.api.exceptions.XMLParseException; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; /* * SubCategory * @description Represents an API subcategory */ @Element(name = "subcategory") public class SubCategory extends AbstractCategory implements Serializable { /** * */ private static final long serialVersionUID = 1L; @Attribute public int id; @Element public int category_id; @Element public String code; @Element public String name; /* * @see kwik.remote.api.AbstractCategory#getId() */ @Override public int getId() { return id; } @Override public String getCode() { return code; } /* * @see kwik.remote.api.AbstractCategory#getName() */ @Override public String getName() { return name; } /* * @see kwik.remote.api.AbstractCategory#getProducts(int, java.lang.String, * int, int) */ @Override public List<Product> getProducts(String order, int items_per_page, int page, String criteria) throws APIBadResponseException, XMLParseException, HTTPException { if (!Response.FAKE_RESPONSE) { Map<String, String> headers = new HashMap<String, String>(); headers.put("method", "GetProductListBySubcategory"); headers.put("language_id", Integer.toString(KwikApp.instance.getCurrentLanguage())); headers.put("category_id", Integer.toString(this.category_id)); headers.put("subcategory_id", Integer.toString(this.id)); headers.put("order", order); if (items_per_page != AbstractCategory.NO_PARAM && page != AbstractCategory.NO_PARAM) { headers.put("items_per_page", Integer.toString(items_per_page)); headers.put("page", Integer.toString(page)); } Response r = Response.get(Response.CATALOG, headers); return r.products; } else { List<Product> prods = new ArrayList<Product>(); Product p = new Product(); p.name = "Harabara"; p.id = 1; p.price = 14.99; p.sales_rank = 1; prods.add(p); return prods; } } /* * @see kwik.remote.api.AbstractCategory#getSubCategoryList(int) */ @Override public List<SubCategory> getSubCategoryList() throws APIBadResponseException, XMLParseException, HTTPException { return null; // A subcategory doesn't have any subcategories dude. } @Override public int getParentId() { return this.category_id; } public static final String[] fields = { "id", "code", "name" }; public static List<? extends Map<String, ?>> getCategoriesAsMap(List<SubCategory> l) { List<Map<String, String>> transformedCategories = new ArrayList<Map<String, String>>(); for (SubCategory c : l) { HashMap<String, String> map = new HashMap<String, String>(); map.put(fields[0], String.valueOf(c.getId())); map.put(fields[1], c.getCode()); map.put(fields[2], c.getName()); transformedCategories.add(map); } return transformedCategories; } public static String[] getMapKeys() { return fields; } }