package com.fractalite.hermes.teldar.parsers; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Currency; import java.util.Date; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPathExpressionException; import org.apache.camel.Exchange; import org.apache.camel.InvalidPayloadException; import org.joda.time.LocalDate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.SAXException; import com.fractalite.hermes.teldar.tools.ObjectToXml; import com.fractalite.models.commerce.QuoteTemplate; import com.fractalite.models.commerce.RequestForQuote; import com.fractalite.models.commerce.TermOfSale; import com.fractalite.models.common.Money; import com.fractalite.models.travel.stay.HotelStay; import com.gekko_holding.webservice.v2_4.AvailabilityResponse; import com.gekko_holding.webservice.v2_4.CancellationFeesPolicy; import com.gekko_holding.webservice.v2_4.HotelAvailabilityResponse; import com.gekko_holding.webservice.v2_4.HotelResponse; import com.gekko_holding.webservice.v2_4.Offer; public class QuoteTeldarCancellationResponse extends TeldarParsers { protected static Logger logger = LoggerFactory.getLogger(QuoteTeldarCancellationResponse.class); @Override public void process(Exchange exchange) throws InvalidPayloadException, ParserConfigurationException, SAXException, IOException, XPathExpressionException { logger.trace("Invoking TELDAR QuoteTeldarCancellationResponse Processor......."); RequestForQuote requestForQuote = new RequestForQuote(); HotelAvailabilityResponse resp = exchange.getIn().getMandatoryBody(HotelAvailabilityResponse.class); requestForQuote = getHotelQuotes(resp.getAvailResponse(), exchange); exchange.getIn().setBody(requestForQuote, RequestForQuote.class); exchange.getIn().setHeader("HermesPartnerId", "teldar"); logger.info("End TELDAR QuoteTeldarCancellationResponse Processor......." + ObjectToXml.printXML(requestForQuote)); } private RequestForQuote getHotelQuotes(AvailabilityResponse teldarHotel, Exchange exchange) throws XPathExpressionException { QuoteTemplate quoteTemplate = exchange.getProperty("QuoteTemplate", QuoteTemplate.class); LocalDate gg = quoteTemplate.getTrip().getContent(HotelStay.class).get(0).getCheckin(); RequestForQuote requestForQuote = new RequestForQuote(); for (HotelResponse respHotel : teldarHotel.getHotelResponse()) { Currency currency = Currency.getInstance("EUR"); for (Offer offer : respHotel.getOffers().getOffer()) { List<TermOfSale> termsOfSales = new ArrayList<TermOfSale>(); if (offer.getCancellationFeesPolicy() != null && offer.getCancellationFeesPolicy().size() > 0) for (CancellationFeesPolicy cancellation : offer.getCancellationFeesPolicy()) { TermOfSale term = new TermOfSale("condition", "From " + cancellation.getFromDate() + " to " + cancellation.getToDate() + " price " + cancellation.getPrice() + cancellation.getCurrency()); try { Date date3 = new SimpleDateFormat("dd/MM/yyyy").parse(cancellation.getFromDate()); // logger.info("hh2hhhhh" +date3.toString()); java.util.Date d = new SimpleDateFormat("yyyy-MM-dd").parse(gg.toString()); // logger.info("psss" +d.toString()); Long difference = d.getTime() - date3.getTime(); float daysBetween1 = (difference / (86400000)); int q = (int) daysBetween1; term.addCharge(q, new Money(Double.parseDouble(cancellation.getPrice()), currency.getInstance(cancellation.getCurrency()))); } catch (NumberFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } // term.getCharges(). termsOfSales.add(term); } } } return requestForQuote; } }