package com.xiaomi.xms.sales.loader;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
import android.os.AsyncTask;
import android.text.TextUtils;
import com.xiaomi.xms.sales.ShopApp;
import com.xiaomi.xms.sales.loader.BaseResult.ResultStatus;
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.util.Constants;
import com.xiaomi.xms.sales.util.JsonUtil;
import com.xiaomi.xms.sales.util.Utils;
public class PrinterInfoLoader extends BaseLoader<PrinterInfoLoader.Result> {
private String deviceType;
public PrinterInfoLoader(Context context,String deviceType) {
super(context);
this.deviceType = deviceType;
}
public static final class Result extends BaseResult {
public ArrayList<PrinterMode> p;
public BaseResult shallowClone() {
Result newResult = new Result();
newResult.p = p;
return newResult;
}
@Override
public int getCount() {
return p == null ? 0 : 1;
}
}
@Override
protected void initTaskList(List<AsyncTask<Void, Void, Result>> tasks) {
tasks.add(new DeviceUpdateTask(false));
}
public void setDeviceType(String deviceType) {
this.deviceType = deviceType;
}
private class DeviceUpdateTask extends BaseLoader<Result>.UpdateTask {
public DeviceUpdateTask(boolean needSaveToDb) {
super(needSaveToDb);
}
@Override
protected Request getRequest() {
Request request = new Request(HostManager.URL_XMS_SALE_API);
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put(Tags.XMSAPI.ORGID,
Utils.Preference.getStringPref(ShopApp.getContext(), Constants.Account.PREF_USER_ORGID, ""));
jsonObject.put("deviceType", deviceType);
String data = JsonUtil.creatRequestJson(HostManager.Method.METHOD_DEVICE, jsonObject);
if (!TextUtils.isEmpty(data)) {
request.addParam(Tags.RequestKey.DATA, data);
}
} catch (JSONException e) {
e.printStackTrace();
}
return request;
}
}
@Override
protected Result parseResult(JSONObject json, Result result) throws Exception {
if (json != null) {
try {
if (Tags.isJSONReturnedOK(json)) {
String bodyStr = json.optString(Tags.BODY);
if (!TextUtils.isEmpty(bodyStr)) {
JSONArray body = new JSONArray(bodyStr);
ArrayList<PrinterMode> list = new ArrayList<PrinterMode>();
for (int i = 0; i < body.length(); i++) {
if (!body.isNull(i)) {
JSONObject printerJson = (JSONObject) body.get(i);
int key = printerJson.optInt("id");
String ip = printerJson.optString("addressInfo");
String value = printerJson.optString("deviceName");
PrinterMode printer = new PrinterMode(key, value,ip);
list.add(printer);
}
}
result.p = list;
}
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
result.setResultStatus(ResultStatus.DATA_ERROR);
}
return result;
}
@Override
protected Result getResultInstance() {
return new Result();
}
public static class PrinterMode {
public int mModeKey;
public String mModeValue;
public String mIpAdress;
public PrinterMode(int modeKey, String modeValue,String ipAdress) {
mModeKey = modeKey;
mModeValue = modeValue;
mIpAdress = ipAdress;
}
}
@Override
protected String getCacheKey() {
// TODO Auto-generated method stub
return null;
}
}