package com.xiaomi.xms.sales.loader;
import android.content.Context;
import com.xiaomi.xms.sales.model.MiPhoneInfo;
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.JSONObject;
import java.util.ArrayList;
public class MiPhoneListLoader extends BasePageLoader<MiPhoneListLoader.Result> {
private String mCategoryId;
private String mKeyWord;
public MiPhoneListLoader(Context context, String categoryId, String keyWord) {
super(context);
mCategoryId = categoryId;
mKeyWord = keyWord;
setNeedDatabase(false);
}
public static final class Result extends BaseResult {
public ArrayList<MiPhoneInfo> mMiPhoneInfos;
public Result() {
mMiPhoneInfos = new ArrayList<MiPhoneInfo>();
}
@Override
public int getCount() {
return mMiPhoneInfos == null ? 0 : mMiPhoneInfos.size();
}
private void addList(ArrayList<MiPhoneInfo> alist) {
if (alist != null) {
mMiPhoneInfos.addAll(alist);
}
}
@Override
public BaseResult shallowClone() {
Result newResult = new Result();
newResult.mMiPhoneInfos = mMiPhoneInfos;
return newResult;
}
}
@Override
protected UpdateTask getUpdateTask() {
return new MiPhoneListUpdateTask();
}
private class MiPhoneListUpdateTask extends PageUpdateLTask {
@Override
protected Request getRequest(int page) {
Request request = new Request(HostManager.getProduct());
request.addParam("cat_id", mCategoryId);
request.addParam(Parameters.Keys.PAGE_INDEX, String.valueOf(page));
request.addParam(Parameters.Keys.PAGE_SIZE,
String.valueOf(Parameters.Values.PAGESIZE_VALUE));
return request;
}
@Override
protected Result merge(Result oldResult, Result newResult) {
Result result = new Result();
if (oldResult.mMiPhoneInfos != null) {
result.addList(oldResult.mMiPhoneInfos);
}
if (newResult.mMiPhoneInfos != null) {
result.addList(newResult.mMiPhoneInfos);
}
return result;
}
}
@Override
protected Result parseResult(JSONObject json, Result result) throws Exception {
result.mMiPhoneInfos = MiPhoneInfo.valueOf(json);
return result;
}
@Override
protected Result getResultInstance() {
return new Result();
}
@Override
protected String getCacheKey() {
return null;
}
}