Back Up
Back Up
services;
import com.example.worldsoftbackend.dto.Search.searchRequest.SearchRequest;
import com.example.worldsoftbackend.dto.Search.searchResponse.SearchResult;
import com.example.worldsoftbackend.models.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.w3c.dom.Document;
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.SOAPMessage;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
public class HotelSearchService {
@Autowired
DeviseChangeService deviseChangeService;
@Autowired
CommissionCalculatorService commissionCalculatorService;
List<HotelAvailable> hotels;
try {
// Create SOAP Connection
// SOAPConnectionFactory soapConnectionFactory =
SOAPConnectionFactory.newInstance();
// SOAPConnection soapConnection =
soapConnectionFactory.createConnection();
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
Document document =
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Marshaller marshaller =
JAXBContext.newInstance(searchReq.getClass()).createMarshaller();
marshaller.marshal(searchReq, document);
TransformerFactory transformerFactory =
TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
Source sourceContent = soapMessage.getSOAPPart().getContent();
SimpleDateFormat format = new
SimpleDateFormat("yyyyMMddHHmmssS");
StringWriter sw1 = new StringWriter();
JAXB.marshal(searchReq, sw1);
xmlString = xmlString.replace("<filters>",
"<filters
xmlns:a=\"http://us.dotwconnect.com/xsd/atomicCondition\"
xmlns:c=\"http://us.dotwconnect.com/xsd/complexCondition\">");
xmlString = xmlString.replace("<?xml version=\"1.0\"
encoding=\"UTF-8\" standalone=\"yes\"?>", "");
// the problem dosen't appear when no=1
xmlString = xmlString.replace("<children no=\"0\"/>", "<children
no=\"0\"></children>");
xmlString = xmlString.replace("<a:condition>\n" + "
<operator>AND</operator>\n"
+ " </a:condition>",
"<operator>AND</operator>");
if (!withprice) {
int a = xmlString.indexOf("<fields>");
System.out.println("index a is : " + a);
int b = xmlString.indexOf("</fields>");
System.out.println("index b = " + b);
String fields = xmlString.substring(a, b + 9);
System.out.println("fields ====> " + fields);
xmlString = xmlString.replace(fields, "");
int c = xmlString.indexOf("</return>");
System.out.println("index of c : " + c);
if (!doc.exists()) {
doc.mkdir();
}
writer.write(xmlString);
writer.close();
URL url = new
URL("http://xmldev.dotwconnect.com/gatewayV4.dotw");
HttpURLConnection httpsURLConnection = (HttpURLConnection)
url.openConnection();
httpsURLConnection.setDoInput(true);
httpsURLConnection.setDoOutput(true);
httpsURLConnection.setRequestProperty("Content-Type",
"text/xml");
httpsURLConnection.setRequestProperty("Accept-Enconding",
"gzip");
httpsURLConnection.setRequestMethod("POST");
DataOutputStream wr = new
DataOutputStream(httpsURLConnection.getOutputStream());
wr.writeBytes(xmlString);
wr.flush();
wr.close();
String inputLine;
StringBuffer responce = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
responce.append(inputLine);
}
in.close();
httpsURLConnection.disconnect();
File folderRs = new File(System.getProperty("user.dir") +
File.separator + "HotelRS");
if (!folderRs.exists()) {
folderRs.mkdir();
}
File response = new File(System.getProperty("user.dir") +
File.separator + "HotelRS" + File.separator
+ format.format(new Date()) + "searchRS" + ".xml");
JAXBContext jc = JAXBContext.newInstance(rs.getClass());
Unmarshaller unmarshaller = jc.createUnmarshaller();
rs = unmarshaller.unmarshal(xsr, rs.getClass()).getValue();
return rs;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* here for price with commission
*
*/
try {
System.out.println("hey rs : " + rs.toString());
System.out.println("currency gds 222 : "
+
rsPrice.getHotels().getHotel().get(0).getRooms().getRoom().get(0).getRoomType().get
(0)
.getRateBases().getRateBasis(
).get(0).getRateType().getCurrencyid());
if
(rsPrice.getHotels().getHotel().get(0).getRooms().getRoom().get(0).getRoomType().ge
t(0)
.getRateBases().getRateBasis().get(0).get
RateType().getCurrencyid().equals("520"))
currencyGds = "USD";
System.out.println("devise tiers : " +
model.getCurrentDevise());
System.out.println("id entite : " +
model.getIdEntiteUser());
finalTxCHange =
deviseChangeService.getTxChangeFromTo(currencyGds,
model.getCurrentDevise(),
model.getIdEntiteUser(), BigDecimal.ONE);
System.out.println("txChange : " + finalTxCHange);
} catch (Exception e) {
finalTxCHange = new BigDecimal(1);
}
// GlobalCommisionRequest globalCommisionRequest = new
GlobalCommisionRequest();
// globalCommisionRequest.setAgenceComission(null);
// globalCommisionRequest.setFinalTxCHange(finalTxCHange);
// globalCommisionRequest.setGds(model.getGds());
//
globalCommisionRequest.setIdEntiteCible(model.getIdEntiteUser());
// globalCommisionRequest.setIdTiers(model.getIdTiers());
//
globalCommisionRequest.setIdUserTiers(model.getIdUserTiers());
// ----------------end----------------//
rs.getHotels().getHotel().forEach(hotelType -> {
rsPrice.getHotels().getHotel().stream().forEach(hotelWithPricePrice -> {
if
(hotelType.getHotelid().equals(hotelWithPricePrice.getHotelid())) {
farePrice.setCurrency(model.getCurrentDevise());
farePrice.setTotalFare(new
BigDecimal(hotelWithPricePrice.getRooms().getRoom().get(0)
.getRoomType().get(0).getRate
Bases().getRateBasis().get(0).getTotal()));
farePrice.setForRoomType(
hotelWithPricePrice.getRooms().getRoom().get(0).getRoomType().get(0).getName());
//
farePrice.setAgentMarkUp(result1.getCustomerCharge());
//
farePrice.setNetCharge(result1.getNetCharge());
//
farePrice.setGsaComm(result1.getGsa_comm());
hotelAvailable.setHotelId(hotelType.getHotelid());
hotelAvailable.setName(hotelType.getHotelName());
hotelAvailable.setAdress(hotelType.getFullAddress().getHotelStreetAddress() +
" ,"
+
hotelType.getFullAddress().getHotelZipCode() + " ,"
+
hotelType.getFullAddress().getHotelCountry() + " ,"
+
hotelType.getFullAddress().getHotelCity());
hotelAvailable.setDescription(hotelType.getDescription1().getLanguage() +
" ,"
+
hotelType.getDescription2().getLanguage());
String rating =
String.valueOf(hotelType.getRating());
String newRating = "";
//
// int firstDigit =
Integer.parseInt(rating.substring(0, 1));
// int restDigit =
Integer.parseInt(rating.substring(1, rating.length()));
//
// String newRating = firstDigit + "." +
restDigit;
// hotelAvailable.setRatings(new
BigDecimal(newRating));
switch (rating) {
case "559":
newRating = "1";
break;
case "560":
newRating = "2";
break;
case "561":
newRating = "3";
break;
case "562":
newRating = "4";
break;
case "563":
newRating = "5";
break;
case "55835":
newRating = "0";
break;
case "48055":
newRating = "10";
break;
default:
break;
}
if (newRating !=null)
hotelAvailable.setStars(new
BigDecimal(newRating));
hotelAvailable.setLattitude(String.valueOf(hotelType.getGeoPoint().getLat()));
hotelAvailable.setLongitude(String.valueOf(hotelType.getGeoPoint().getLng()));
images.add(hotelType.getImages().getHotelImages().getThumb());
hotelAvailable.setLogo(hotelType.getImages().getHotelImages().getThumb());
}
hotelType.getImages().getHotelImages().getImage().stream().forEach(img -> {
images.add(img.getUrl());
});
}
hotelAvailable.setPictures(images);
/**
* here for the amenitie, Leisure and
business
*/
// System.out.println("amenitie is !!!! "+
hotelType.getAmenitie().getLanguage().get(0).getAmenitieItem().get(0));
hotelAvailable.setCheckIn(model.getCheckIn());
hotelAvailable.setCheckOut(model.getCheckOut());
hotelAvailable.setSessionId(finalRs.getIp());
hotelAvailable.setVersion(finalRs.getVersion());
hotelAvailable.setCity(model.getCityCode());
hotelAvailable.setGds("DW");
hotelAvailable.setCodeDotw(model.getCodeDotw());
hotels.add(hotelAvailable);
}
});
});
}
responses.setHotels(result1);
return responses;
} catch (Exception e) {
System.err.println("Error occurred while sending SOAP Request to
Server ");
e.printStackTrace();
}
return null;
}
if (i == index) {