package com.fancl.iloyalty.parser; import java.util.ArrayList; import java.util.List; import com.fancl.iloyalty.exception.FanclException; import com.fancl.iloyalty.pojo.Promotion; import com.fancl.iloyalty.pojo.PromotionAnswer; import com.fancl.iloyalty.pojo.PromotionQuestion; import com.fancl.iloyalty.responseimpl.PromotionCountResult; import com.fancl.iloyalty.util.DataUtil; import com.fancl.iloyalty.util.LogController; import com.longevitysoft.android.xml.plist.domain.Array; import com.longevitysoft.android.xml.plist.domain.Date; import com.longevitysoft.android.xml.plist.domain.Dict; import com.longevitysoft.android.xml.plist.domain.PList; public class PromotionParser { public List<Promotion> parsePromotionList(PList plist) throws FanclException { int status = ((Dict) plist.getRootElement()).getConfigurationInteger("status").getValue(); if (status == 0) { List<Promotion> promotionList = new ArrayList<Promotion>(); Array itemArray = ((Dict) plist.getRootElement()).getConfigurationArray("item"); LogController.log("itemArray.size() : " + itemArray.size()); for (int i = 0; i < itemArray.size(); i++) { String id = ((Dict) itemArray.get(i)).getConfiguration("id").getValue();; String code = ((Dict) itemArray.get(i)).getConfiguration("code").getValue(); String thumbnail = DataUtil.convertImageName(((Dict) itemArray.get(i)).getConfiguration("thumbnail").getValue()); String image = DataUtil.convertImageName(((Dict) itemArray.get(i)).getConfiguration("image").getValue()); String titleZh = ((Dict) itemArray.get(i)).getConfiguration("titleZh").getValue(); String titleSc = ((Dict) itemArray.get(i)).getConfiguration("titleSc").getValue(); String titleEn = ((Dict) itemArray.get(i)).getConfiguration("titleEn").getValue(); String shortDescriptionZh = ((Dict) itemArray.get(i)).getConfiguration("shortDescriptionZh").getValue(); String shortDescriptionSc = ((Dict) itemArray.get(i)).getConfiguration("shortDescriptionSc").getValue(); String shortDescriptionEn = ((Dict) itemArray.get(i)).getConfiguration("shortDescriptionEn").getValue(); String descriptionZh = ((Dict) itemArray.get(i)).getConfiguration("descriptionZh").getValue(); String descriptionSc = ((Dict) itemArray.get(i)).getConfiguration("descriptionSc").getValue(); String descriptionEn = ((Dict) itemArray.get(i)).getConfiguration("descriptionEn").getValue(); Date promotionStartDatetimeObj = ((Dict) itemArray.get(i)).getConfigurationObject("promotionStartDatetime"); java.util.Date tmpPromotionStartDatetime = promotionStartDatetimeObj.getValue(); String promotionStartDatetime = DataUtil.convertDateToString(tmpPromotionStartDatetime); Date promotionEndDatetimeObj = ((Dict) itemArray.get(i)).getConfigurationObject("promotionEndDatetime"); java.util.Date tmpPromotionEndDatetime = promotionEndDatetimeObj.getValue(); String promotionEndDatetime = DataUtil.convertDateToString(tmpPromotionEndDatetime); String isNew = ((Dict) itemArray.get(i)).getConfiguration("isNew").getValue(); String isPublic = ((Dict) itemArray.get(i)).getConfiguration("isPublic").getValue(); String promotionType = ((Dict) itemArray.get(i)).getConfiguration("promotionType").getValue(); String couponSerialNumber = ((Dict) itemArray.get(i)).getConfiguration("couponSerialNumber").getValue(); String couponStatus = ((Dict) itemArray.get(i)).getConfiguration("couponStatus").getValue(); String couponStatusCode = ((Dict) itemArray.get(i)).getConfiguration("couponStatusCode").getValue(); String isParticipated = ((Dict) itemArray.get(i)).getConfiguration("isParticipated").getValue(); String isLuckyDraw = ((Dict) itemArray.get(i)).getConfiguration("isLuckyDraw").getValue(); String luckyDrawType = ((Dict) itemArray.get(i)).getConfiguration("luckyDrawType").getValue(); String gp = ((Dict) itemArray.get(i)).getConfiguration("gp").getValue(); // 20 not used, 30 suspended, 90 redeemed, 00 others String publishStatus = ""; String createDatetime = ""; Promotion promotion = new Promotion(id, code, thumbnail, image, titleZh, titleSc, titleEn, shortDescriptionZh, shortDescriptionSc, shortDescriptionEn, descriptionZh, descriptionSc, descriptionEn, promotionStartDatetime, promotionEndDatetime, publishStatus, promotionType, isLuckyDraw, luckyDrawType, isNew, isPublic, gp, createDatetime, isParticipated, couponSerialNumber, isNew); promotion.setCouponStatus(couponStatus); promotion.setCouponStatusCode(couponStatusCode); promotionList.add(promotion); LogController.log(promotion.toString()); } return promotionList; } return null; } public List<PromotionQuestion> parsePromotionQuestionAnswerList(PList plist) throws FanclException { int status = ((Dict) plist.getRootElement()).getConfigurationInteger("status").getValue(); if (status == 0) { List<PromotionQuestion> promotionQuestionList = new ArrayList<PromotionQuestion>(); Array promotionQuestionitemArray = ((Dict) plist.getRootElement()).getConfigurationArray("item"); LogController.log("promotionAnsweritemArray.size() : " + promotionQuestionitemArray.size()); for (int i = 0; i < promotionQuestionitemArray.size(); i++) { String promotionId = ""; String questionZh = ((Dict) promotionQuestionitemArray.get(i)).getConfiguration("questionZh").getValue(); String questionSc = ((Dict) promotionQuestionitemArray.get(i)).getConfiguration("questionSc").getValue(); String questionEn = ((Dict) promotionQuestionitemArray.get(i)).getConfiguration("questionEn").getValue(); List<PromotionAnswer> promotionAnswerList = new ArrayList<PromotionAnswer>(); Array promotionAnsweritemArray = ((Dict) promotionQuestionitemArray.get(i)).getConfigurationArray("answer"); LogController.log("promotionAnsweritemArray.size() : " + promotionAnsweritemArray.size()); for (int j = 0; j < promotionAnsweritemArray.size(); j++) { String key = ((Dict) promotionAnsweritemArray.get(j)).getConfiguration("key").getValue(); String answerZh = ((Dict) promotionAnsweritemArray.get(j)).getConfiguration("answerZh").getValue(); String answerSc = ((Dict) promotionAnsweritemArray.get(j)).getConfiguration("answerSc").getValue(); String answerEn = ((Dict) promotionAnsweritemArray.get(j)).getConfiguration("answerEn").getValue(); PromotionAnswer promotionAnswer = new PromotionAnswer(key, answerZh, answerSc, answerEn); promotionAnswerList.add(promotionAnswer); } PromotionQuestion promotionQuestion = new PromotionQuestion(promotionId, questionZh, questionSc, questionEn, promotionAnswerList); promotionQuestionList.add(promotionQuestion); } return promotionQuestionList; } return null; } public Object parsePromotionCountResult(PList plist) throws FanclException { int status = ((Dict) plist.getRootElement()).getConfigurationInteger("status").getValue(); if (status == 0) { PromotionCountResult promotionCountResult = new PromotionCountResult(); promotionCountResult.setStatus(status); String countType = ((Dict) plist.getRootElement()).getConfiguration("countType").getValue(); if (countType != null) { promotionCountResult.setCountType(countType); } String count = ((Dict) plist.getRootElement()).getConfiguration("count").getValue(); if (count != null) { promotionCountResult.setCount(count); } String unreadCount = ((Dict) plist.getRootElement()).getConfiguration("unreadCount").getValue(); if (unreadCount != null) { promotionCountResult.setUnreadCount(unreadCount); } return promotionCountResult; } else { FanclResultParser fanclResultParser = new FanclResultParser(); return fanclResultParser.parseGeneralResult(plist); } } }