List of usage examples for org.dom4j Document getRootElement
Element getRootElement();
From source file:cn.buk.api.service.CtripHotelServiceImpl.java
License:LGPL
/** * ??//from w w w . j av a2 s . co m * @param cityId ? * @return ?? */ @Override public String searchHotel(int cityId) { if (cityId <= 0) return "ER#CITYID IS " + cityId; //headerAPI? Cache cache = getCache(); String cacheKey = ConfigData.OTA_HotelSearch_Request; net.sf.ehcache.Element cacheElement = cache.get(cacheKey); if (cacheElement != null) { Element headerElement = (Element) cacheElement.getValue(); int accessCount = Integer.parseInt(headerElement.attributeValue("AccessCount")); int currentCount = Integer.parseInt(headerElement.attributeValue("CurrentCount")) + 1; logger.info("AccessCount=" + headerElement.attributeValue("AccessCount") + ", CurrentCount=" + headerElement.attributeValue("CurrentCount") + ", ResetTime=" + headerElement.attributeValue("ResetTime")); if (currentCount >= accessCount) { try { logger.info("Sleep for one minute."); Thread.sleep(60000); } catch (InterruptedException ex) { logger.warn(Thread.currentThread().getName() + " is interrupted."); return "ER#Thread.sleep is interrupted."; } } } HotelRequestBody request = new HotelRequestBody(); request.createHotelRequestRQ(); request.getHotelRequestRQ().getCriteria().getCriterion().getHotelRef().setHotelCityCode(cityId); String xml; try { JAXBContext jc = JAXBContext.newInstance(HotelRequestBody.class); Marshaller m = jc.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); m.setProperty(Marshaller.JAXB_ENCODING, "utf-8"); m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); DocumentResult documentResult = new DocumentResult(); m.marshal(request, documentResult); org.dom4j.Document document = documentResult.getDocument(); org.dom4j.Element requestElement = document.getRootElement(); Element ele = requestElement.element("OTA_HotelSearchRQ"); ele.addNamespace("", "http://www.opentravel.org/OTA/2003/05"); org.dom4j.Document doc1 = DocumentHelper.createDocument(); org.dom4j.Element rootElement = createRequestHeaderElement(doc1, ConfigData.OTA_HotelSearch_Request); rootElement.add(requestElement); xml = doc1.asXML(); } catch (JAXBException ex) { logger.error(ex.getMessage()); return "ER"; } if (serviceStopped) return "ER#Service stopped."; String response = execApiRequest(xml, ConfigData.OTA_HotelSearch_Url, "requestXML"); //? SAXReader reader = new SAXReader(); Document document;// ?XML try { document = reader.read(new StringReader(response)); if (serviceStopped) return "ER#Service stopped."; response = processHotelSearchResponse(document); } catch (Exception ex) { logger.error(ex.getMessage()); return "ER"; } return response; }
From source file:cn.buk.api.service.CtripHotelServiceImpl.java
License:LGPL
private String processHotelSearchResponse(Document document) { if (document == null) return "ER#Document is null."; Element rootElement = document.getRootElement(); Element headerElement = rootElement.element("Header"); if (!headerElement.attribute("ResultCode").getValue().equalsIgnoreCase("Success")) { logger.error(document.asXML());//from w ww . ja va2s . c o m return "ER#ResultCode is not Success."; } //header? getCache().put(new net.sf.ehcache.Element(ConfigData.OTA_HotelSearch_Request, headerElement)); List myNodes = document.selectNodes("/Response/HotelResponse/*"); Element eleOtaHotelSearchRS = (Element) myNodes.get(0); XStream xs = createXStream(); xs.alias("Response", HotelSearchResponse.class); xs.processAnnotations(HotelSearchResponse.class); Date date0 = DateUtil.getCurDateTime(); String xml = eleOtaHotelSearchRS.asXML(); HotelSearchResponse response = (HotelSearchResponse) xs.fromXML(xml); int spanMilliSeconds = DateUtil.getPastTime(date0); logger.info("xml -> object: " + spanMilliSeconds + "ms."); int total = response.getHotelInfos().size(); if (total == 0) { //logger.info(xml); if (response.getSuccess() != null) { logger.info("There is no hotel."); return "OK#0 hotel"; } } // return response; String rs; int saveCount = 0; int count = 0; for (HotelInfo hotelInfo : response.getHotelInfos()) { if (this.serviceStopped) break; cn.buk.hotel.entity.HotelInfo hotelInfo1 = ConvertUtil.convertHotelInfo(hotelInfo); int retCode = hotelDao.createHotelInfo(hotelInfo1); if (retCode == 1 || retCode == 2) { saveCount++; } count++; if (count % 100 == 0) { logger.info("Progress: " + count + " / " + total); } } if (saveCount > 0) rs = "OK#" + saveCount + " be saved"; else rs = "ER"; return rs; }
From source file:cn.buk.api.service.CtripHotelServiceImpl.java
License:LGPL
/** * ?HotelRatePlanResponse// w w w. j ava2s .c om * @param document ?? * @return ?? */ private String processHotelRatePlanResponse(final Document document, final int periodId, final List<String> hotelCodes) { if (document == null) return "ER#Document is null."; Element rootElement = document.getRootElement(); Element headerElement = rootElement.element("Header"); if (!headerElement.attribute("ResultCode").getValue().equalsIgnoreCase("Success")) { //logger.error("ER#ResultCode is not Success."); logger.error(document.asXML()); return "ER#ResultCode is not Success."; } DocumentDto documentDto = new DocumentDto(); documentDto.setDocument(document); documentDto.setPeriodId(periodId); for (String hotelCode : hotelCodes) documentDto.getHotelCodes().add(hotelCode); try { logger.debug("Current ratePlanQueue\'s size: " + ratePlanQueue.size()); logger.debug("put hotelCodes\'s size is " + hotelCodes.size()); ratePlanQueue.put(documentDto); hotelRatePlanDaoExecutor.execute(new HotelRatePlanDaoThread()); } catch (InterruptedException e) { logger.warn(Thread.currentThread().getName() + " is interrupted."); return "ER#RatePlanQueue.put is interrupted."; } return "OK#Document has been added to Queue."; }
From source file:cn.buk.api.service.CtripHotelServiceImpl.java
License:LGPL
private String processHotelCacheChangeResponse(final Document document) { if (document == null) return "ER#Document is null."; Element rootElement = document.getRootElement(); Element headerElement = rootElement.element("Header"); if (!headerElement.attribute("ResultCode").getValue().equalsIgnoreCase("Success")) { logger.error(document.asXML());/* w w w .j a v a 2 s. c o m*/ return "ER#ResultCode is not Success."; } //header? getCache().put(new net.sf.ehcache.Element(ConfigData.OTA_HotelCacheChange_Request, headerElement)); DocumentDto documentDto = new DocumentDto(); documentDto.setDocument(document); try { hotelCacheChangeDaoExecutor.execute(new HotelCacheChangeDaoThread()); logger.debug("Current hotelCacheChangeQueue\'s size is " + hotelCacheChangeQueue.size()); hotelCacheChangeQueue.put(documentDto); } catch (InterruptedException e) { logger.warn(Thread.currentThread().getName() + " is interrupted."); return "ER#HotelCacheChangeQueue.put is interrupted."; } return "OK#HotelCacheChange document has been added into queue."; }
From source file:cn.buk.api.service.CtripHotelServiceImpl.java
License:LGPL
@Override public synchronized String searchHotelDetail(List<String> hotelCodes, boolean returnXml) { if (hotelCodes == null || hotelCodes.size() == 0) return "ER#hotelcodes is null"; //headerAPI?// ww w. j a va 2 s. co m net.sf.ehcache.Element cacheElement = getCache().get(ConfigData.OTA_HotelDetail_Request); if (cacheElement != null) { Element headerElement = (Element) cacheElement.getValue(); int accessCount = Integer.parseInt(headerElement.attributeValue("AccessCount")); int currentCount = Integer.parseInt(headerElement.attributeValue("CurrentCount")) + 1; logger.info(ConfigData.OTA_HotelDetail_Request + " AccessCount=" + headerElement.attributeValue("AccessCount") + ", CurrentCount=" + headerElement.attributeValue("CurrentCount") + ", ResetTime=" + headerElement.attributeValue("ResetTime")); if (currentCount >= accessCount) { try { logger.info("Sleep for one minute."); Thread.sleep(60000); } catch (InterruptedException ex) { logger.warn(Thread.currentThread().getName() + " is interrupted."); return "ER#SearchHotelDetail thread.sleep is interrupted."; } } } if (this.serviceStopped) return "ER#Service stopped."; HotelRequestBody request = new HotelRequestBody(); request.createHotelDetailRequest(); for (String hotelCode : hotelCodes) { if (this.serviceStopped) return "ER#Service stopped."; HotelDescriptiveInfo hotelDescriptiveInfo = new HotelDescriptiveInfo(); hotelDescriptiveInfo.setHotelCode(hotelCode); cn.buk.hotel.entity.HotelInfo hotelInfo = hotelDao.getHotelDetailInfoByHotelCode(hotelCode); if (hotelInfo != null) { //if (hotelInfo.getGuestRooms().size() == 0) { hotelDescriptiveInfo.setHotelInfoFacilityInfo(new HotelInfoFacilityInfo()); hotelDescriptiveInfo.getHotelInfoFacilityInfo().setSendGuestRooms(true); //} if (hotelInfo.getRefPoints().size() == 0) { hotelDescriptiveInfo.setHotelInfoAreaInfo(new HotelInfoAreaInfo()); hotelDescriptiveInfo.getHotelInfoAreaInfo().setSendAttractions(true); hotelDescriptiveInfo.getHotelInfoAreaInfo().setSendRecreations(true); } if (hotelInfo.getMedias().size() == 0) { hotelDescriptiveInfo.setHotelInfoMultimedia(new HotelInfoMultimedia()); hotelDescriptiveInfo.getHotelInfoMultimedia().setSendData(true); } } request.getHotelDetailRequest().getHotelDescriptiveInfos().add(hotelDescriptiveInfo); } String requestXml; try { JAXBContext jc = JAXBContext.newInstance(HotelRequestBody.class); Marshaller m = jc.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); m.setProperty(Marshaller.JAXB_ENCODING, "utf-8"); m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); DocumentResult documentResult = new DocumentResult(); m.marshal(request, documentResult); org.dom4j.Document document = documentResult.getDocument(); org.dom4j.Element requestElement = document.getRootElement(); Element ele = requestElement.element("OTA_HotelDescriptiveInfoRQ"); ele.addNamespace("", "http://www.opentravel.org/OTA/2003/05"); org.dom4j.Document doc1 = DocumentHelper.createDocument(); if (this.serviceStopped) return "ER#Service stopped."; org.dom4j.Element rootElement = createRequestHeaderElement(doc1, ConfigData.OTA_HotelDetail_Request); rootElement.add(requestElement); requestXml = doc1.asXML(); } catch (JAXBException e) { e.printStackTrace(); return "ER#OTA_exception"; } Date date0 = DateUtil.getCurDateTime(); logger.debug(ConfigData.OTA_HotelDetail_Request + ": begin"); logger.debug(requestXml); if (this.serviceStopped) return "ER#Service stopped."; String response = execApiRequest(requestXml, ConfigData.OTA_HotelDetail_Url, "requestXML"); logger.debug(response); int apiElapsedTime = DateUtil.getPastTime(date0); logger.debug(ConfigData.OTA_HotelDetail_Request + ": end, " + apiElapsedTime + "ms"); if (returnXml) return response; //? String rs; SAXReader reader = new SAXReader(); Document document;// ?XML try { document = reader.read(new StringReader(response)); Element headerElement = document.getRootElement().element("Header"); //header? getCache().put(new net.sf.ehcache.Element(ConfigData.OTA_HotelDetail_Request, headerElement)); if (!headerElement.attribute("ResultCode").getValue().equalsIgnoreCase("Success")) { logger.error(requestXml); logger.error(document.asXML()); return "ER#ResultCode is not Success."; } DocumentDto documentDto = new DocumentDto(); documentDto.setDocument(document); if (hotelDetailQueue.size() == MAX_HOTEL_DETAIL_QUEUE) { logger.warn("hotelDetailQueue is full, thread will be blocked here."); } hotelDetailQueue.put(documentDto); hotelDetailDaoExecutor.execute(new HotelDetailDaoThread()); rs = "OK#save to the queue."; } catch (InterruptedException ex) { return "ER#Interrupt occured."; } catch (Exception ex) { logger.error(ex.getMessage()); return "ER#searchHotelDetail"; } return rs; }
From source file:cn.buk.api.service.CtripHotelServiceImpl.java
License:LGPL
@Override public String searchHotelRatePlan(final String hotelCode, Date startDate, Date endDate, final boolean returnXml) { List<String> hotelCodes = new ArrayList<String>(); hotelCodes.add(hotelCode);//from w w w . java2s . c o m String response = execSearchHotelRatePlan(hotelCodes, startDate, endDate); if (returnXml) return response; //? String rs = "rs"; SAXReader reader = new SAXReader(); Document document;// ?XML try { document = reader.read(new StringReader(response)); } catch (DocumentException e) { logger.error(e.getMessage()); return "ER#xml->document"; } if (document == null) return "ER#Document is null."; Element rootElement = document.getRootElement(); Element headerElement = rootElement.element("Header"); if (!headerElement.attribute("ResultCode").getValue().equalsIgnoreCase("Success")) { //logger.error("ER#ResultCode is not Success."); logger.error(document.asXML()); return "ER#ResultCode is not Success."; } rs = processHotelRatePlanResponse(document, 0, hotelCodes); return rs; }
From source file:cn.buk.api.service.CtripHotelServiceImpl.java
License:LGPL
private synchronized String doSearchHotelRatePlan(String requestXml) { logger.debug("doSearchHotelRatePlan begin..." + Thread.currentThread().getName()); //headerAPI?/* w w w.j ava 2s . c o m*/ String cacheKey = ConfigData.OTA_HotelRatePlan_Request; net.sf.ehcache.Element cacheElement = getCache().get(cacheKey); if (cacheElement != null) { Element headerElement = (Element) cacheElement.getValue(); int accessCount = Integer.parseInt(headerElement.attributeValue("AccessCount")); int currentCount = Integer.parseInt(headerElement.attributeValue("CurrentCount")) + 1; logger.info(ConfigData.OTA_HotelRatePlan_Request + " AccessCount=" + headerElement.attributeValue("AccessCount") + ", CurrentCount=" + headerElement.attributeValue("CurrentCount") + ", ResetTime=" + headerElement.attributeValue("ResetTime")); if (currentCount >= accessCount) { try { logger.info("Sleep for one minute."); Thread.sleep(60000); } catch (InterruptedException ex) { logger.warn(Thread.currentThread().getName() + " is interrupted."); return "ER#DoSearchHotelRatePlan thread.sleep is interrupted."; } } } if (this.serviceStopped) return "ER#Service is stopped."; Date date0 = DateUtil.getCurDateTime(); String response = execApiRequest(requestXml, ConfigData.OTA_HotelRatePlan_Url, "requestXML"); int apiElapsedTime = DateUtil.getPastTime(date0); if (apiElapsedTime > 1000) logger.debug(ConfigData.OTA_HotelRatePlan_Request + " API: " + apiElapsedTime + "ms"); //? try { SAXReader reader = new SAXReader(); Document document = reader.read(new StringReader(response)); Element rootElement = document.getRootElement(); Element headerElement = rootElement.element("Header"); if (headerElement.attribute("ResultCode").getValue().equalsIgnoreCase("Success")) { //header? logger.debug("put headerElement to cache by key " + ConfigData.OTA_HotelRatePlan_Request); getCache().put(new net.sf.ehcache.Element(ConfigData.OTA_HotelRatePlan_Request, headerElement)); } else { logger.error(response); logger.error("ResultCode is not Success."); } } catch (Exception e) { logger.error(e.getMessage()); } logger.debug("doSearchHotelRatePlan end..." + Thread.currentThread().getName()); return response; }
From source file:cn.buk.api.service.CtripHotelServiceImpl.java
License:LGPL
private String createXml4HotelRequestBody(HotelRequestBody request, String requestType) throws JAXBException { JAXBContext jc = JAXBContext.newInstance(HotelRequestBody.class); Marshaller m = jc.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); m.setProperty(Marshaller.JAXB_ENCODING, "utf-8"); m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); DocumentResult documentResult = new DocumentResult(); m.marshal(request, documentResult);//from w ww . j av a 2 s . c om org.dom4j.Document document = documentResult.getDocument(); org.dom4j.Element requestElement = document.getRootElement(); org.dom4j.Document doc1 = DocumentHelper.createDocument(); org.dom4j.Element rootElement = createRequestHeaderElement(doc1, requestType); rootElement.add(requestElement); return doc1.asXML(); }
From source file:cn.com.sunjiesh.wechat.helper.WechatMessageConvertDocumentHelper.java
/** * ???XML/*from w ww. j a v a 2 s .c o m*/ * * @param messageResponse ? * @return XML */ public static Document textMessageResponseToDocument(WechatReceiveReplayTextMessageResponse messageResponse) { final String toUserName = messageResponse.getToUserName(); final String fromUserName = messageResponse.getFromUserName(); final String msgType = messageResponse.getMsgType(); Document respDoc = initRespDoc(toUserName, fromUserName, msgType); Element contentEle = respDoc.getRootElement().addElement("Content"); contentEle.setText(messageResponse.getContent()); return respDoc; }
From source file:cn.com.sunjiesh.wechat.helper.WechatMessageConvertDocumentHelper.java
/** * ??XML// w ww. jav a 2 s.c o m * @param messageResponse * @return */ public static Document imageMessageResponseToDocumnet(WechatReceiveReplayImageMessageResponse messageResponse) { final String toUserName = messageResponse.getToUserName(); final String fromUserName = messageResponse.getFromUserName(); final String msgType = messageResponse.getMsgType(); Document respDoc = initRespDoc(toUserName, fromUserName, msgType); Element imageEle = respDoc.getRootElement().addElement("Image"); Element mediaIdEle = imageEle.addElement("MediaId"); mediaIdEle.setText(messageResponse.getMediaId()); return respDoc; }