package com.xiaomi.xms.sales.loader; import android.content.Context; import com.xiaomi.xms.sales.loader.BaseResult.ResultStatus; import com.xiaomi.xms.sales.model.Image; import com.xiaomi.xms.sales.model.ProductInfo; import com.xiaomi.xms.sales.model.Tags; import com.xiaomi.xms.sales.request.HostManager; import com.xiaomi.xms.sales.request.Request; import com.xiaomi.xms.sales.request.HostManager.Parameters; import org.json.JSONArray; import org.json.JSONObject; import java.util.ArrayList; public class SaleOutRegisterLoader extends BaseLoader<SaleOutRegisterLoader.Result> { private String mProductId; public SaleOutRegisterLoader(Context context, String productId) { super(context); mProductId = productId; setNeedDatabase(false); } public static final class Result extends BaseResult { public boolean isSuc; public ArrayList<ProductInfo> recommandProducts; public Result() { recommandProducts = new ArrayList<ProductInfo>(); } @Override public int getCount() { return isSuc ? 1 : 0; } @Override public BaseResult shallowClone() { Result newResult = new Result(); newResult.isSuc = isSuc; newResult.recommandProducts = recommandProducts; return newResult; } } @Override protected UpdateTask getUpdateTask() { return new SaleOutRegisterUpdateTask(); } private class SaleOutRegisterUpdateTask extends UpdateTask { @Override protected Request getRequest() { Request request = new Request(HostManager.getSaleOutReg()); request.addParam(Parameters.Keys.PRODUCT_ID, mProductId); return request; } } @Override protected Result parseResult(JSONObject json, Result result) throws Exception { result.isSuc = Tags.isJSONResultOK(json); if (!result.isSuc) { result.setResultStatus(ResultStatus.DATA_ERROR); } else { JSONObject data = json.optJSONObject(Tags.DATA); if (data != null) { JSONArray jsonArray = data.optJSONArray(Tags.SaleOutRegister.MORE); int number = jsonArray == null ? 0 : jsonArray.length(); for (int i = 0; i < number; ++i) { JSONObject one = jsonArray.optJSONObject(i); if (one != null) { /** * only get the fields that are needed by recommendation */ String productId = one.optString(Tags.Product.PRODUCT_ID); String productName = one.optString(Tags.Product.PRODUCT_NAME); String price = one.optString(Tags.Product.PRICE); String imageUrl = one.optString(Tags.Product.IMAGE_URL); String url = one.optString(Tags.Product.URL, ""); result.recommandProducts.add(new ProductInfo(productId, productName, price, null, null, false, new Image(imageUrl), url, null)); } } } } return result; } @Override protected Result getResultInstance() { return new Result(); } @Override protected String getCacheKey() { return null; } }