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; import android.text.Html; @Element public class Category extends AbstractCategory implements Serializable{ /** * */ private static final long serialVersionUID = 1L; @Attribute public int id; @Element public String code; @Element public String name; /* * getCategoryList * @description Returns a list of categories with their names setted to the given language. */ public static List<Category> getCategoryList() throws APIBadResponseException, XMLParseException, HTTPException { Map<String, String> headers = new HashMap<String,String>(); headers.put("method", "GetCategoryList"); headers.put("language_id", Integer.toString(KwikApp.instance.getCurrentLanguage())); Response r = Response.get(Response.CATALOG, headers); // Optional: Some caching return r.categories; } /* * @see kwik.remote.api.AbstractCategory#getSubCategoryList(int) */ public List<? extends AbstractCategory> getSubCategoryList() throws APIBadResponseException, XMLParseException, HTTPException { if (!Response.FAKE_RESPONSE) { Map<String, String> headers = new HashMap<String,String>(); headers.put("method", "GetSubcategoryList"); headers.put("language_id", Integer.toString(KwikApp.instance.getCurrentLanguage())); headers.put("category_id", Integer.toString(this.id)); Response r = Response.get(Response.CATALOG, headers); for (SubCategory cat : r.subCategories) { cat.name = Html.fromHtml(cat.name).toString(); } // Optional: Some caching return r.subCategories; } else { List<SubCategory> subcats = new ArrayList<SubCategory>(); SubCategory basic = new SubCategory(); basic.id = 1; basic.category_id = this.id; basic.name = "Basic Subcategory"; subcats.add(basic); return subcats; } } /* * @see kwik.remote.api.AbstractCategory#getId() */ @Override public int getId() { return id; } /* * @see kwik.remote.api.AbstractCategory#getId() */ @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 { Map<String, String> headers = new HashMap<String,String>(); headers.put("method", "GetProductListByCategory"); headers.put("language_id", Integer.toString(KwikApp.instance.getCurrentLanguage())); headers.put("category_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 response = Response.get(Response.CATALOG, headers); return response.products; } @Override public int getParentId() { return AbstractCategory.NO_PARAM; } }