package com.taobao.tae.Mshopping.demo.model;
import com.google.gson.Gson;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 配送方式
* Created by xinyuan on 14/7/9.
*/
public class DeliveryMethod implements Serializable {
private String id;
private String btn;
private String quark;
private Boolean submit;
private String tag;
private String type;
private DeliveryMethodFields fields;
public DeliveryMethod(JSONObject deliveryJsonObj) {
if (deliveryJsonObj == null) {
return;
}
try {
if (deliveryJsonObj.has("btn")) {
this.btn = deliveryJsonObj.getString("btn");
}
if (deliveryJsonObj.has("id")) {
this.id = deliveryJsonObj.getString("id");
}
if (deliveryJsonObj.has("quark")) {
this.quark = deliveryJsonObj.getString("quark");
}
if (deliveryJsonObj.has("submit")) {
this.submit = deliveryJsonObj.getBoolean("submit");
} else {
this.submit = false;
}
if (deliveryJsonObj.has("tag")) {
this.tag = deliveryJsonObj.getString("tag");
}
if (deliveryJsonObj.has("type")) {
this.type = deliveryJsonObj.getString("type");
}
if (deliveryJsonObj.has("fields")) {
this.fields = new DeliveryMethodFields(deliveryJsonObj.getJSONObject("fields"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
/**
* 获取用户选择的收货地址连接串
*
* @return
*/
public DeliveryFieldsOption getSelectedDeliveryMethod() {
return fields.getOptions().get(fields.getSelectedId());
}
public String toJson() {
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("id", id);
jsonObject.put("btn", btn);
jsonObject.put("quark", quark);
jsonObject.put("submit", submit);
jsonObject.put("tag", tag);
jsonObject.put("type", type);
jsonObject.put("fields", new JSONObject(fields.toJson()));
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject.toString();
}
public class DeliveryMethodFields {
private String selectedId;
private String title;
private Map<String, DeliveryFieldsOption> options;
public DeliveryMethodFields(JSONObject fieldsJsonObj) {
try {
if (fieldsJsonObj.has("title")) {
this.title = fieldsJsonObj.getString("title");
}
if (fieldsJsonObj.has("selectedId")) {
this.selectedId = fieldsJsonObj.getString("selectedId");
}
if (fieldsJsonObj.has("options")) {
options = new HashMap<String, DeliveryFieldsOption>();
JSONArray optionsJsonArray = fieldsJsonObj.getJSONArray("options");
for (int i = 0; i < optionsJsonArray.length(); i++) {
JSONObject jsonObject = optionsJsonArray.getJSONObject(i);
DeliveryFieldsOption fieldsOptions = new DeliveryFieldsOption(jsonObject);
options.put(fieldsOptions.getOptionId(), fieldsOptions);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
public String toJson() {
JSONObject jsonObject = new JSONObject();
try {
Gson gson = new Gson();
String optionsJson = gson.toJson(convertMapToList(options));
jsonObject.put("selectedId", selectedId);
jsonObject.put("title", title);
jsonObject.put("options", new JSONArray(optionsJson));
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject.toString();
}
private List convertMapToList(Map<String, DeliveryFieldsOption> map) {
List list = new ArrayList();
for (Map.Entry entry : map.entrySet()) {
list.add(entry.getValue());
}
return list;
}
public String getSelectedId() {
return selectedId;
}
public void setSelectedId(String selectedId) {
this.selectedId = selectedId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Map<String, DeliveryFieldsOption> getOptions() {
return options;
}
public void setOptions(Map<String, DeliveryFieldsOption> options) {
this.options = options;
}
}
public class DeliveryFieldsOption {
private String optionId;
private String name;
private String value;
public DeliveryFieldsOption(JSONObject optionsJsonObj) {
try {
if (optionsJsonObj.has("optionId")) {
this.optionId = optionsJsonObj.getString("optionId");
}
if (optionsJsonObj.has("name")) {
this.name = optionsJsonObj.getString("name");
}
if (optionsJsonObj.has("value")) {
this.value = optionsJsonObj.getString("value");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
public String getOptionId() {
return optionId;
}
public void setOptionId(String optionId) {
this.optionId = optionId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
public String getBtn() {
return btn;
}
public void setBtn(String btn) {
this.btn = btn;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getQuark() {
return quark;
}
public void setQuark(String quark) {
this.quark = quark;
}
public Boolean getSubmit() {
return submit;
}
public void setSubmit(Boolean submit) {
this.submit = submit;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public DeliveryMethodFields getFields() {
return fields;
}
public void setFields(DeliveryMethodFields fields) {
this.fields = fields;
}
}