package com.xiaomi.xms.sales.loader; import android.content.Context; import android.text.TextUtils; import com.xiaomi.xms.sales.model.OrderPreview; import com.xiaomi.xms.sales.model.Tags; import com.xiaomi.xms.sales.request.HostManager; import com.xiaomi.xms.sales.request.HostManager.Parameters; import com.xiaomi.xms.sales.request.Request; import com.xiaomi.xms.sales.util.JsonUtil; import com.xiaomi.xms.sales.xmsf.account.LoginManager; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; public class OrderListLoader extends BasePageLoader { private static final String TAG = "OrderListLoader"; private final String CACHE_KEY = "OrderList"; private String mType; public OrderListLoader(Context context, String type) { super(context); mType = type; } public static final class Result extends BaseResult { public ArrayList<OrderPreview> mOrderList; public Result() { super(); mOrderList = new ArrayList<OrderPreview>(); } @Override public BaseResult shallowClone() { Result newResult = new Result(); newResult.mOrderList = mOrderList; return newResult; } @Override protected int getCount() { return mOrderList == null ? 0 : mOrderList.size(); } } @Override public BaseResult getResultInstance() { return new Result(); } @Override protected UpdateTask getUpdateTask() { return new OrderListUpdateTask(); } @Override protected String getCacheKey() { return CACHE_KEY + mType; } @Override protected boolean isUserRelated() { return true; } private class OrderListUpdateTask extends PageUpdateLTask { @Override protected Request getRequest(int page) { Request request = new Request(HostManager.URL_XMS_SALE_API); JSONObject jsonObject = new JSONObject(); try { jsonObject.put("orderStatus", mType); jsonObject.put(Tags.XMSAPI.USERID, LoginManager.getInstance().getUserId()); jsonObject.put(Parameters.Keys.PAGE_INDEX, String.valueOf(page)); jsonObject.put(Parameters.Keys.PAGE_SIZE, String.valueOf(Parameters.Values.PAGESIZE_VALUE)); String data = JsonUtil.creatRequestJson(HostManager.Method.METHOD_GETSALESORDERLIST, jsonObject); if (!TextUtils.isEmpty(data)) { request.addParam(Tags.RequestKey.DATA, data); } } catch (JSONException e) { e.printStackTrace(); } return request; } @Override protected BaseResult merge(BaseResult oldResult, BaseResult newResult) { Result result; if (oldResult == null) { result = new Result(); } else { result = (Result) oldResult; } if (newResult != null) { result.mOrderList.addAll(((Result) newResult).mOrderList); } return result; } } @Override protected BaseResult parseResult(JSONObject json, BaseResult baseResult) throws Exception { Result result = (Result) baseResult; result.mOrderList = OrderPreview.valueOfOrderList(json); return result; } }