package com.xiaomi.xms.sales.model; import android.text.TextUtils; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashMap; public class ProductDetailsInfo implements Serializable{ /** * */ private static final long serialVersionUID = 1L; public static final String TAG = "ProductDetailsInfo"; private String mProductId; private String mProductName; private String mProductBrief; private String mProductPrice; private String mStyleName; private String mProductMarketPrice; private String mNextItem; private String mLastItem; private boolean mNextIsPhone; private boolean mLastIsPhone; private boolean mHasProduct; private boolean mIsChoiceCombo; private int mBuyNumber; private ArrayList<ProductDetailsInfoItem> mItems; private ArrayList<CanJoinActsItem> mCanJoinActsList; private LinkedHashMap<String, String> mAdaptPhone; private Image mSupplyImage; private Image mStylePhoto; private ArrayList<StyleItem> mStyleList; public ProductDetailsInfo() { mItems = new ArrayList<ProductDetailsInfoItem>(); mCanJoinActsList = new ArrayList<CanJoinActsItem>(); mStyleList = new ArrayList<StyleItem>(); } private void setProductsName(String productName) { mProductName = productName; } public String getProductsName() { return mProductName; } private void setStyleName(String styleName) { mStyleName = styleName; } public String getStyleName() { return mStyleName; } public String getProductBrief() { return mProductBrief; } public void setProductBrief(String productBrief) { mProductBrief = productBrief; } public int getBuyNumber() { return mBuyNumber; } public void setBuyNumber(int buyNumber) { mBuyNumber = buyNumber; } public String getProductPrice() { return mProductPrice; } public void setProductPrice(String productPrice) { mProductPrice = productPrice; } public boolean isChoiceCombo() { return mIsChoiceCombo; } public void setIsChoiceCombo(boolean isChoiceCombo) { mIsChoiceCombo = isChoiceCombo; } public String getProductName() { return mProductName; } public void setProductName(String productName) { mProductName = productName; } public String getProductId() { return mProductId; } public void setProductId(String productId) { mProductId = productId; } public void setAdaptPhone(LinkedHashMap<String, String> adaptPhone) { mAdaptPhone = adaptPhone; } public LinkedHashMap<String, String> getAdaptPhone() { return mAdaptPhone; } public boolean hasProduct() { return mHasProduct; } public void setHasProduct(boolean hasProduct) { mHasProduct = hasProduct == false ? true : false; } public ArrayList<ProductDetailsInfoItem> getItems() { return mItems; } public void setItems(ArrayList<ProductDetailsInfoItem> items) { this.mItems = items; } public String getProductMarketPrice() { return mProductMarketPrice; } public void setProductMarketPrice(String productMarketPrice) { mProductMarketPrice = productMarketPrice; } public Image getSupplyImage() { return mSupplyImage; } public void setSupplyImage(Image supplyImage) { mSupplyImage = supplyImage; } public String getNextItem() { return mNextItem; } public void setNextItem(String nextItem) { mNextItem = nextItem; } public String getLastItem() { return mLastItem; } public void setLastItem(String lastItem) { mLastItem = lastItem; } public boolean getNextIsPhone() { return mNextIsPhone; } public void setNextIsPhone(boolean isPhone) { mNextIsPhone = isPhone; } public boolean getLastIsPhone() { return mLastIsPhone; } public void setLastIsPhone(boolean isPhone) { mLastIsPhone = isPhone; } public void setStylePhoto(Image stylePhoto) { mStylePhoto = stylePhoto; } public Image getStylePhoto() { return mStylePhoto; } public ArrayList<CanJoinActsItem> getCanJoinActsList() { return mCanJoinActsList; } public void setCanJoinActsList(ArrayList<CanJoinActsItem> canJoinActsList) { this.mCanJoinActsList = canJoinActsList; } public ArrayList<StyleItem> getStyleList() { return mStyleList; } public void setStyleList(ArrayList<StyleItem> styleList) { mStyleList = styleList; } public static ProductDetailsInfo valueOf(JSONObject json) throws JSONException { ProductDetailsInfo info = null; if (Tags.isJSONResultOK(json)) { JSONObject dataJson = json.optJSONObject(Tags.DATA); if (dataJson != null) { info = new ProductDetailsInfo(); JSONObject resultjson = dataJson.optJSONObject( Tags.ProductDetails.RESULT); info.setProductId(resultjson.optString(Tags.ProductDetails.PRODUCT_ID)); info.setProductsName(resultjson.optString(Tags.ProductDetails.PRODUCT_NAME)); info.setProductPrice(resultjson.optString(Tags.ProductDetails.PRICE)); info.setStyleName(resultjson.optString(Tags.ProductDetails.STYLE_NAME)); info.setProductBrief(resultjson.optString(Tags.ProductDetails.PRODUCT_BRIEF)); info.setBuyNumber(resultjson.optInt(Tags.ProductDetails.BUY_LIMIT)); info.setHasProduct(resultjson.optBoolean(Tags.ProductDetails.IS_COS)); info.setIsChoiceCombo(resultjson.optBoolean(Tags.ProductDetails.IS_CHANGE_STYLE)); info.setProductMarketPrice(resultjson.optString(Tags.ProductDetails.MARKET_PRICE)); JSONObject nextItemJson = resultjson.optJSONObject(Tags.ProductDetails.NEXT_ITEM); if (nextItemJson != null) { Iterator<String> it = nextItemJson.keys(); while (it.hasNext()) { if (TextUtils.equals(it.next(), Tags.ProductDetails.PRODUCT_ID)) { info.setNextItem(nextItemJson.optString(Tags.ProductDetails.PRODUCT_ID)); } else { info.setNextIsPhone(nextItemJson.optBoolean(Tags.ProductDetails.IS_PHONE)); } } } JSONObject lastItemJson = resultjson.optJSONObject(Tags.ProductDetails.LAST_ITEM); if (lastItemJson != null) { Iterator<String> it = lastItemJson.keys(); while (it.hasNext()) { if (TextUtils.equals(it.next(), Tags.ProductDetails.PRODUCT_ID)) { info.setLastItem(lastItemJson.optString(Tags.ProductDetails.PRODUCT_ID)); } else { info.setLastIsPhone(lastItemJson.optBoolean(Tags.ProductDetails.IS_PHONE)); } } } JSONArray styleJsonArray = resultjson.optJSONArray(Tags.ProductDetails.PRODUCT_NEW_STYLE); ArrayList<StyleItem> styleList = new ArrayList<StyleItem>(); if (styleJsonArray != null) { for (int i = 0; i < styleJsonArray.length(); i++) { if (!styleJsonArray.isNull(i)) { JSONObject itemJsonObject = (JSONObject) styleJsonArray.get(i); StyleItem styleItem = new StyleItem(); String sytleType = itemJsonObject .optString(Tags.ProductDetails.PRODUCT_STYLE_TYPE); styleItem.setStyleType(sytleType); JSONArray styleDataArray = itemJsonObject .optJSONArray(Tags.ProductDetails.PRODUCT_STYLE_DATA); LinkedHashMap<String, String> styleMap = new LinkedHashMap<String, String>(); for (int j = 0; j < styleDataArray.length(); j++) { if (!styleDataArray.isNull(j)) { JSONObject dataJsonObject = (JSONObject) styleDataArray.get(j); String productId = dataJsonObject .optString(Tags.ProductDetails.PRODUCT_STYLE_ID); String styleName = dataJsonObject .optString(Tags.ProductDetails.PRODUCT_STYLE_NAME); styleMap.put(styleName, productId); } } styleItem.setStyleDataMap(styleMap); styleList.add(styleItem); } } info.setStyleList(styleList); } // adapt phone JSONObject adaptjson = resultjson.optJSONObject(Tags.ProductDetails.ADAPT); if (adaptjson != null) { Iterator<String> it = adaptjson.keys(); LinkedHashMap<String, String> adaptMap = new LinkedHashMap<String, String>(); ArrayList<Integer> list = new ArrayList<Integer>(); while (it.hasNext()) { int adaptKey = Integer.parseInt(it.next()); list.add(adaptKey); } Collections.sort(list, Collections.reverseOrder()); for (int adaptkey : list) { String adaptValue = adaptjson.getString(String.valueOf(adaptkey)); adaptMap.put(String.valueOf(adaptkey), adaptValue); } info.setAdaptPhone(adaptMap); } // listview item ProductDetailsInfoItem item = null; ArrayList<ProductDetailsInfoItem> list = new ArrayList<ProductDetailsInfoItem>(); JSONArray productImageJsonArray = resultjson .getJSONArray(Tags.ProductDetails.PRODUCT_DESC_IMG); if (productImageJsonArray != null) { for (int i = 0; i < productImageJsonArray.length(); i++) { String imageUrl = productImageJsonArray.getString(i); item = new ProductDetailsInfoItem(); item.setImage(new Image(imageUrl)); list.add(item); } } info.setItems(list); JSONObject productImageJson = resultjson .optJSONObject(Tags.ProductDetails.IMAGES); if (productImageJson != null) { for (int i = 1; i <= productImageJson.length(); i++) { String image = productImageJson.optString(String.valueOf(i)); if (!TextUtils.isEmpty(image)) { item = new ProductDetailsInfoItem(); item.setImage(new Image(image)); list.add(item); } } info.setSupplyImage(new Image(productImageJson .optString(Tags.ProductDetails.IMAGES_ONE))); } String image = resultjson.optString(Tags.ProductDetails.IMAGE_URL); if (!TextUtils.isEmpty(image)) { info.setStylePhoto(new Image(image)); } JSONObject canJoinActsJson = resultjson .optJSONObject(Tags.ProductDetails.CANJOINACTS); if (canJoinActsJson != null) { Iterator<String> it = canJoinActsJson.keys(); ArrayList<CanJoinActsItem> canJoinActsList = new ArrayList<CanJoinActsItem>(); while (it.hasNext()) { String styleKey = it.next(); CanJoinActsItem actsItem = new CanJoinActsItem(); JSONObject canJoinActsKeyJson = canJoinActsJson.optJSONObject(styleKey); if (canJoinActsKeyJson != null) { String typeDesc = canJoinActsKeyJson.getString(Tags.ProductDetails.TYPE_DESC); String discription = canJoinActsKeyJson .getString(Tags.ProductDetails.TITLE); actsItem.setActsType(typeDesc); actsItem.setActsDescription(discription); } canJoinActsList.add(actsItem); } info.setCanJoinActsList(canJoinActsList); } } else { return null; } } else { return null; } return info; } public static class CanJoinActsItem { private String mType; private String mDescription; public String getActsType() { return mType; } public void setActsType(String type) { mType = type; } public String getActsDescription() { return mDescription; } public void setActsDescription(String description) { mDescription = description; } } public static class StyleItem implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private String mStyleType; private LinkedHashMap<String, String> mStyleDataMap; public String getStyleType() { return mStyleType; } public void setStyleType(String type) { mStyleType = type; } public LinkedHashMap<String, String> getStyleDataMap() { return mStyleDataMap; } public void setStyleDataMap(LinkedHashMap<String, String> styleDataMap) { mStyleDataMap = styleDataMap; } } }