package com.opentravelsoft.action.manage.product; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import com.opensymphony.xwork2.ActionContext; import com.opentravelsoft.action.ManageAction; import com.opentravelsoft.common.SessionKeyParams; import com.opentravelsoft.entity.Line; import com.opentravelsoft.entity.LineDescription; import com.opentravelsoft.entity.ProductItem; import com.opentravelsoft.entity.ProductTmpl; import com.opentravelsoft.service.product.ProductTmplService; import com.opentravelsoft.service.product.LineTraitService; import com.opentravelsoft.util.StringUtil; /** * 线路重要条款 * * @author <a herf="mailto:zhangsitao@gmail.com">Steven Zhang</a> */ public class LineRuleAction extends ManageAction { private static final long serialVersionUID = 7671898914387730451L; @Autowired private ProductTmplService lineTmplService; @Autowired private LineTraitService lineTraitService; private List<LineDescription> ruleList = new ArrayList<LineDescription>(); private List<ProductTmpl> tmpl = new ArrayList<ProductTmpl>(); private Line line; private int idx; private String[] selectedRules; // ------------------------------------------------------------------------- private String itemType; private ProductItem item; @Override public String input() throws Exception { Map<String, Object> session = ActionContext.getContext().getSession(); line = (Line) session.get(SessionKeyParams.EBIZ_CURRENT_ROUTE); ruleList = lineTraitService.getLineTrait(line.getLineNo(), itemType); tmpl = lineTmplService.getProductTmplList(line.getTeam().getTeamId(), itemType); item = lineTraitService.getProductItem(itemType); return INPUT; } public String add() throws Exception { line = (Line) ActionContext.getContext().getSession() .get(SessionKeyParams.EBIZ_CURRENT_ROUTE); item = lineTraitService.getProductItem(itemType); ruleList = sort(ruleList); int refNo = 1; for (LineDescription obj : ruleList) { obj.setRefNo(refNo++); } LineDescription routeTrait = new LineDescription(); routeTrait.setRefNo(refNo++); routeTrait.setTraitDetail(""); ruleList.add(routeTrait); tmpl = lineTmplService.getProductTmplList(line.getTeam().getTeamId(), itemType); return SUCCESS; } public String delete() throws Exception { for (LineDescription obj : ruleList) { if (obj.getRefNo() == idx) { ruleList.remove(obj); break; } } List<LineDescription> list = new ArrayList<LineDescription>(); int size = ruleList.size() + 2; for (int i = 0; i < size; i++) { for (int j = 0; j < ruleList.size(); j++) { if (ruleList.get(j).getRefNo() == i) { list.add(ruleList.get(j)); break; } } } ruleList = list; line = (Line) ActionContext.getContext().getSession() .get(SessionKeyParams.EBIZ_CURRENT_ROUTE); item = lineTraitService.getProductItem(itemType); tmpl = lineTmplService.getProductTmplList(line.getTeam().getTeamId(), itemType); return SUCCESS; } public String save() { line = (Line) ActionContext.getContext().getSession() .get(SessionKeyParams.EBIZ_CURRENT_ROUTE); ruleList = sort(ruleList); tmpl = lineTmplService.getProductTmplList(line.getTeam().getTeamId(), itemType); if (null != selectedRules) { for (int i = 0; i < selectedRules.length; i++) { for (ProductTmpl tip : tmpl) { if (selectedRules[i].equals(String.valueOf(tip.getId()))) { LineDescription trait = new LineDescription(); trait.setTraitDetail(tip.getContent()); trait.setItem(tip.getSubject()); ruleList.add(trait); } } } } for (int i = ruleList.size() - 1; i >= 0; i--) { LineDescription obj = ruleList.get(i); if (!StringUtil.hasLength(obj.getTraitDetail())) { ruleList.remove(obj); continue; } } int idx = 1; for (LineDescription obj : ruleList) { obj.setRefNo(idx++); obj.setRouteNo(line.getLineNo()); obj.setType(itemType); } lineTraitService.txSaveLineTrait(ruleList, line.getLineNo(), itemType); addActionMessage("线路重要条款保存成功."); return SUCCESS; } @Override public void validate() { try { for (int i = 0; i < ruleList.size(); i++) { LineDescription trait = ruleList.get(i); String value = trait.getTraitDetail(); if (value.getBytes(ENCODEING).length > 2000) { addFieldError("描述", "第" + (i + 1) + "行 描述文字长度超过1000汉字或2000英数字."); } } } catch (UnsupportedEncodingException e) { } } private List<LineDescription> sort(List<LineDescription> alertList) { List<LineDescription> list = new ArrayList<LineDescription>(); for (int i = 0; i < alertList.size(); i++) { for (int j = 0; j < alertList.size(); j++) { LineDescription obj = alertList.get(j); if (obj.getRefNo() == i + 1) { list.add(obj); break; } } } return list; } public void setRuleList(List<LineDescription> ruleList) { this.ruleList = ruleList; } public List<LineDescription> getRuleList() { return ruleList; } public int getIdx() { return idx; } public void setIdx(int idx) { this.idx = idx; } public Line getLine() { return line; } public void setChecked(String[] rules) { this.selectedRules = rules.clone(); } public List<ProductTmpl> getTmpl() { return tmpl; } public String getItemType() { return itemType; } public void setItemType(String itemType) { this.itemType = itemType; } public ProductItem getItem() { return item; } }