Professional Documents
Culture Documents
services;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.xml.bind.JAXB;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import org.springframework.stereotype.Service;
import org.w3c.dom.Document;
import com.worldsoft.wega.domain.juniper.www.webservice._2007.HotelBooking;
import com.worldsoft.wega.domain.juniper.www.webservice._2007.HotelBookingResponse;
import com.worldsoft.wega.dto.BookRequest;
import com.worldsoft.wega.dto.BookedRoom;
import com.worldsoft.wega.dto.BookingResultModel;
import com.worldsoft.wega.dto.PersonModel;
@Service
public class HotelBookingService {
try {
Marshaller marshaller =
JAXBContext.newInstance(model.getClass()).createMarshaller();
marshaller.marshal(model, document);
soapMessage.getSOAPBody().addDocument(document);
SOAPPart sp = soapMessage.getSOAPPart();
SOAPEnvelope envelope = sp.getEnvelope();
SOAPHeader header= soapMessage.getSOAPHeader();
SOAPBody body = envelope.getBody();
envelope.removeNamespaceDeclaration("SOAP-ENV");
envelope.addNamespaceDeclaration("soapenv","http://schemas.xmlsoap.org/soap/
envelope/" );
header.detachNode();
envelope.setPrefix("soapenv");
body.setPrefix("soapenv");
TransformerFactory transformerFactory =
TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
Source sourceContent = soapMessage.getSOAPPart().getContent();
StreamResult requette = new StreamResult(request);
transformer.transform(sourceContent, requette);
httpsURLConnection.setRequestProperty("SOAPAction","http://www.juniper.es/
webservice/2007/HotelBooking");
httpsURLConnection.setRequestMethod("POST");
httpsURLConnection.setRequestProperty("Accept-Encoding","deflate");
DataOutputStream wr = new
DataOutputStream(httpsURLConnection.getOutputStream());
wr.writeBytes(xmlString);
wr.flush();
wr.close();
BufferedReader in = new BufferedReader(new
InputStreamReader(httpsURLConnection.getInputStream()));
String inputLine;
StringBuffer responce = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
responce.append(inputLine);
}
in.close();
String responceS=responce.toString();
responceS=responceS.replace("<soap:Envelope
xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><soap:Body>", "");
responceS=responceS.replace("</soap:Body></soap:Envelope>","");
httpsURLConnection.disconnect();
BufferedWriter bwr = new BufferedWriter(new FileWriter(response));
bwr.write(responce.toString());
bwr.flush();
bwr.close();
transformer = transformerFactory.newTransformer();
java.io.StringWriter swres = new java.io.StringWriter();
StreamResult result11 = new StreamResult(swres);
transformer.transform(sourceContent, result11);
res = (HotelBookingResponse)unmarshaller.unmarshal(reader);
BookingResultModel resultToSend = new BookingResultModel();
if(res.getBookingRS().getErrors() != null) {
resultToSend.setSuccess(false);
resultToSend.setError(res.getBookingRS().getErrors().getError().get(0).getText());
}else {
resultToSend.setSuccess(true);
resultToSend.setVoucherRef(res.getBookingRS().getReservations().getReservation().ge
t(0).getLocator());
resultToSend.setBookingId(res.getBookingRS().getReservations().getReservation().get
(0).getLocator());
resultToSend.setPnrNumber(res.getBookingRS().getReservations().getReservation().get
(0).getLocator());
resultToSend.setCheckIn(bookRequest.getHotel().getCheckIn());
resultToSend.setCheckOut(bookRequest.getHotel().getCheckOut());
resultToSend.setHotelName(bookRequest.getHotel().getName());
resultToSend.setHotelAdress(bookRequest.getHotel().getAdress());
resultToSend.setGds("JP");
switch
(res.getBookingRS().getReservations().getReservation().get(0).getStatus().getValue(
)) {
case "PAG":
resultToSend.setStatus("CNF");
resultToSend.setDt_voucher(new Date().toString());
break;
case "CON":
resultToSend.setStatus("CNF");
resultToSend.setDt_voucher(new Date().toString());
break;
case "PRE":
resultToSend.setStatus("PNDN");
break;
case "PDI":
resultToSend.setStatus("PNDN");
break;
default:
break;
}
firstbookedRoomToAdd.setRoomType((bookRequest.getHotel().getRooms().get(0).getName(
)));
firstbookedRoomToAdd.setMealType(bookRequest.getHotel().getRooms().get(0).getMeals(
));
firstbookedRoomToAdd.setNbAdult(bookRequest.getHotel().getRooms().get(0).getNbAdult
s());
firstbookedRoomToAdd.setNbChildren(bookRequest.getHotel().getRooms().get(0).getNbCh
ildren());
firstbookedRoomToAdd.setNbInfant(bookRequest.getHotel().getRooms().get(0).getNbInfa
nt());
if(bookRequest.getBookingModel().getRooms().get(0).getNbAdult() != 0 ||
bookRequest.getBookingModel().getRooms().get(0).getAdult().size() > 0
|| !
bookRequest.getBookingModel().getRooms().get(0).getAdult().isEmpty()) {
for(int i =
0;i<bookRequest.getBookingModel().getRooms().get(0).getAdult().size();i++) {
PersonModel adult = new
PersonModel(bookRequest.getBookingModel().getRooms().get(0).getAdult().get(i).getCi
vilite(),
bookRequest.getBookingModel().getRooms().get(0).getAdult().get(i).getFirstName(),
bookRequest.getBookingModel().getRooms().get(0).getAdult().get(i).getLastName(),
bookRequest.getBookingModel().getRooms().get(0).getAdult().get(i).getType(),
bookRequest.getBookingModel().getRooms().get(0).getAdult().get(i).getAge());
paxes.add(adult);
}
if(bookRequest.getBookingModel().getRooms().get(0).getNbChildren() != 0 ||
bookRequest.getBookingModel().getRooms().get(0).getChildren().size() > 0
|| !
bookRequest.getBookingModel().getRooms().get(0).getChildren().isEmpty()) {
for(int j =
0;j<bookRequest.getBookingModel().getRooms().get(0).getChildren().size();j++) {
PersonModel children = new
PersonModel(bookRequest.getBookingModel().getRooms().get(0).getChildren().get(j).ge
tCivilite(),
bookRequest.getBookingModel().getRooms().get(0).getChildren().get(j).getFirstName()
,
bookRequest.getBookingModel().getRooms().get(0).getChildren().get(j).getLastName(),
bookRequest.getBookingModel().getRooms().get(0).getChildren().get(j).getType(),
bookRequest.getBookingModel().getRooms().get(0).getChildren().get(j).getAge());
paxes.add(children);
}
}
firstbookedRoomToAdd.setPaxes(paxes);
bookedRooms.add(firstbookedRoomToAdd);
if
(bookRequest.getHotel().getRooms().get(0).getRoomsCombinations()!=null && !
bookRequest.getHotel().getRooms().get(0).getRoomsCombinations().isEmpty()) {
for (int i = 0; i <
bookRequest.getHotel().getRooms().get(0).getRoomsCombinations().size(); i++) {
BookedRoom roomToAdd = new BookedRoom();
roomToAdd.setRoomType((bookRequest.getHotel().getRooms().get(0).getRoomsCombination
s().get(i).getName()));
roomToAdd.setMealType(bookRequest.getHotel().getRooms().get(0).getRoomsCombinations
().get(i).getMeals());
roomToAdd.setNbAdult(bookRequest.getHotel().getRooms().get(0).getRoomsCombinations(
).get(i).getNbAdults());
roomToAdd.setNbChildren(
bookRequest.getHotel().getRooms().get(0).getRoomsCombinations().get(i).getNbChildre
n());
roomToAdd.setNbInfant(bookRequest.getHotel().getRooms().get(0).getRoomsCombinations
().get(i).getNbInfant());
ArrayList<PersonModel> paxesComb = new
ArrayList<>();
if(bookRequest.getBookingModel().getRooms().get(i+1).getNbAdult() != 0 ||
bookRequest.getBookingModel().getRooms().get(i+1).getAdult().size() > 0
|| !
bookRequest.getBookingModel().getRooms().get(i+1).getAdult().isEmpty()) {
for(int j =
0;j<bookRequest.getBookingModel().getRooms().get(i+1).getAdult().size();j++) {
PersonModel adult = new
PersonModel(bookRequest.getBookingModel().getRooms().get(i+1).getAdult().get(j).get
Civilite(),
bookRequest.getBookingModel().getRooms().get(i+1).getAdult().get(j).getFirstName(),
bookRequest.getBookingModel().getRooms().get(i+1).getAdult().get(j).getLastName(),
bookRequest.getBookingModel().getRooms().get(i+1).getAdult().get(j).getType(),
bookRequest.getBookingModel().getRooms().get(i+1).getAdult().get(j).getAge());
paxesComb.add(adult);
}
if(bookRequest.getBookingModel().getRooms().get(i+1).getNbChildren() != 0 ||
bookRequest.getBookingModel().getRooms().get(i+1).getChildren().size() > 0
|| !
bookRequest.getBookingModel().getRooms().get(i+1).getChildren().isEmpty()) {
for(int k =
0;k<bookRequest.getBookingModel().getRooms().get(i+1).getChildren().size();k++) {
PersonModel children = new
PersonModel(bookRequest.getBookingModel().getRooms().get(i+1).getChildren().get(k).
getCivilite(),
bookRequest.getBookingModel().getRooms().get(i+1).getChildren().get(k).getFirstName
(),
bookRequest.getBookingModel().getRooms().get(i+1).getChildren().get(k).getLastName(
),
bookRequest.getBookingModel().getRooms().get(i+1).getChildren().get(k).getType(),
bookRequest.getBookingModel().getRooms().get(i+1).getChildren().get(k).getAge());
paxesComb.add(children);
}
}
roomToAdd.setPaxes(paxesComb);
bookedRooms.add(roomToAdd);
}
resultToSend.setBookedRooms(bookedRooms);
}}
System.out.println("resultToSend==>"+resultToSend.toString());
return resultToSend;
} catch(Exception e) {
e.printStackTrace();
}
return null;
}