package com.banking.xc.utils.webService.request.hotel;
import java.util.ArrayList;
import java.util.List;
import com.banking.xc.entity.RatePlan;
import com.banking.xc.utils.webService.util.RequestConstant;
import com.banking.xc.utils.xml.frame.XmlNode;
/**
* 价格查询,需要在可预订检查和预定酒店时使用。
* @author zhangyinhang
*
*/
public class HotelRatePlanRequest extends HotelRequest{
private final String requestType = RequestConstant.HOTEL_RATEPLAN;
private ArrayList<RatePlan> ratePlanList;
public ArrayList<RatePlan> getRatePlanList() {
return ratePlanList;
}
public void setRatePlanList(ArrayList<RatePlan> ratePlanList) {
this.ratePlanList = ratePlanList;
}
@Override
public String getHotelParams() {
// TODO Auto-generated method stub
final XmlNode hotelRatePlanNode = new XmlNode("ns:OTA_HotelRatePlanRQ");
hotelRatePlanNode.putAttribute("Version", "1.0");
hotelRatePlanNode.putAttribute("TimeStamp", "2013-02-27T18:26:00.000+08:00"); //还是用当前日期
final XmlNode ratePlansNode = new XmlNode("ns:RatePlans");
hotelRatePlanNode.addChildNode(ratePlansNode);
ArrayList<RatePlan> ratePlans = getRatePlanList();
for(int i=0;i<ratePlans.size();i++){
ratePlansNode.addChildNode(getRatePlanNode(ratePlans.get(i)));
}
return hotelRatePlanNode.toString();
}
public XmlNode getRatePlanNode(RatePlan ratePlan){
final XmlNode ratePlanNode = new XmlNode("ns:RatePlan");
final XmlNode dateRangeNode = new XmlNode("ns:DateRange");
dateRangeNode.putAttribute("Start", ratePlan.getStart());
dateRangeNode.putAttribute("End", ratePlan.getEnd());
ratePlanNode.addChildNode(dateRangeNode);
final XmlNode ratePlanCandidatesNode = new XmlNode("ns:RatePlanCandidates");
ratePlanNode.addChildNode(ratePlanCandidatesNode);
final XmlNode ratePlanCandidateNode = new XmlNode("ns:RatePlanCandidate");
if(ratePlan.getRatePlanCode()!=null){
ratePlanCandidateNode.putAttribute("RatePlanCode",ratePlan.getRatePlanCode());
}
ratePlanCandidateNode.putAttribute("AvailRatesOnlyInd", String.valueOf(ratePlan.isAvailRatesOnlyInd()));
ratePlanCandidatesNode.addChildNode(ratePlanCandidateNode);
final XmlNode hotelRefsNode = new XmlNode("ns:HotelRefs");
ratePlanCandidateNode.addChildNode(hotelRefsNode);
final XmlNode hotelRefNode = new XmlNode("ns:HotelRef");
hotelRefNode.putAttribute("HotelCode", ratePlan.getHotelCode());
hotelRefsNode.addChildNode(hotelRefNode);
if(ratePlan.getRestrictedDisplayIndicator()!=null){
final XmlNode tpaExtensions = new XmlNode("ns:TPA_Extensions");
tpaExtensions.putAttribute("RestrictedDisplayIndicator", ratePlan.getRestrictedDisplayIndicator());
ratePlanNode.addChildNode(tpaExtensions);
}
return ratePlanNode;
}
@Override
public String getRequestType() {
// TODO Auto-generated method stub
return requestType;
}
@Override
public Boolean checkParams() {
// TODO Auto-generated method stub
return null;
}
/**
* <ns:OTA_HotelRatePlanRQ TimeStamp="2012-04-20T00:00:00.000+08:00" Version="1.0">
<ns:RatePlans>
<ns:RatePlan>
<ns:DateRange Start="2012-09-28" End="2012-09-30"/>
<ns:RatePlanCandidates>
<ns:RatePlanCandidate RatePlanCode="8671" AvailRatesOnlyInd="false">
<ns:HotelRefs>
<ns:HotelRef HotelCode="625"/>
</ns:HotelRefs>
</ns:RatePlanCandidate>
</ns:RatePlanCandidates>
</ns:RatePlan>
<ns:RatePlan>
<ns:DateRange Start="2012-09-28" End="2012-09-30"/>
<ns:RatePlanCandidates>
<ns:RatePlanCandidate AvailRatesOnlyInd="false">
<ns:HotelRefs>
<ns:HotelRef HotelCode="635"/>
</ns:HotelRefs>
</ns:RatePlanCandidate>
</ns:RatePlanCandidates>
<ns:TPA_Extensions RestrictedDisplayIndicator="false"/>
</ns:RatePlan>
</ns:RatePlans>
</ns:OTA_HotelRatePlanRQ>
*/
}