package com.opentravelsoft.entity.xml;
import java.io.IOException;
import java.text.SimpleDateFormat;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import com.opentravelsoft.entity.Booking;
import com.opentravelsoft.entity.Plan;
import com.opentravelsoft.entity.TourCost;
import com.opentravelsoft.entity.Tourist;
import com.opentravelsoft.util.AbstractObjectReader;
import com.opentravelsoft.util.RowDataUtil;
public class TourXMLReader extends AbstractObjectReader {
protected SimpleDateFormat SDF1 = new SimpleDateFormat("yyyy/MM/dd");
@Override
public void parse(InputSource input) throws IOException, SAXException {
if (input instanceof TourInputSource) {
parse(((TourInputSource) input).getTour());
} else {
throw new SAXException("Unsupported InputSource specified. "
+ "Must be a ProjectTeamInputSource");
}
}
private void parse(Plan tour) throws SAXException {
if (tour == null) {
throw new NullPointerException("Parameter projectTeam must not be null");
}
if (handler == null) {
throw new IllegalStateException("ContentHandler not set");
}
handler.startDocument();
generateFor(tour);
handler.endDocument();
}
private void generateFor(Plan tour) throws SAXException {
SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm");
if (tour == null) {
throw new NullPointerException("Parameter projectTeam must not be null");
}
if (handler == null) {
throw new IllegalStateException("ContentHandler not set");
}
handler.startElement("tour");
handler.element("tour-name", tour.getTourNo());
handler.element("line-name", tour.getLine().getLineName());
if (null == tour.getOutDate()) {
handler.element("out-date", "");
} else {
handler.element("out-date", (tour.getOutDate()).toString());
}
if (null == tour.getInDate()) {
handler.element("in-date", "");
} else {
handler.element("in-date", (tour.getInDate()).toString());
}
handler.element("out-city", tour.getLine().getOutCity().getCitynm());
handler.element("in-city", tour.getInCity());
//
handler.element("double-room", RowDataUtil.intFormat(tour.getDoubleRoom()));
handler.element("single-room", RowDataUtil.intFormat(tour.getSingleRoom()));
handler.element("singleRoom", RowDataUtil.intFormat(tour.getSingleRoom()));
handler.element("extra-bed-room",
RowDataUtil.intFormat(tour.getExtraBedRoom()));
handler.element("doubleRoom", RowDataUtil.intFormat(tour.getDoubleRoom()));
handler.element("extraBedRoom",
RowDataUtil.intFormat(tour.getExtraBedRoom()));
// 境外报团名单
handler.element("label1", tour.getLabel1());
handler.element("label2", tour.getLabel2());
handler.element("label3", tour.getLabel3());
// 出境游名单打印
handler.element("tourSerialNumber", tour.getTourSerialNumber());
handler.element("tourNo", tour.getTourNo());
handler.element("year", tour.getYear());
handler.element("routeName", tour.getLine().getLineName());
handler.element("printPax", tour.getPrintPax());
handler.element("printMalePax", tour.getPrintMalePax());
handler.element("printFemalePax", tour.getPrintFemalePax());
handler.element("localTname", tour.getLocalTname());
handler.element("localEcontact", tour.getLocalEcontact());
handler.element("receptionTname", tour.getReceptionTname());
handler.element("receptionEcontact", tour.getReceptionEcontact());
handler.element("leader", tour.getLeader());
handler.element("leaderKey", tour.getLeaderKey());
handler.element("leaderPrintName", tour.getLeaderPrintName());
handler.element("leaderPrintPinyin", tour.getLeaderPrintPinyin());
handler.element("leaderPrintSex", tour.getLeaderPrintSex());
handler.element("leaderPrintBirthday", tour.getLeaderPrintBirthday());
handler.element("leaderPrintBirPla", tour.getLeaderPrintBirPla());
handler.element("leaderPrintPassportNo", tour.getLeaderPrintPassportNo());
handler.element("leaderPrintPassportPla", tour.getLeaderPrintPassportPla());
handler.element("leaderPrintPassportDate",
tour.getLeaderPrintPassportDate());
handler.element("outDate", tour.getPrintOutDate());
handler.element("inDate", tour.getPrintInDate());
handler.element("outCity", tour.getLine().getOutCity().getCitynm());
handler.element("inCity", tour.getInCity());
handler.element("outInKey", tour.getOutInKey());
// 简单打印
handler.element("simpleReport", tour.getSimpleReport());
handler.element("title", tour.getTitle());
handler.element("file-title", tour.getFileTitle());
handler.element("remark", tour.getRemarks());
handler.element("send", tour.getSend());
handler.element("reserve", tour.getReceive());
handler.element("pax", RowDataUtil.intFormat(tour.getPax()));
handler.element("allPax", RowDataUtil.intFormat(tour.getPax()));
handler.element("leadpax", RowDataUtil.intFormat(tour.getLeaderPax()));
// 是否显示项
handler.element("printname", tour.getPrintName());
handler.element("printpinyin", tour.getPrintPinyin());
handler.element("printsex", tour.getPrintSex());
handler.element("printage", tour.getPrintAge());
handler.element("printagent", tour.getPrintAgent());
handler.element("printIdcard", tour.getPrintIdcard());
handler.element("printBirthday", tour.getPrintBirthday());
handler.element("printBirPla", tour.getPrintBirPla());
handler.element("printPassportType", tour.getPrintPassportType());
handler.element("printPassportNo", tour.getPrintPassportNo());
handler.element("printPassportDate", tour.getPrintPassportDate());
handler.element("printPassportExpiry", tour.getPrintPassportDate());
handler.element("printPassportPla", tour.getPrintPassportPla());
handler.element("printPassportAnnotation",
tour.getPrintPassportAnnotation());
// 打印港澳游名单表
handler.element("leadnum", tour.getLeadnum());
if (tour.getDate1() != null) {
handler.element("date1", tour.getDate1());
} else {
handler.element("date1", "");
}
handler.element("pla1", tour.getPla1());
handler.element("pass1", tour.getPass1());
handler.element("end1", tour.getEnd1());
handler.element("date2", tour.getDate2());
handler.element("pla2", tour.getPla2());
handler.element("pass2", tour.getPass2());
handler.element("end2", tour.getEnd2());
handler.element("date3", tour.getDate3());
handler.element("pla3", tour.getPla3());
handler.element("pass3", tour.getPass3());
handler.element("end3", tour.getEnd3());
handler.element("arrhkdate", tour.getArrHKdate());
handler.element("arrhktime", tour.getArrHKtime());
handler.element("arrhkvehicle", tour.getArrHKvehicle());
handler.element("leavehkdate", tour.getLeaveHKdate());
handler.element("leavehktime", tour.getLeaveHKtime());
handler.element("leavehkvehicle", tour.getLeaveHKvehicle());
handler.element("arrmcdate", tour.getArrMCdate());
handler.element("arrmctime", tour.getArrMCtime());
handler.element("arrmcvehicle", tour.getArrMCvehicle());
handler.element("leavemcdate", tour.getLeaveMCdate());
handler.element("leavemctime", tour.getLeaveMCtime());
handler.element("leavemcvehicle", tour.getLeaveMCvehicle());
handler.element("localtname", tour.getLocalTname());
handler.element("hktname", tour.getHKTname());
handler.element("mctname", tour.getMCTname());
handler.element("localecon", tour.getLocalEcontact());
handler.element("hkecon", tour.getHKEcontact());
handler.element("mcecon", tour.getMCEcontact());
handler.element("pax", tour.getGapax());
handler.element("male", tour.getGamalePax());
handler.element("female", tour.getGafemalePax());
handler.element("child", tour.getGachildPax());
// 单团
handler.element("department", tour.getTeam().getName());
handler.element("day", RowDataUtil.intFormat(tour.getLine().getLineDay()));
handler.element("leaderName", tour.getLeaderName());
handler.element("muAmount", RowDataUtil.doubleFormat(tour.getMuAmount()));
handler.element("alAmount", RowDataUtil.doubleFormat(tour.getAlAmount()));
handler.element("wiAmount", RowDataUtil.doubleFormat(tour.getWiAmount()));
handler.element("exemptPax", RowDataUtil.intFormat(tour.getExemptPax()));
handler.element("childPax", RowDataUtil.intFormat(tour.getChildPax()));
handler.element("amount", RowDataUtil.doubleFormat(tour.getAmount()));
handler.element("tourAmount",
RowDataUtil.doubleFormat(tour.getTourAmount()));
handler.element("costAmount", RowDataUtil.doubleFormat(tour.getCost()));
handler.element("grossAmount",
RowDataUtil.doubleFormat(tour.getGrossAmount()));
handler.element("grossAmountRate",
RowDataUtil.doubleFormat(tour.getGrossAmountRate()));
handler.element("grossAmountAverage",
RowDataUtil.doubleFormat(tour.getGrossAmountAverage()));
handler.element("extrIncome",
RowDataUtil.doubleFormat(tour.getExtrIncome()));
handler.element("extrIncomeDec", tour.getExtrIncomeDec());
handler.element("totalPax", RowDataUtil.intFormat(tour.getTotalPax()));
handler.element("oprateUser", tour.getOprateUserName());
if (null != tour.getDateCreated()) {
handler.element("CTourDate", SDF.format(tour.getDateCreated()));
} else {
handler.element("CTourDate", " ");
}
handler.element("opUserName", tour.getOpUserName());
if (null != tour.getOpDate()) {
handler.element("opDate", SDF.format(tour.getOpDate()));
} else {
handler.element("opDate", " ");
}
handler.element("frUserName", tour.getFrUserName());
if (null != tour.getFrDate()) {
handler.element("frDate", SDF.format(tour.getFrDate()));
} else {
handler.element("frDate", " ");
}
// 游客
for (Tourist trip : tour.getCustomerList()) {
generateFor(trip);
}
// 订单
for (Booking book : tour.getBookList()) {
generateFor(book);
}
// 成本
for (TourCost singleTourCostAcct : tour.getCostList()) {
generateFor(singleTourCostAcct);
}
// handler.element("create-date", (tour.getDateCreated()).toString());
// handler.element("creator", tour.getCreator());
// handler.element("opuser", tour.getOpUser());
handler.endElement("tour");
}
private void generateFor(Tourist trip) throws SAXException {
if (trip == null) {
throw new NullPointerException("Parameter projectMember must not be null");
}
if (handler == null) {
throw new IllegalStateException("ContentHandler not set");
}
handler.startElement("customer");
handler.element("idx", Integer.toString(trip.getNumber()));
if (trip.getUserName() != null && trip.getUserName().length() > 15)
handler.element("agentname", trip.getUserName().substring(0, 15));
else
handler.element("agentname", trip.getUserName());
handler.element("name", trip.getUserName());
handler.element("pinYin", trip.getPinYin());
handler.element("name3", "");
handler.element("sex", trip.getSex().equals("M") ? "Male" : "Female");
handler.element("age", RowDataUtil.intFormat(trip.getAge()));
handler.element("idcard", trip.getIdCard());
handler.element("leader", trip.getLeaderKey());
if (trip.getBirthday() == null) {
handler.element("birdate", "");
} else {
handler.element("birdate", (trip.getBirthday()).toString());
}
handler.element("birpla", trip.getBirthplace());
// handler.element("tl", trip.get)
// handler.element("country", trip.getNation());
// handler.element("province", trip.getProvince());
// handler.element("city", trip.getCity());
// handler.element("vocation", trip.getVocation());
// handler.element("educate", trip.getEducate());
// handler.element("phone", trip.getPhone());
// handler.element("mobile", trip.getMobile());
// handler.element("e-mail", trip.getEmail());
// handler.element("fax", trip.getFax());
// handler.element("address", trip.getAddress());
handler.element("passportType", trip.getPassportType());
handler.element("passportNo", trip.getPassportNo());
if (null == trip.getPassportDate()) {
handler.element("passportDate", "");
} else {
handler.element("passportDate", (trip.getPassportDate()).toString());
}
if (null == trip.getPassportExpiry()) {
handler.element("passportExpiry", "");
} else {
handler.element("passportExpiry", (trip.getPassportExpiry()).toString());
}
handler.element("passportPla", trip.getPassportPlace());
handler.element("passportAnnotation", trip.getPassportAnnotation());
// 是否显示项
handler.element("printname", trip.getPrintName());
handler.element("printpinyin", trip.getPrintPinyin());
handler.element("printsex", trip.getPrintSex());
handler.element("printage", trip.getPrintAge());
handler.element("printidcard", trip.getPrintIdcard());
if (null == trip.getPrintBirthday()) {
handler.element("printBirthday", "");
} else {
handler.element("printBirthday", SDF1.format(trip.getPrintBirthday()));
}
handler.element("printBirPla", trip.getPrintBirPla());
handler.element("printagent", trip.getPrintAgent());
handler.element("printPassportType", trip.getPrintPassportType());
handler.element("printPassportNo", trip.getPrintPassportNo());
handler.element("printPassportDate", trip.getPrintPassportDate());
handler.element("printPassportExpiry", trip.getPrintPassportExpiry());
handler.element("printPassportPla", trip.getPrintPassportPla());
handler.element("printPassportAnnotation",
trip.getPrintPassportAnnotation());
handler.element("child", trip.getChild());
handler.endElement("customer");
}
/**
* 此团所有的订单
*
* @param book
* @throws SAXException
*/
private void generateFor(Booking book) throws SAXException {
if (book == null) {
throw new NullPointerException("Parameter projectTeam must not be null");
}
if (handler == null) {
throw new IllegalStateException("ContentHandler not set");
}
handler.startElement("book");
handler.element("id", RowDataUtil.intFormat(book.getId() + 1));
handler.element("customerName", book.getCustomer().getName());
handler.element("seller", String.valueOf(book.getSalesman()));
handler.element("pax", RowDataUtil.intFormat(book.getPax()));
handler.element("expenseFinalExpense",
RowDataUtil.doubleFormat(book.getDbamt().add(book.getFinalExpense())));
handler.element("payCosts", RowDataUtil.doubleFormat(book.getPayCosts()));
handler.element("unPay", RowDataUtil.doubleFormat(book.getUnPay()));
handler.endElement("book");
}
/**
* 此团的成本明细
*
* @param singleTourCostAcct
* @throws SAXException
*/
private void generateFor(TourCost singleTourCostAcct) throws SAXException {
if (singleTourCostAcct == null) {
throw new NullPointerException("Parameter projectTeam must not be null");
}
if (handler == null) {
throw new IllegalStateException("ContentHandler not set");
}
handler.startElement("singleTourCostAcct");
handler
.element("id", RowDataUtil.intFormat(singleTourCostAcct.getId() + 1));
handler.element("amountTypeName", singleTourCostAcct.getCostType());
handler.element("supplier", singleTourCostAcct.getCustomer().getName());
handler.element("description", singleTourCostAcct.getDescription());
handler.element("currency", singleTourCostAcct.getCurrency());
handler.element("roe",
RowDataUtil.doubleFormat(singleTourCostAcct.getRoe()));
handler.element("unitPrice",
RowDataUtil.doubleFormat(singleTourCostAcct.getUnitPrice()));
handler.element("count",
RowDataUtil.intFormat(singleTourCostAcct.getCount()));
handler.element("unit", singleTourCostAcct.getUnit());
handler.element("amount",
RowDataUtil.doubleFormat(singleTourCostAcct.getAmount()));
handler.endElement("singleTourCostAcct");
}
}