Java tutorial
/** * */ package org.tomstools.web.service; import java.sql.SQLException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.solr.client.solrj.SolrQuery.ORDER; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import org.tomstools.analyzer.AnalyzeAssistor; import org.tomstools.common.MD5; import org.tomstools.common.parse.TemplateParser; import org.tomstools.web.crawler.PageFetcher; import org.tomstools.web.model.User; import org.tomstools.web.persistence.BusinessSettingMapper; import org.tomstools.web.persistence.SiteMapper; import org.tomstools.web.persistence.SolrMapper; import org.tomstools.web.solr.SolrTools; /** * @author Administrator * */ @Service("solrService") public class SolrService { private static final Log LOG = LogFactory.getLog(SolrService.class); public static final long STAT_TIME_DEFAULT = 15 * 24 * 3600 * 1000; // 15 private static final String CONFIG_SOLR_URL = "SOLR_URL"; @Autowired private SolrMapper solrMapper; @Autowired private BusinessSettingMapper businessSettingMapper; @Autowired private SiteMapper siteMapper; @Autowired private UserService userService; @Autowired private MailService mailService; @Autowired private AnalyzeAssistor analyzer; public SolrService() { } // public int statWords() throws Exception { // SolrTools solrTool = new SolrTools(userService.getConfig(-1, // CONFIG_SOLR_URL)); // int count = 0; // // 1???? // List<Map<String, Object>> words = // businessSettingMapper.selectWordsList(); // for (Map<String, Object> word : words) { // Integer typeId = (Integer) word.get("TYPE_ID"); // if (null == typeId) { // continue; // } // String templateZM = (String) word.get("TEMPLATE_ZM"); // String templateFM = (String) word.get("TEMPLATE_FM"); // String templateZM_E = (String) word.get("TEMPLATE_ZM_E"); // String templateFM_E = (String) word.get("TEMPLATE_FM_E"); // long countZM = 0; // long countFM = 0; // long countZM_E = 0; // long countFM_E = 0; // // ? // Date lastStatTime = solrMapper.selectLastStatTime(typeId); // Date beginTime = null; // Date endTime = new Date(); // if (null != lastStatTime) { // beginTime = new Date(lastStatTime.getTime()); // } else { // beginTime = new Date(endTime.getTime() - STAT_TIME_DEFAULT); // } // // ??? // if (!StringUtils.isEmpty(templateZM)) { // countZM = solrTool.count("text:" + templateZM, beginTime, endTime); // } // // ??? // if (!StringUtils.isEmpty(templateFM)) { // countFM = solrTool.count("text:" + templateFM, beginTime, endTime); // } // // // ??? // if (!StringUtils.isEmpty(templateZM_E)) { // countZM_E = solrTool.count("text:" + templateZM_E, beginTime, endTime); // } // // ??? // if (!StringUtils.isEmpty(templateFM_E)) { // countFM_E = solrTool.count("text:" + templateFM_E, beginTime, endTime); // } // // ? // if (0 != countZM || 0 != countFM) { // solrMapper.saveStat(typeId, countZM, countFM, countZM_E, countFM_E, // endTime); // ++count; // } // } // // return count; // } public int statWordsWithHost() throws Exception { SolrTools solrTool = new SolrTools(userService.getConfig(-1, CONFIG_SOLR_URL)); int count = 0; // 1???? List<Map<String, Object>> words = businessSettingMapper.selectWordsList(); if (null == words || 0 == words.size()) { return count; } List<Map<String, Object>> siteInfos = siteMapper.selectSiteList(); if (null == siteInfos || 0 == siteInfos.size()) { return count; } Map<String, Map<String, Object>> sites = new HashMap<String, Map<String, Object>>(); Map<String, Object> o = new HashMap<String, Object>(); o.put("SITE_ID", -1); sites.put("-1", o); for (Map<String, Object> siteInfo : siteInfos) { o = new HashMap<String, Object>(); o.put("SITE_ID", Integer.parseInt(String.valueOf(siteInfo.get("SITE_ID")))); o.put("LANG", siteInfo.get("LANG")); sites.put(String.valueOf(siteInfo.get("SITE_HOST")), o); } Date endTime = new Date(); for (Map<String, Object> word : words) { Integer typeId = (Integer) word.get("TYPE_ID"); if (null == typeId) { continue; } String templateZM = (String) word.get("TEMPLATE_ZM"); String templateFM = (String) word.get("TEMPLATE_FM"); String templateZM_E = (String) word.get("TEMPLATE_ZM_E"); String templateFM_E = (String) word.get("TEMPLATE_FM_E"); // ? Date lastStatTime = siteMapper.selectLastStatTime(typeId); Date beginTime = null; if (null != lastStatTime) { beginTime = lastStatTime; } else { beginTime = new Date(endTime.getTime() - STAT_TIME_DEFAULT); } try { // ??? if (!StringUtils.isEmpty(templateZM)) { count += getSiteCount(typeId, "ZM", solrTool, sites, templateZM, beginTime, endTime); } // ??? if (!StringUtils.isEmpty(templateFM)) { count += getSiteCount(typeId, "FM", solrTool, sites, templateFM, beginTime, endTime); } // ??? if (!StringUtils.isEmpty(templateZM_E)) { count += getSiteCount(typeId, "ZM_E", solrTool, sites, templateZM_E, beginTime, endTime); } // ??? if (!StringUtils.isEmpty(templateFM_E)) { count += getSiteCount(typeId, "FM_E", solrTool, sites, templateFM_E, beginTime, endTime); } } catch (Exception e) { LOG.warn(e.getMessage(), e); } } if (0 < count) { // siteMapper.deleteStat(); // siteMapper.saveStat(new java.sql.Date(endTime.getTime())); } return count; } // public int statWordsWithHost_bak() throws Exception { // SolrTools solrTool = new SolrTools(userService.getConfig(-1, CONFIG_SOLR_URL)); // int count = 0; // // 1???? // List<Map<String, Object>> words = businessSettingMapper.selectWordsList(); // if (null == words || 0 == words.size()) { // return count; // } // List<Map<String, Object>> siteInfos = siteMapper.selectSiteList(); // if (null == siteInfos || 0 == siteInfos.size()) { // return count; // } // Map<String, Integer> sites = new HashMap<String, Integer>(); // sites.put("-1", -1); // for (Map<String, Object> siteInfo : siteInfos) { // sites.put(String.valueOf(siteInfo.get("SITE_HOST")), // Integer.parseInt(String.valueOf(siteInfo.get("SITE_ID")))); // } // Date endTime = new Date(); // for (Map<String, Object> word : words) { // Integer typeId = (Integer) word.get("TYPE_ID"); // if (null == typeId) { // continue; // } // String templateZM = (String) word.get("TEMPLATE_ZM"); // String templateFM = (String) word.get("TEMPLATE_FM"); // String templateZM_E = (String) word.get("TEMPLATE_ZM_E"); // String templateFM_E = (String) word.get("TEMPLATE_FM_E"); // // ? // Date lastStatTime = siteMapper.selectLastStatTime(typeId); // Date beginTime = null; // if (null != lastStatTime) { // beginTime = lastStatTime; // } else { // beginTime = new Date(endTime.getTime() - STAT_TIME_DEFAULT); // } // Map<Integer, Long> siteZM = new HashMap<Integer, Long>(); // Map<Integer, Long> siteFM = new HashMap<Integer, Long>(); // Map<Integer, Long> siteZM_E = new HashMap<Integer, Long>(); // Map<Integer, Long> siteFM_E = new HashMap<Integer, Long>(); // // ??? // if (!StringUtils.isEmpty(templateZM)) { // getSiteCount(typeId, "ZM", solrTool, sites, templateZM, beginTime, endTime, siteZM); // // } // // ??? // if (!StringUtils.isEmpty(templateFM)) { // getSiteCount(typeId, "FM", solrTool, sites, templateFM, beginTime, endTime, siteFM); // } // // // ??? // if (!StringUtils.isEmpty(templateZM_E)) { // getSiteCount(typeId, "ZM_E", solrTool, sites, templateZM_E, beginTime, endTime, siteZM_E); // } // // ??? // if (!StringUtils.isEmpty(templateFM_E)) { // getSiteCount(typeId, "FM_E", solrTool, sites, templateFM_E, beginTime, endTime, siteFM_E); // } // // // ??? // for (Entry<String, Integer> entry : sites.entrySet()) { // Long sizeZM = siteZM.get(entry.getValue()); // Long sizeFM = siteFM.get(entry.getValue()); // Long sizeZM_E = siteZM_E.get(entry.getValue()); // Long sizeFM_E = siteFM_E.get(entry.getValue()); // Integer siteId = entry.getValue(); // if (null != siteId) { // sizeZM = null != sizeZM ? sizeZM : 0; // sizeFM = null != sizeFM ? sizeFM : 0; // sizeZM_E = null != sizeZM_E ? sizeZM_E : 0; // sizeFM_E = null != sizeFM_E ? sizeFM_E : 0; // if (0 != sizeZM || 0 != sizeFM || 0 != sizeZM_E || 0 != sizeFM_E) { // // ? // siteMapper.saveStat(typeId, siteId, sizeZM, sizeFM, sizeZM_E, sizeFM_E, endTime); // ++count; // } // } // } // } // // return count; // } /** * ?? * * @param startTime * * @param endTime * ? * @param typeId * ???null?? * @return */ public List<Map<String, Object>> statWords(Date startTime, Date endTime, Integer typeId) { return siteMapper.selectStats(new java.sql.Date(startTime.getTime()), new java.sql.Date(endTime.getTime()), typeId); } /** * ????? * * @param startTime * * @param endTime * ? * @param queryWord * ? * @return * @throws Exception */ public List<Map<String, Object>> statWordsWithWordCount(Date startTime, Date endTime, String queryWord) throws Exception { if (StringUtils.isEmpty(queryWord)) { return statWordsCount(startTime, endTime, null); } List<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); SolrTools solrTool = new SolrTools(userService.getConfig(-1, CONFIG_SOLR_URL)); // 1???? List<Map<String, Object>> words = businessSettingMapper.selectWordsList(); for (Map<String, Object> word : words) { Integer typeId = (Integer) word.get("TYPE_ID"); if (null == typeId) { continue; } String templateZM = (String) word.get("TEMPLATE_ZM"); String templateFM = (String) word.get("TEMPLATE_FM"); String templateZM_E = (String) word.get("TEMPLATE_ZM_E"); String templateFM_E = (String) word.get("TEMPLATE_FM_E"); long countZM = 0; long countFM = 0; long countZM_E = 0; long countFM_E = 0; String format = "text:%s"; if (!StringUtils.isEmpty(queryWord)) { format = "text: " + queryWord + " AND (%s)"; } // ??? if (!StringUtils.isEmpty(templateZM)) { countZM = solrTool.count(String.format(format, templateZM), startTime, endTime); } // ??? if (!StringUtils.isEmpty(templateFM)) { countFM = solrTool.count(String.format(format, templateFM), startTime, endTime); } // ??? if (!StringUtils.isEmpty(templateZM_E)) { countZM_E = solrTool.count(String.format(format, templateZM_E), startTime, endTime); } // ??? if (!StringUtils.isEmpty(templateFM_E)) { countFM_E = solrTool.count(String.format(format, templateFM_E), startTime, endTime); } // ? if (0 != countZM || 0 != countFM) { Map<String, Object> obj = new HashMap<String, Object>(); obj.put("TYPE_ID", typeId); obj.put("TYPE_NAME", word.get("TYPE_NAME")); obj.put("SIZE_ZM", countZM); obj.put("SIZE_FM", countFM); obj.put("SIZE_ZM_E", countZM_E); obj.put("SIZE_FM_E", countFM_E); result.add(obj); } } return result; } //XXX ??? private long getSiteCount(Integer typeId, String templateType, SolrTools solrTool, Map<String, Map<String, Object>> sites, String template, Date beginTime, Date endTime) throws Exception { if (StringUtils.isEmpty(template)) { return 0; } long total = 0; long saveCount = 0; int start = 0; int size = 1000; MD5 encoder = new MD5(); while (true) { QueryResponse resp = solrTool.query("text:" + template, "host,title,url,tstamp,content", beginTime, endTime, null, start, size); SolrDocumentList datas = resp.getResults(); if (null != datas) {// ?? for (SolrDocument doc : datas) { total++; String host = String.valueOf(doc.getFieldValue("host")); String url = String.valueOf(doc.getFieldValue("url")); String content = String.valueOf(doc.getFieldValue("content")); // url?/?? if (StringUtils.isEmpty(url) || url.endsWith("/") || url.endsWith("/index.html") || url.endsWith("/index.htm") || url.endsWith("/index.php") || url.endsWith("/index.jsp") || url.endsWith("/index.asp")) { continue; } // host? Map<String, Object> siteInfo = getSiteIdByHost(sites, host); // ? if (null == siteInfo) { continue; } int siteId = Integer.parseInt(String.valueOf(siteInfo.get("SITE_ID"))); if (-1 == siteId) { continue; } // ?? // url??? String urlEncode = new String(encoder.encrypt(url.getBytes())); String flag = siteMapper.checkUrl(urlEncode); if (StringUtils.isEmpty(flag)) { saveCount++; Date dt = (Date) doc.getFieldValue("tstamp"); // ??????? Date publishTime = getDate(content); if (null == publishTime || publishTime.after(dt)) { publishTime = dt; } String source = null; String author = null; String editor = null; if ("ZH".equals(siteInfo.get("LANG"))) { source = getSource(content); author = getAuthor(content); editor = getEditor(content); } else { source = getSourceE(content); author = getAuthorE(content); editor = getEditorE(content); } if (!StringUtils.isEmpty(source) && 128 < source.length()) { source = source.substring(0, 128); } if (!StringUtils.isEmpty(author) && 128 < author.length()) { author = author.substring(0, 128); } if (!StringUtils.isEmpty(editor) && 128 < editor.length()) { editor = editor.substring(0, 128); } try { siteMapper.saveDetail(typeId, templateType, siteId, String.valueOf(doc.getFieldValue("title")), url, new java.sql.Date(dt.getTime()), source, author, editor, new java.sql.Date(publishTime.getTime()), urlEncode); } catch (SQLException e) { LOG.warn(e.getMessage(), e); } } } if (size == datas.size()) { start += size; continue; } } break; } LOG.info("typeId:" + typeId + ", templateType:" + templateType + ", total:" + total + ", saveCount:" + saveCount); return saveCount; } // private void getSiteCount_bak(Integer typeId, String templateType, SolrTools solrTool, Map<String, Integer> sites, // String template, Date beginTime, Date endTime, Map<Integer, Long> siteCount) throws Exception { // if (StringUtils.isEmpty(template)) { // return; // } // long total = 0; // long saveCount = 0; // int start = 0; // int size = 1000; // MD5 encoder = new MD5(); // while (true) { // QueryResponse resp = solrTool.query("text:" + template, "host,title,url,tstamp,content", beginTime, endTime, null, // start, size); // SolrDocumentList datas = resp.getResults(); // if (null != datas) {// ?? // for (SolrDocument doc : datas) { // total++; // String host = String.valueOf(doc.getFieldValue("host")); // String url = String.valueOf(doc.getFieldValue("url")); // String content = String.valueOf(doc.getFieldValue("content")); // // url?/?? // if (StringUtils.isEmpty(url) || url.endsWith("/") // || url.endsWith("/index.html")|| url.endsWith("/index.htm") // || url.endsWith("/index.php") || url.endsWith("/index.jsp") // || url.endsWith("/index.asp")){ // continue; // } // // host? // int siteId = getSiteIdByHost(sites, host); // // // ?? // // url??? // String flag = siteMapper.checkUrl(new String(encoder.encrypt(url.getBytes()))); // if (StringUtils.isEmpty(flag)) { // saveCount++; // Date dt = (Date) doc.getFieldValue("tstamp"); // // ??????? // Date publishTime = getDate(content); // if (null == publishTime || publishTime.after(dt)){ // publishTime = dt; // } // siteMapper.saveDetail(typeId, templateType, siteId, String.valueOf(doc.getFieldValue("title")), // url, dt,getSource(content),getSource(content),getEditor(content), // publishTime,new String(encoder.encrypt(url.getBytes()))); // // // Long count = siteCount.get(siteId); // if (null != count) { // siteCount.put(siteId, count + 1); // } else { // siteCount.put(siteId, 1l); // } // } // } // if (size == datas.size()) { // start += size; // continue; // } // } // break; // } // // LOG.info("typeId:" + typeId + ", templateType:" + templateType + ", total:" + total + ", saveCount:" + saveCount); // } private static final Pattern PATTERN_SOURCE = Pattern.compile("(??)[:]\\s*(\\S+)"); private static final Pattern PATTERN_AUTHOR = Pattern.compile("()[:]\\s*([0-9a-zA-Z\u4e00-\u9fa5]+)"); private static final Pattern PATTERN_EDITOR = Pattern .compile("(|)[:]\\s*([0-9a-zA-Z\u4e00-\u9fa5]+)"); private static final Pattern PATTERN_SOURCE_E = Pattern.compile("(??)[:]\\s*(\\S+)"); private static final Pattern PATTERN_AUTHOR_E = Pattern.compile("\\s(By)(( [A-Z][0-9a-z]+)+)"); private static final Pattern PATTERN_EDITOR_E = Pattern .compile("(|)[:]\\s*([0-9a-zA-Z\u4e00-\u9fa5]+)"); // private static final Pattern PATTERN_SOURCE = Pattern.compile("??[:]\\s{0,1}(\\S*)\\s"); // private static final Pattern PATTERN_AUTHOR = Pattern.compile("[:]\\s{0,1}([0-9a-zA-Z\u4e00-\u9fa5]*)\\s"); // private static final Pattern PATTERN_EDITOR = Pattern.compile("(|)[:]\\s{0,1}([0-9a-zA-Z\u4e00-\u9fa5]*)\\s"); private static final Pattern[] PATTERN_DATES = { Pattern.compile("(\\d{4}/\\d{1,2}/\\d{1,2})"), Pattern.compile("(\\d{4}-\\d{1,2}-\\d{1,2})"), Pattern.compile("(\\d{4}\\d{1,2}\\d{1,2})"), Pattern.compile("(\\d{1,2}\\d{1,2}, \\d{4})"), Pattern.compile("(\\d{1,2}\\s+(Dec|Nov|Oct|Sep|Aug|Jul|Jun|May|Apr|Mar|Feb|Jan)\\s+\\d{4})"), Pattern.compile( "(\\d{1,2}\\s+(December|November|October|September|August|July|June|May|April|March|February|January)\\s+\\d{4})"), Pattern.compile( "((December|November|October|September|August|July|June|May|April|March|February|January)\\s+\\d{1,2},\\s+\\d{4})"), Pattern.compile("((Dec|Nov|Oct|Sep|Aug|Jul|Jun|May|Apr|Mar|Feb|Jan)\\.\\s+\\d{1,2},\\s+\\d{4})") }; public static final SimpleDateFormat[] DATE_FORMATS = { new SimpleDateFormat("yyyy/MM/dd"), new SimpleDateFormat("yyyy-MM-dd"), new SimpleDateFormat("yyyyMMdd"), new SimpleDateFormat("MMdd, yyyy"), new SimpleDateFormat("d MMM yyyy", new Locale("en")), new SimpleDateFormat("d MMMM yyyy", new Locale("en")), new SimpleDateFormat("MMMM d, yyyy", new Locale("en")), new SimpleDateFormat("MMM. d, yyyy", new Locale("en")), }; static final String getSource(String content) { Matcher m = PATTERN_SOURCE.matcher(content); if (m.find()) { return m.group(2); } else { return null; } } static final String getSourceE(String content) { Matcher m = PATTERN_SOURCE_E.matcher(content); if (m.find()) { return m.group(2); } else { return null; } } static final String getAuthor(String content) { Matcher m = PATTERN_AUTHOR.matcher(content); if (m.find()) { return m.group(2); } else { return null; } } static final String getAuthorE(String content) { Matcher m = PATTERN_AUTHOR_E.matcher(content); if (m.find()) { return m.group(2); } else { return null; } } static final String getEditor(String content) { Matcher m = PATTERN_EDITOR.matcher(content); if (m.find()) { return m.group(2); } else { return null; } } static final String getEditorE(String content) { Matcher m = PATTERN_EDITOR_E.matcher(content); if (m.find()) { return m.group(2); } else { return null; } } static final Date getDate(String content) { int s = Integer.MAX_VALUE; Date ret = null; for (int i = 0; i < PATTERN_DATES.length; i++) { Matcher m = PATTERN_DATES[i].matcher(content); if (m.find()) { if (m.start() < s) { s = m.start(); try { ret = DATE_FORMATS[i].parse(m.group(1)); } catch (ParseException e) { LOG.error(e.getMessage()); } } } } return ret; } private static Map<String, Object> getSiteIdByHost(Map<String, Map<String, Object>> sites, String host) { while (true) { if (sites.containsKey(host)) { Map<String, Object> info = sites.get(host); if (null != info) { return info; } else { return null; } } int index = host.indexOf("."); if (index < 0 || host.length() == 1) { break; } host = host.substring(index + 1); } return null; } //private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * ???<br> * typeIdnull???? * * @param startTime * * @param endTime * ? * @param typeId * ??? * @return ?? */ public List<Map<String, Object>> statWordsCount(Date startTime, Date endTime, Integer typeId) { //LOG.info("startTime:"+DATE_FORMAT.format(startTime) + " endTime: " + DATE_FORMAT.format(endTime)); return siteMapper.selectStatsCount(new java.sql.Date(startTime.getTime()), new java.sql.Date(endTime.getTime()), typeId); } /** ? */ public List<Map<String, Object>> selectLanguage() { return solrMapper.selectLanguage(); } /** ? */ public List<Map<String, Object>> selectCountry() { return solrMapper.selectCountry(); } public List<Map<String, Object>> siteTop(Date startTime, Date endTime, Integer typeId, int topNum) { return siteMapper.selectSiteTop(new java.sql.Date(startTime.getTime()), new java.sql.Date(endTime.getTime()), typeId, topNum); } public List<Map<String, Object>> selectWordsTop(Date startTime, Date endTime, int topNum) { return siteMapper.selectWordsTop(new java.sql.Date(startTime.getTime()), new java.sql.Date(endTime.getTime()), topNum); } public List<Map<String, Object>> selectHotwordTop(Date startTime, Date endTime, int topNum, String flag) { return siteMapper.selectHotwordTop(new java.sql.Date(startTime.getTime()), new java.sql.Date(endTime.getTime()), topNum, flag); } public List<Map<String, Object>> statMediaCount(Date startTime, Date endTime, Integer typeId) { return siteMapper.selectMediaCount(new java.sql.Date(startTime.getTime()), new java.sql.Date(endTime.getTime()), typeId); } public List<Map<String, Object>> statMedia(Date startTime, Date endTime, Integer typeId) { return siteMapper.selectMedia(new java.sql.Date(startTime.getTime()), new java.sql.Date(endTime.getTime()), typeId); } public List<Map<String, Object>> statWordsCountAll(Date startTime, Date endTime, Integer typeId) { return siteMapper.selectStatsCountAll(new java.sql.Date(startTime.getTime()), new java.sql.Date(endTime.getTime()), typeId); } /** * ?? * * @param start * ?0 * @param rows * ? * @return */ public List<Map<String, Object>> query(Integer typeId, Integer start, Integer rows) { start = null != start ? start : 0; rows = null != rows ? rows : 10; // {total: 100,rows:[]} return siteMapper.selectDetail(typeId, start, rows); } // XXX ?? publish_time public List<Map<String, Object>> queryFromSolr(Integer start, Integer rows) { start = null != start ? start : 0; rows = null != rows ? rows : 10; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); List<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); SolrTools solrTool = new SolrTools(userService.getConfig(-1, CONFIG_SOLR_URL)); try { QueryResponse resp = solrTool.querySortByTime(null, "title,url,tstamp", null, null, ORDER.desc, start, rows); SolrDocumentList docs = resp.getResults(); for (SolrDocument doc : docs) { HashMap<String, Object> row = new HashMap<String, Object>(); result.add(row); row.put("title", doc.getFieldValue("title")); row.put("url", doc.getFieldValue("url")); Date tstamp = (Date) doc.getFieldValue("tstamp"); row.put("tstamp", sdf.format(tstamp)); } } catch (Exception e) { LOG.error(e.getMessage(), e); } // {total: 100,rows:[]} return result; } /** * ??????? * * @param start * * @param end * ? * @param langId * ? * @param countryId * ? * @param siteId * @param siteTypeId * @return */ public List<Map<String, Object>> statWordsCountQuery(Date start, Date end, Integer langId, Integer countryId, Integer siteTypeId, Integer siteId) { return siteMapper.statWordsCountQuery(new java.sql.Date(start.getTime()), new java.sql.Date(end.getTime()), langId, countryId, siteTypeId, siteId); } public List<Map<String, Object>> statWordsQueryDetail(Date startTime, Date endTime, Integer langId, Integer countryId, Integer siteTypeId, Integer siteId, Integer wordsId, Integer start, Integer rows) { start = null != start ? start : 0; rows = null != rows ? rows : 10; return siteMapper.statWordsQueryDetail(new java.sql.Date(startTime.getTime()), new java.sql.Date(endTime.getTime()), langId, countryId, siteTypeId, siteId, wordsId, start, rows); } public int countWordsQueryDetail(Date startTime, Date endTime, Integer langId, Integer countryId, Integer siteTypeId, Integer siteId, Integer wordsId) { return siteMapper.countWordsQueryDetail(new java.sql.Date(startTime.getTime()), new java.sql.Date(endTime.getTime()), langId, countryId, siteTypeId, siteId, wordsId); } /** * ??? * * @param isValid * ?1 0 null * @return */ public List<Map<String, Object>> selectSiteType(String isValid) { return solrMapper.selectSiteType(isValid); } public List<Map<String, Object>> selectSite(Integer siteTypeId, String isValid) { return solrMapper.selectSite(siteTypeId, isValid); } /** */ public int alert() { Calendar endTime = Calendar.getInstance(); Calendar startTime = Calendar.getInstance(); startTime.set(Calendar.DAY_OF_MONTH, 0); startTime.set(Calendar.HOUR_OF_DAY, 0); startTime.set(Calendar.MINUTE, 0); startTime.set(Calendar.SECOND, 0); List<Map<String, Object>> statCounts = siteMapper.selectStatsCount( new java.sql.Date(startTime.getTimeInMillis()), new java.sql.Date(endTime.getTimeInMillis()), null); if (null == statCounts || statCounts.isEmpty()) { return 0; } Map<String, Integer> counts = new HashMap<String, Integer>(); for (Map<String, Object> map : statCounts) { counts.put(String.valueOf(map.get("TYPE_ID")), Integer.parseInt(String.valueOf(map.get("SIZE_FM"))) + Integer.parseInt(String.valueOf(map.get("SIZE_FM_E")))); } // ?? List<Map<String, Object>> alertList = businessSettingMapper.selectAlertList(); // ??? int count = 0; for (Map<String, Object> alertInfo : alertList) { String metrics = String.valueOf(alertInfo.get("METRICS")); if (!StringUtils.isEmpty(metrics)) { String[] typeIds = metrics.split(Pattern.quote("$$$"))[0].split(","); int value = 0; for (int i = 0; i < typeIds.length; i++) { if (counts.containsKey(typeIds[i])) { value += counts.get(typeIds[i]); } } // ? int threhold = Integer.valueOf(String.valueOf(alertInfo.get("ALERT_VALUE"))); if (value >= threhold) { // ?? solrMapper.saveAlertLog(Integer.valueOf(String.valueOf(alertInfo.get("ALERT_ID"))), threhold, value); count++; } } } return count; } public List<Map<String, Object>> selectAlertLog(Date startTime, Date endTime, String notifyStatus, String alertType, int start, Integer rows) { rows = null == rows ? Integer.MAX_VALUE : rows; return solrMapper.selectAlertLog(startTime, endTime, notifyStatus, alertType, start, rows); } public int countAlertLog(Date startTime, Date endTime, String notifyStatus, String alertType) { return solrMapper.countAlertLog(startTime, endTime, notifyStatus, alertType); } public List<Map<String, Object>> selectWeekly(Integer year, Integer month, Integer week) { return solrMapper.selectWeekly(year, month, week); } public Map<String, Object> selectWeeklyById(Integer id) { return solrMapper.selectWeeklyById(id); } public void saveWeekly(int year, int month, int week, String filePath, String fileName, long size, String contentType, int userId) { solrMapper.saveWeekly(year, month, week, filePath, fileName, size, contentType, userId); } public void deleteWeeklyById(Integer id) { solrMapper.deleteWeeklyById(id); } /** * ??TopN * * @param startTime * * @param endTime * ? * @param topNum * TopN * @return */ public List<Map<String, Object>> selectWordsAlertTop(Date startTime, Date endTime, int topNum) { return solrMapper.selectWordsAlertTop(startTime, endTime, topNum); } public int alertProcess() { // ?? int count = 0; String tmplTitle = "?${ALERT_NAME}"; String tmplContent = "${NOTIFIER}\n \n ???${WORDS}??${ALERT_VALUE},?${CURRENT_VALUE}"; Calendar now = Calendar.getInstance(); Calendar start = Calendar.getInstance(); // start.set(Calendar.DAY_OF_MONTH, 1); start.set(Calendar.HOUR_OF_DAY, 0); start.set(Calendar.MINUTE, 0); start.set(Calendar.SECOND, 0); Date startTime = start.getTime(); Date endTime = now.getTime(); List<Map<String, Object>> alertLogs = selectAlertLog(startTime, endTime, "0", null, 0, null); for (int i = 0; i < alertLogs.size(); i++) { Map<String, Object> alertLog = alertLogs.get(i); String notifiers = String.valueOf(alertLog.get("NOTIFIERS")); String alertType = String.valueOf(alertLog.get("ALERT_TYPE")); String metrics = String.valueOf(alertLog.get("METRICS")); String arr[] = metrics.split(Pattern.quote("$$$"), 2); if (arr.length == 2) { alertLog.put("WORDS", arr[1]); } else { alertLog.put("WORDS", arr[0]); } String notifierArray[] = notifiers.split(Pattern.quote("$$$"), 2); if (notifierArray.length == 2) { String[] notifierIds = notifierArray[0].split(","); // String[] notifierNames = notifierArray[1].split(","); for (int j = 0; j < notifierIds.length; j++) { Integer userId = null; try { userId = Integer.parseInt(notifierIds[j]); } catch (NumberFormatException e) { LOG.warn("??" + notifierIds[j]); continue; } if (userId != null) { User user = userService.getUserById(userId); if (null != user) { alertLog.put("NOTIFIER", user.getNickName()); String title = TemplateParser.parse(alertLog, tmplTitle); String content = TemplateParser.parse(alertLog, tmplContent); if ("1".equals(alertType)) {// if (notifyByEmail(user.getEmail(), title, content)) { ++count; } } else if ("2".equals(alertType)) {// if (notifyBySms(user.getPhoneNumber(), title, content)) { ++count; } } } } } } // ? solrMapper.updateAlertLogNotified((Long) alertLog.get("ID"), count == 0 ? 2 : 1); } return count; } private boolean notifyBySms(String phoneNumber, String title, String content) { if (!StringUtils.isEmpty(phoneNumber) && !StringUtils.isEmpty(content)) { LOG.info("??:" + content); return true; } else { return false; } } private boolean notifyByEmail(String email, String title, String content) { if (!StringUtils.isEmpty(email) && !StringUtils.isEmpty(content)) { return mailService.sendMail(title, content, email); } else { return false; } } // XXX ????? public long generateHot() throws Exception { SolrTools solrTool = new SolrTools(userService.getConfig(-1, CONFIG_SOLR_URL)); Date endTime = new Date(); Date beginTime = new Date(endTime.getTime() - STAT_TIME_DEFAULT); int count0 = doGenerateHot("0", solrTool, beginTime, endTime); int count1 = doGenerateHot("1", solrTool, beginTime, endTime); return count0 + count1; } private static class Word { final String word; long heat; public Word(String word, long heat) { super(); this.word = word; this.heat = heat; } } private int doGenerateHot(String flag, SolrTools solrTool, Date beginTime, Date endTime) { if (StringUtils.isEmpty(flag)) { return 0; } String configSelector = userService.getConfig(-1, "SELECTOR_4_HOT_FLAG_" + flag); String url = userService.getConfig(-1, "URL_4_HOT_FLAG_" + flag); String defaultCharsetName = userService.getConfig(-1, "CHARSET_4_HOT_FLAG_" + flag); PageFetcher fetcher = new PageFetcher(defaultCharsetName); String content = fetcher.fetchPageContent(url); Document document = Jsoup.parse(content); Elements nodes = document.select(configSelector); if (null == nodes) { return 0; } List<Word> words = new ArrayList<Word>(); for (int i = 0; i < nodes.size(); i++) { Element e = nodes.get(i); words.add(new Word(e.text(), 100 / (i + 1))); } // ???? for (Word word : words) { List<String> terms = analyzer.getWords(word.word); if (terms.isEmpty()) { continue; } StringBuilder msg = new StringBuilder(); for (int i = 0; i < terms.size(); i++) { if (i != 0) { msg.append(" AND "); } msg.append(terms.get(i)); } try { long cnt = solrTool.count("text:" + msg.toString(), beginTime, endTime); word.heat += cnt; } catch (Exception e) { LOG.error(e.getMessage(), e); } } // ? if (words.size() > 0) { // //siteMapper.saveHotHis(flag); siteMapper.deleteHot(flag); for (Word word : words) { siteMapper.saveHot(flag, word.word, word.heat); } return words.size(); } else { return 0; } } /** * ? * @param words ? * @return ???null */ public List<String> parseWords(String words) { return analyzer.getWords(words); } public List<Map<String, Object>> selectHot(Date startTime, Date endTime, String flag, Integer start, Integer rows) { start = null != start ? start : 0; rows = null != rows ? rows : 10; return siteMapper.selectHot(new java.sql.Date(startTime.getTime()), new java.sql.Date(endTime.getTime()), flag, start, rows); } public int countHot(Date startTime, Date endTime, String flag) { return siteMapper.countHot(new java.sql.Date(startTime.getTime()), new java.sql.Date(endTime.getTime()), flag); } public List<String> queryWords(String word) { return siteMapper.queryWords(word); } public static void main(String[] args) { String[] contents = { "??13-?? - - - - ? - - NBA - - ? - ? - - - - - - ? - - ? - - - > ?? > | | | | ??13 ?? ( ?) ?? 2015-11-02 08:28:08 ?? ? ?? | | ? ? | ??????? IDbqzhengzhiju?????5?????8??? ?13??? 10???5?????? 12?60?20141065??? ?12?? ???151?????2? 5???4 ?10???????8? IDbqzhengzhiju??????5????????? ?IDbqzhengzhiju?????31???????????????????????????????????????????? ???IDbqzhengzhiju???????????8???????? ??????????? ??????????201464????????? ?8?????????????????? ??? 1?IDbqzhengzhiju??2??? ?19??5?1?1??2???7?????10???????? ?1??5????4?3??3?????????????????8????????1949?195461?4? ????????? ??? ????? ???8??10? IDbqzhengzhiju???????15??20??????????20042???10? 201412???????? ????????6??1??????? ????? ???????1016?????????????61???? ??6????60??????20141261????? IDbqzhengzhiju?????????60?????57???????4??60???6? http://star.news.sohu.com/20151102/n424900992.shtml star.news.sohu.com true ? http://star.news.sohu.com/20151102/n424900992.shtml report 3731 |???????IDbqzhengzhiju??? (UN656) ??13 [??] ?? 16????... 18 ?? ?? ? ?? ???... ? ??? ?? 820? ??17607 ?????4107 ?? 15-11-02 ??? 15-11-02 :?() 15-11-02 ??? 15-11-02 :????? 15-11-01 ????? 15-11-01 ?:??? >> ... ?? ??... ??... ??... ??... ?? ? ?? ?? >> ?? GDP7?? ??? ??????? ?? ??? >> ? ?????[ ] ? \"?\" ? ?? ????????[ ] ????? ???? ??? ?? ? ? ? ? | ? ? | ?? | ?? ? 6? 12?? ? 6??? ? ????? 50? ?? 240 ? - ?? [ ] 129 ??? [ ] 104 ? - 29????62? () [ ] 93 ??? ? [ ] 91 60?? -??--??!!! [ ] 91 ???-?? [ ] 89 ? - 3?45 [ ] 85 ? - ?5? ?() [ ] 84 ??-??- ?20?---?? [ ] ?? ? ?[ ] H???? 3? ?? ??? G?coser? ?86-10-58511234 ? kf@vip.sohu.com - ? - - ??? - ? - ? - ?? - ???? - About SOHU - ?? - - - ? Copyright ? 2015 Sohu.com Inc. All Rights Reserved. ??? ? ???? jubao@contact.sohu.com AD =", " ??13(???)-?- | | | | | | | | | | ? | ? | | | ? | ? | | | | | | ? | ? | ? | ? ? ? ? ??? ? ? ? ? ?? ? ?? ?? ? ? > > ? > ??13(???) ? 2015-11-02 03:32:59 ?? ?-? ??????????? ????5?????8??????????? 5? 8?? 10???5???????? 12 ?60?20141065??? ?12? ? ???151?? ?? ?2? 5? ? ? 4? ?10????? ?? 8? ??????5????????? ??????31????? ? ? ??????? ? ? ??????????? ? ???????? ?? ????? ???? ? ? ? ???? ? ? ? 8??? ? ????? 7? ???????? ??? ???? ? ? ? ???201464???? ? ???? 8?????? ?? ? ?????????????????????? ? ???? 1???2??? ?19??5?1?1???2???7?????10???? ? ??? ?1??5????4?3?? 3????? ??? ?? ?? ? ?? ? 8??? ? ? ? ? ?1949 ? 195461?4? ???????? ????? ??????????????? ??????????????10????? ????????????????????? ????? ???2001?15?? ??20137??????1???12?? ?????? 8????????6??1??????? ??201412?2?? ( 600717 , ? )8?12????81910??????? ?? ( 603000 , ? ) ???8??10??2080????? ?? ????????201412?????????????????????? ? ?????? ???????15??20????? ? ? ?? ? ?20042???10? ??????????????? ?7?????????? ??? ????????6? ? ????????????? ???????1016? ? ????????????2???? ?????19545??61???? ??6??? ? 19541260??????1953820141261???????????????11? ?????????60????19582?57??????????????????4??60??1960?6? ?19555?60????195659?? ?????20136???????????GDP??? / HN666 11/02 11:14 ???? 11/02 11:06 ??? 11/02 09:57 ? ? 11/02 01:58 ?? 11/01 18:25 42 11/01 14:37 ?? 11/01 14:07 11/01 08:52 ?? ?? ? 500 ??? ? ????? LRSB ? [ ? ?? ][ ? ] ?12 ?? ? ?? C919 ? C919 ? ? ? ???? ??? ?? ? ??? ????6.5% ? 2020?? ? ???? ?? ???? ???? ?? ? ??? ?? 1 ????? 2 ???? 3 113 4 C919???517? 5 ??????? 6 200?? 7 ????? 8 ?500? 9 ??? 10 ??? ??????????????? ? ? ? ? ??? - ? - - ? ???[ZX0005]???? Copyright ??? All Rights Reserved ? ?", " ??_? ? ? ?? LOFTER ? ? ??? ? ? ? VIP? ? ? ??? ? VIP ? ? ? ? ? ? ? ? ? LOFTER LOFTER ? LOFTER BOBO BoBo NBA ? ? ? ? ? ? > ?? > ? > ?? 2015-11-02 19:34:36??: ?? () 0 ????????? ?10????? ??????? ?? ????? ??1021?????? ??????????????? ? ? ?????? ????????? ???????? ??????????????? ??? ?1021?????????????? ??????????????? ????? 2013?????????4?????0.44???0.04?????? ??????????? ????LNG7/???????? ?2014?1800?7.4%10???9?1322?2.5% ???? NF049 ?? 0 ?? ??? ???>> ? ??? 2015/11/02 BP 2015/10/31 ? 2015/10/29 2015/10/20 ?? 2015/10/22 ?? ? 0 ? ?? ? | | | ? ? ? ? ??? | ??\"\" | ?? ?? | | 11?? 16??? ? | | ? ? ? 64 ??? ?? ??? ? ? ? ???? ??? ?? 2317? ?12? ?38 ? 5?9 ?? FTA? ?? ??? BoBo 0 | 0 ? ? 0 | 0 ? | ? | .tie-post .tie-post-area .post-area-photo{border-left-color:#cc1b1b;border-bottom-color:#cc1b1b;} .tie-post .tie-post-area .post-area-input{ border-right-color:#cc1b1b;border-bottom-color:#cc1b1b;} .tie-post .tie-hotword {border-left-color: #cc1b1b; border-right-color:#cc1b1b;} #tieAds{ border:1px solid #cc1b1b;border-bottom-width:0;width:588px; overflow:hidden; } .tie-post .tie-post-area .post-area-hover { border-color:#aad2ff;}", "????? 10-?--?-? ?! ?: 400-8256-198 | ? | ? | ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ??: ? ? ????? 10 ??? ?? ? 2015-11-02 ? ?? ??? ?? ?11324? ???10? ????? ? ? ? ???????? ? 1129????45.38/?-4.90%? 125-135/?1030?-4.13%110/????93? 0.08/?0? 0.09/? ??????????????? ????? ?? ?103029?? ? ??93?0???755771/?;92?0???957901/? ????????????0?????? ???? ??? ???????11 ???? ? ? ? ?????????????? [ ? ] [ ? ] [ ? ] [ ? ] [ ? ] ? ????? ? ?? ? ????? ????? ? ?? ?? 125/ 10 ?0.1 ?? ??92??0.1/? ?? >> ?5? ??? ?? ?+? FMG? ? ??? ??? ??617??...[ ] ?? ????? ???? ?? ??? ? ????? ??? :??? ???? ???? ??? ?? ? ????? ??6?? ??? 4? ? ???? ??? ? ? ??? ? ? ?? ?: ? ? ? ?? ?? ?? 2015 in-en.com , all rights reserved ? ?400 165 8896 ICP14050515? ???? 360 ", "??--?-?-? ?! ?: 400-8256-198 | ? | ? | ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ??: ? ? ?? ??? ?? 2015-10-30 ? ?? 125/? ???0.09 ? ????1029 ??? ? ???113 ?? ???125/?90#0# ????0.090.11 ? GDP ?? ?? ?WTIBrent ??29?????? ? ?? ?? ?????29?657?-5.07%46.574/2.486/? ??125/??90#0.09/?93#0.10/?0#0.11/?????2.5?????? ???? ????? ? ? ????????? ?? ??? ?? ?????????102825??93#??6933/?38/?0#??5324/?13/? ? ???? ? ?????????????? [ ? ] [ ? ] [ ? ] [ ? ] [ ? ] ??? ???? ?? ? ?? ??92??0.1/? ??3 ?? ? ??? ??? ?? 6.3%45.94 ???113 ? ?? >> ?5? ??? ?? ?+? FMG? ? ??? ??? ??617??...[ ] ?? ????? ???? ?? ??? ? ????? ??? :??? ???? ???? ??? ?? ? ????? ??6?? ??? 4? ? ???? ??? ? ? ??? ? ? ?? ?: ? ? ? ?? ?? ?? 2015 in-en.com , all rights reserved ? ?400 165 8896 ICP14050515? ???? 360 ", " ??---- ?? ? ?? ? ? ? SNS ? ?? E ? | ? ? ? SNS ? ?? E ? ? | | ? | | ? | ? | ? | ? RSS | >> ?? 2015110213:18 ?? ? ?? ?? ?? ???????? 1026??????????????70??????? 1123?2013437????????????????? ??????????????196310???????????1973???????????????????2012?????????20143????????????? ??21???COP21????2009???????????2?????????????????????????????????????????????? ???????20082014?GDP0.1%?GDP??20%?????????????????????????????2023??47.9??4502014?557.910.9%???????????C????180?280????????????????31?21%7000????????????2017?? ????20122014?6.5%?44%?200??????????????????8%???? ????????????????? (()??) ? ?? ... QQ ? ?? ??? ???? 22?? C919?? 8 ???? ??? ?? ? ? ? ?10 12? 10????\"?\" ????? ?? ??? ???? ?? ? ? ? ? ? ?? ??? ?? ?? ?? ? ? ? | | ?? | ? | ? | ? | | | ? | ENGLISH ? ? ? ? ? Copyright ? 1997-2015 by www.people.com.cn all rights reserved ? ? ? ? ? Copyright ? 1997-2015 by www.people.com.cn. all rights reserved", "??--?-- ? ? ?? ? ? ? SNS ? ?? E ? | | ? ? ? SNS ? ?? E ? | ? | | ? | | ? | ? | ? | ? RSS >> ? >> ? ???? ?? 2015110207:23 ?? ? ? ?? ? ... QQ ???????????????????????????7????????? ??????????????????????????6????????????????????????????????????????? ??????????????????????????????????????10???????????????????4???? ?????????????????????????????????????????????????????????????????????????? ??????????????????????????????????????? ?? 20151102 07 : ?? ???? ???? ????? ?? (?) 26987405 ? ? ? ? SNS ? / ????? ???! ?: ? ?? ? ? ? ???! ??: ?: ,? ? 30 s? ????????? ????????? ! 5s? ????????? ????????? ???! 5s? ????????? ????????? > ??? ?? ?299? ??? ?? 338PM2.5 ? ? ?? 155??? ??41?? | ? ??5026? ?? ?? ?? ??? ?? ?? ?11 ?? ??? ?? 1-2?? WCA ?? ?20143 2014 | ? ? ? ??? ? ? ? 24? | ? | | ?? | ? | ? | ? | | | ? | ENGLISH ? ? ? ? ? Copyright 1997-2015 by www.people.com.cn all rights reserved ? ? ? ? ? Copyright 1997-2015 by www.people.com.cn. all rights reserved", "0.3%??46-?- | | | | | | | | | | ? | ? | | | ? | ? | | | | | | ? | ? | ? | ? ? ? ? P2P ? ? ?? ?? ? ?? ? ? ? ? ? APP > > > 0.3%??46 ? 2015-10-30 05:18:39 ?? >>??? 3? 3? 30 ?466%??? ??? 12120.3%?46.06?6.3% 12250.5%?48.80?48.17 Forex.com?-(Fawad Razaqzada)?????????????? ? HF020 10/22 10:18 10/29 10:36 ??3.5%-4% 10/29 01:19 ?? ?? 10/28 10:18 ? 2% 10/28 05:04 1.1% ?? ? 500 ??? IPO ? [539]? [538]??? [537]??? [536] [535]? [534]?? ?? ???? ??? ??? ??? ??? ? QQ ??? 10 ??? ????? ?A? ??? ?? 4??Q3?? 45???? ???? ?? ? ?? ?? ? ? ? 1 ???? 2 ?11? 3 11?42% 4 ????? 5 ?8%??4? 6 ??? 7 ?131A 8 ??12? 9 ???? 10 ???15?? ??????????????? ? ? ? ? ??? - ? - - ? ???[ZX0005]???? Copyright ??? All Rights Reserved ? ?", "China Makes Leaderboards of 2015 Platts Top 250 Global | Platts Press Release | Media | Platts Cart English ?? ??? My Subscription | Register | Contact Us | Forgot Password? | Help Advanced Search HOME PRODUCTS & SERVICES Oil Natural Gas Electric Power Coal Shipping Petrochemicals Metals Agriculture Conferences & Events Maps & Geospatial UDI Data & Directories Delivery Platforms & Partners Insight Magazine Energy Week TV NEWS & ANALYSIS All Commodities Oil Natural Gas Electric Power Coal Shipping Petrochemicals Metals Agriculture Latest News Headlines News Features Videos The Barrel Blog Podcasts Industry Solution Papers Commodities Bulletin Top 250 Rankings Webinars METHODOLOGY & REFERENCE Oil Natural Gas Electric Power Coal Shipping Petrochemicals Metals Agriculture Methodology & Specifications - Overview Price Assessments Subscriber Notes New & Discontinued Price Symbols Corrections Market Issues Oil Market on Close Holiday Schedule Symbol Search / Price Symbol and Page Directories Conversion Tables Glossary SUBSCRIBER SUPPORT My Subscription Help & Support Software & User Manuals Email Alerts System Notifications Register / Log In ABOUT PLATTS Overview Leadership Offices History Social Responsibility Industry Recognition Events Media Center Press Releases Platts in the News Regulatory Engagement & Market Issues Careers Contact Us Home | About Platts | Media Center | Press Release Archive | Press Releases China Makes Leaderboards of 2015 Platts Top 250 Global Energy Company Rankings? Singapore - October 27, 2015 First Time in Rankings' 14 years: 3 Chinese Companies Make it to Top 10; 2 Make it to Top 5 Both APAC and EMEA Slip in Number, Average Rank and Growth Rates Ongoing Shale Plays Advance Americas' in the Rankings Hindustan Petroleum Corporation Ltd. Chairman Nishi Vasudeva Named 2015 Asia CEO of the Year' China showed its increasing strength, not only as an energy production and demand center, but also as a leader in the world energy arena, according to the Platts Top 250 Global Energy Company Rankings? , which were announced Tuesday night. The Rankings, now in their 14th year, were unveiled to more than 300 energy executives at an annual dinner in Singapore, hosted by Platts, a leading global energy and commodities information provider. The Platts Top 250 rankings reflect the financial performance of publicly traded energy companies with assets greater than U.S.$5 billion, and are based on a combination of asset value, revenue, profit and return on invested capital (ROIC) for the latest fiscal year (2014). China Sets Record with 3 Companies in Top 10 Not one, but two Chinese energy giants, CNOOC Limited (Ltd) and PetroChina Company Ltd., moved into the Top 5 for the first time since the rankings began in 2002. The state-backed companies have rivaled Big Oil of the West for years, with PetroChina having appeared in the Top 10 for 11 years, and CNOOC Ltd. hovering in the 13th and 12th spots for the last several years. Despite weaker coal markets, China Shenhua Energy jumped into the Top 10 for the first time at #9, up from #15 place last year, as shrinking earnings from leading oil producers gave it a relative boost. It was the only coal and consumable fuel company in the leaderboard and marked the first time that China has had three companies in the top ranks, traditionally dominated by European and Americas counterparts. China was among the Asia Pacific (APAC) countries highlighted in the evening's keynote address , \" Diversification and Unification of Capital for Energy Investment ,\" given by Dr. Bo Bai , managing director of Warburg Pincus, who said he remains \"cautiously optimistic\" on the future of energy investing in China, India and Southeast Asia. \"As the region opens up its blocks, and reforms its fiscal regimes to enhance risk-adjusted returns, investment dollars will pour in, allowing countries in the region to benefit from more exploration, reserves, and production,\" explained Bai. Exxon Mobil Corporation Surpasses Decade at Top Spot Exxon Mobil Corporation retained its stronghold on the #1 spot for the 11th consecutive year, though integrated oil majors made up only half of this year's Top 10, with the sector's slightly weaker standing paving the way for two refining and marketing companies - Phillips 66 and Valero Energy Corporation - to join the Top 10 in 6th place and 8th place, respectively. Besides climbing from its 2014 rank of 13th place, Phillips 66 retained its positon as the world's biggest refiner. Valero, the world's biggest independent refiner, continued to benefit from the glut of U.S. crude oils in the U.S. Gulf Coast region. The Americas moved up the regional rankings, with its Top 10 energy companies placing 12th overall, up from the average rank of 15.5 the year before. Taken together, Americas energy firms now comprise 45% of the Top 250, crowding out a number of rivals from Asia and Europe. The changes also mark an inflection point for Asia's energy sector, which for years has seen its overall standing in the Platts Rankings edge higher and higher. While Asia's emerging economies, led by China, continue to pull in the biggest share of incremental global commodity demand growth, the pace of growth is now clearly slowing. APAC Softens, Europe, Middle East and Africa (EMEA) Falters Noticeably missing from the leaderboards' 5 and 10, were Britain's BP p.l.c., France's TOTAL SA, and Russia's OJSC Gazprom. The latter state gas supplier, which placed 4th overall last year, dived 39 places to 43rd, buffeted by the ruble's collapse, its impact on long-term credit, and other factors. TOTAL, once a Top 10 fixture, tumbled to 26th place this year as its earnings and returns faltered. Last year's 2nd-ranked BP fell to 29th this year, due in large part to its weaker profits and poor 2% ROIC. Despite a host of individual corporate achievements, Asia Pacific as a whole felt its economic muster begin to wane. The region, which had shown a \"personal best\" in last year's 2014 roster with 82 energy companies in the ranks -- surpassing the \"personal best\" of Europe, Middle East and Africa (EMEA) in 2008 with 80 spots -- slipped to 78 in the latest Rankings. A drop was also seen in APAC's average ranking of 137, as compared with 134 last year. Still, APAC's fastest growing ten companies had an average 3-year compound growth rate (CGR) of 21%, bettering the 14.8% CGR of its European counterparts. The number of EMEA entries on the list continued to slide this year, with 59 companies holding an average ranking placement of 123, down from last year when the region fielded 65 energy firms averaging a position of 113. Growth rates, based on average 3-year CGR, were just 2.8% -- less than half that of APAC (6%) and less than a third of that of the Americas (10.4%). Of the Top 50 Fastest Growing energy firms, only four were based in EMEA. Shale Play Advances Americas Shale oil retained center stage, helping to usher 113 Americas companies (89 U.S. and 14 Canada) into this year's Top 250 with an average ranking of 119. This is up from 103 companies with an average rank of 126 in 2014 but still below the 2003 peak of 149 companies. Despite being in its fifth year and in a much lower price environment, the shale oil revolution in some places of the U.S. has barely begun. Basins such as the Permian in West Texas and Mexico are reportedly becoming more productive, and producers continue to knock down the cost of production, requiring fewer rigs to continue high oil output. Dominating the worlds' Top 10 and Top 50 Fastest Growing energy company rosters are the Americas' tight and shale oil producers, as well as mid-stream and refining companies that are carrying and processing their increasing production volumes. Even gas utilities like AGL Resources Inc have ridden the wave of booming shale gas volumes moving to end customers through its increased transport/pipeline assets. While overall corporate growth rates for energy companies slowed from 10.0% to 7.3% on a 3-year CGR basis, the Americas energy companies (many of which are companies directly or indirectly benefiting from shale) shown in the Fastest Growing list, collectively enjoyed a combined 56% CGR, up from 46.8% the prior year. Mixed Bag for Utilities; Highest-Ranked Utilities Move Higher Some 128 of the world's Top 250 Global Energy Companies are electric utilities, gas utilities, independent power producers, multiple utilities, and renewable electricity producers. Utilities were among the sectors advancing in the 50 Fastest Growers list. All 10 of the highest-placed utilities have moved higher in the 2015 Top 250, indicating the reduced exposure to pure commodity price risk that these diversified and often partly regulated companies face, as compared to mid-cap oil and gas concerns. Separately, the largest pure coal mining company in the world, Coal India, climbed to 38th place this year from 47th place a year ago, due in large part to its impressive growth year-over-year, including a 14% jump in drilling over the past year. \"Asia CEO of the Year\" Awarded Taking \"Asia CEO of the Year\" honors this year was Ms. Nishi Vasudeva , chairman and managing director of Hindustan Petroleum Corporation Ltd. With this win, Vasudeva is automatically in the running with other finalists for the global \"CEO of the Year\" award, which will be announced December 9 at the Platts Global Energy Awards in New York. The Platts Top 250's independent judges panel, already impressed with Hindustan Petroleum's history of peer-beating marketing margins, credited Vasudeva's exemplary leadership with steering the company to its stated best financial performance since its 1974 formation. In the past year, the refining and marketing company showed a personal best in profits , well beyond its decades' highest profit from the prior year. According to the judges, these accomplishments were even more significant when juxtaposed with the volatile global economy, a", " My Subscription | Register | Contact Us | Forgot Password | Help Advanced Search HOME PRODUCTS & SERVICES NEWS & ANALYSIS METHODOLOGY & REFERENCE SUBSCRIBER SUPPORT ABOUT PLATTS Skip Navigation LinksHome|News & Analysis|Latest News Headlines| China data: Sep gasoil exports surge to record high at 1.11 mil mt on weak local demand Print China data: Sep gasoil exports surge to record high at 1.11 mil mt on weak local demand Singapore (Platts)--27 Oct 2015 458 am EDT/858 GMT China's gasoil exports hit an all-time high at 1.11 million mt in September, and the exports are set to remain at a high level till the end of the year on slow domestic demand and available export quotas. The September gasoil exports were nearly five times higher than the 225,810 mt exported a year ago and up 54% from the previous record high of 722,520 mt in August, according to data released Tuesday by the General Administration of Customs. Refinery sources said the exports helped to ease inventory pressure generated by sluggish domestic demand. Some refineries in the country plan to export more gasoil barrels in October than September. According to Platts' survey, state-owned China National Offshore Oil Corp., or CNOOC, plans to export up to 100,000 mt of gasoil in October, up significantly from the 50,000 mt in September, while seven Sinopec refineries plan to export 421,000 mt this month, up 27% from 331,000 in September. Article continues below... Request a free trial of: Oilgram News Oilgram News Oilgram News Oilgram News brings you fast-breaking global petroleum and gas news on and including: Industry players, upstream and downstream markets, refineries, midstream transportation and financial reports Supply and demand trends, government actions, exploration and technology Daily futures summary Weekly API statistics, and much more Request a trial to Oilgram News Request More Information Two surveyed PetroChina refineries also plan to boost exports in October to 248,000 mt from 205,000 mt in September. The Ministry of Commerce issued a total 8.83 million mt of gasoil export quotas to state-owned Sinopec, China National Petroleum Corp. and CNOOC for 2015, Platts calculations based on data from industry sources showed. Over the first nine months, China's gasoil exports totaled 4.35 million mt, up 37.8% from 3.16 million mt in the same period last year. This leaves a balance of 4.48 million mt of gasoil export quotas for the last three months of this year, or an average of 1.49 million mt each month over October-December. As China's outflow of gasoil has increased, it has also expanded beyond its traditional market of Southeast Asia. China's first substantial gasoil export to Togo, in west Africa, was seen in August, with a 79,279 mt shipment, customs data showed. GASOLINE EXPORTS ALSO GET A BOOST IN SEPTEMBER China's gasoline exports totaled 615,190 mt last month, up 71.1% from September 2014 and 31.7% from August 2015, according to customs data. Gasoline exports are expected to be stable in the coming months due to recovering domestic demand and healthy inventory levels. \"Compared with gasoil, gasoline sales are better and we don't have inventory pressure,\" said a refinery source from PetroChina. Over January to September, China exported 4.02 million mt of gasoline, up 17.8% from the 3.42 million mt in the same period of last year. The Ministry of Commerce issued 6.40 million mt of gasoline export quotas for 2015, leaving a balance of 2.98 million mt or a monthly average of 993,000 mt of unused quotas for the fourth quarter. --Staff, newsdesk@platts.com --Edited by Geetha Narayanasamy, geetha.narayanasamy@platts.com inShare2 Platts Email PRODUCT FINDER Step 1 Step 2 Step 3 Related News & Analysis Video archives Capitol Crude podcast archive Global Oil Markets podcast archive News features The Barrel blog Related Products & Events Price Assessments: Dated Brent Oilgram News Oilgram Price Report African Refining Summit, 2nd Annual Oil and Gas Acquisition and Divestiture Outlook Middle East Crude Oil Summit, 3rd Annual @PlattsOil on Twitter @PlattsGas on Twitter Contact Us|Site Map|About Us|Holiday Schedule|Media Center|Platts Privacy & Cookie Notice|Terms & Conditions|For Advertisers||?? +1-800-PLATTS-8 / +1-800-752-8878 support@platts.com sales@platts.com ", " About Us UPI en Espa ol Log in or Register! facebook twitter search Top News Entertainment Odd News Business Sports Science Health Analysis Photos Archive Home / Business News / Energy Industry Oil prices down on Russian production gains China adds to downward pressure with lackluster PMI for October. By Daniel J. Graeber Follow @dan_graeber Contact the Author | Nov. 2, 2015 at 9:19 AM Follow @crudeoilprices Comments0 Comments share with facebook share with twitter Crude oil prices start first full trading day in November in the red on word China's economy is slowing further and increased production from Russia. (UPI Photo/Monika Graff) | License Photo Sign up for our Energy Newsletter Preview our latest newsletter NEW YORK, Nov. 2 (UPI) -- An increase in Russian crude oil production and more signs of weakness in the Chinese economy pushed crude oil prices down on the first trading day in November. The price for Brent crude oil was down about 1.3 percent from the previous session to $48.88 per barrel in early morning trading. West Texas Intermediate, the benchmark price for U.S crude oil, was down 1.5 percent to $45.85 per barrel. Crude oil prices are moving steadily lower, off about 11 percent for the year, because of signs of lingering global economic weakness and a surplus in supplies. Novatek, the largest private crude oil producer in Russia, reported a 40 percent increase in production year-on-year. Among those reporting a decline, Rosneft, one of the largest companies in Russian in terms of overall output, reported a 1.1 percent decline in production for October, when weighed against last year. Russia's momentum in production mirrors the energy companies who've reported earnings so far in the third quarter. Most companies, despite the downturn sparked by the market tilt toward the supply side, have reported an increase in overall crude oil production this year. In terms of broader economics, China continued with a long string of reports showing emerging weakness with a drop in the manufacturing purchasing managers' index, or PMI. A reading of 49.8 in October signals factory activity in the economy is in contraction. The Shanghai Composite Index closed down 1.7 percent for Monday, with oil majors China Petroleum and Chemical Corp. and PetroChina Ltd. among those reporting heavy losses. Like Us on Facebook for more stories from UPI.com Related UPI Stories Oil prices recover from Monday's loss Russian oil production rises Crude oil eases back sightly Crude oil falls on news of Russian output Comments0 Comments share with facebook share with twitter Topics: Brent Crude Offers and Articles from the Web! Ads by Adblade These Celebrities changed our lives forever, but left too soon.NewsZoom These 12 super foods speed up your weight loss and can potentially help melt fat!Newszoom These are the most toxic places on earth. You'll never believe #5! Newszoom These Celebs Take Vacations to a Whole New Level! Newszoom Follow this one secret rule to lose weight...Venus Factor These Stock Images Will Leave you Speechless! Newszoom Recommended Spouses of the 2016 presidential hopefuls [PHOTOS] Next Article Spouses of the 2016 presidential hopefuls [PHOTOS] Latest Headlines Moody's: No long-term oil threat for Canada Moody's: No long-term oil threat for Canada NEW YORK, Nov. 2 (UPI) -- Canadian provinces may miss their short-term budget targets because of lower oil prices, though balance is expected long term, Moody's said. Iran talking energy with European companies Iran talking energy with European companies TEHRAN, Nov. 2 (UPI) -- Iran said it's been vetting interest from major European energy companies eager to wade into the oil and gas sector once sanctions pressures ease. Scotland hosting new type of offshore wind program Scotland hosting new type of offshore wind program ABERDEEN, Scotland, Nov. 2 (UPI) -- The Scottish government said it granted a license to the operators of what Edinburgh said may be the world's largest offshore floating wind energy development. North Dakota shows 3 percent increase in rig activity North Dakota shows 3 percent increase in rig activity BISMARCK, N.D., Nov. 2 (UPI) -- In a further sign the worst may be over for North Dakota, the state reported an increase in the number of rigs exploring for or producing oil and natural gas. West Africa drawing oil interest West Africa drawing oil interest MELBOURNE, Nov. 2 (UPI) -- West Africa continues drawing interest from explorers, with Australia's FAR Ltd. announcing the start of work in a basin in Senegal described as world class. Shell starts November with asset sales Shell starts November with asset sales THE HAGUE, Netherlands, Nov. 2 (UPI) -- After reporting heavy losses for the third quarter, Royal Dutch Shell said it sold off stakes in Chinese and French holdings in the downstream sector. Crude oil prices steady early Friday Crude oil prices steady early Friday NEW YORK, Oct. 30 (UPI) -- Crude oil prices stood pat in early Friday trading, as a midweek rally was offset by lingering concerns of macroeconomic growth and geopolitical issues. Exxon boasts of balance during downturn Exxon boasts of balance during downturn IRVING, Texas, Oct. 30 (UPI) -- U.S. supermajor Exxon Mobil said declines in its exploration and production operations were offset by gains downstream, where lower prices actually helped. South African waters drawing in energy companies South African waters drawing in energy companies STAVANGER, Norway, Oct. 30 (UPI) -- Southern African waters drew more interest from energy explorers with Norway's Statoil and Italy's Eni wading into Mozambique waters. Industry lobbies for Atlantic drilling Industry lobbies for Atlantic drilling RICHMOND, Va., Oct. 30 (UPI) -- Industry supporters have started an ad blitz in southern U.S. states, arguing offshore oil and gas exploration can exist side-by-side with the environment. Trending Stories Lessig drops out of 2016 race, says Democrats 'won't let me be a candidate' Anonymous begins publishing Ku Klux Klan member details Lawsuit: Notre Dame tutor coerced students into sex with daughter Study: Diet diversity, moderation might be less healthy for adults Mexican navy rescues four fishermen adrift at sea for a month More Collections Notable Deaths of 2015 Notable Deaths of 2015 2015 NFL Cheerleaders 2015 NFL Cheerleaders 12 Celebrities battling chronic illnesses 12 Celebrities battling chronic illnesses Latina 'Hot List' Party in West Hollywood Latina 'Hot List' Party in West Hollywood Top archaeological finds of 2015 Top archaeological finds of 2015 2015 New York City Marathon 2015 New York City Marathon 8 things you didn't know about baby gorillas 8 things you didn't know about baby gorillas 2016 Hooters Calendar Girls in New York 2016 Hooters Calendar Girls in New York AROUND THE WEB ABOUT UPI United Press International is a leading provider of news, photos and information to millions of readers around the globe via UPI.com and its licensing services. With a history of reliable reporting dating back to 1907, today's UPI is a credible source for the most important stories of the day, continually updated - a one-stop site for U.S. and world news, as well as entertainment, trends, science, health and stunning photography. UPI also provides insightful reports on key topics of geopolitical importance, including energy and security. A Spanish version of the site reaches millions of readers in Latin America and beyond. UPI was founded in 1907 by E.W. Scripps as the United Press (UP). It became known as UPI after a merger with the International News Service in 1958, which was founded in 1909 by William Randolph Hearst. Today, UPI is owned by News World Communications. It is based in Washington, D.C., and Boca Raton, Fla. EXPLORE UPI.com UPI is your trusted source for ... Top News Entertainment News Odd News Business News Sports News Science News Health News News Photos World News U.S. News Energy Resources Security Industry Archives UPI Espanol Follow UPI FacebookFacebook TwitterTwitter Google+Google+ InstagramInstagram PinterestPinterest LinkedinLinkedin RSSRSS Sign up for our daily newsletter!Newsletter Contact Advertise Online with UPI Submit News Tips Feedback TERMS OF USE | PRIVACY POLICY Copyright 2015 United Press International, Inc. All Rights Reserved. UPI.com is your trusted source for world news, top news, science news, health news and current events. We thank you for visiting us and we hope that we will be your daily stop for news updates. ", "??? ??4 ? ? IT ?? ? ?? ??? > ? > > ??? ??4 2015-10-20 17:45:02 ?? ?????????????5090?0???????0.04102024 ??????1020?10??9????????10? ?????????????? 1 2 ??????????????? Angelababy ?? ??10 ? 20?? ?? ? ?? ? ???? ??? ? ??? ?? 20??1.26 ? ??? ??? ??????? 7000 ?? 10 ?? ????10 Baby15?? ??? ? ?10 ? ?15?? ?? 24? 1 ?? 2 ?\"?\"2 ??? 3 ?22? 4 ? 5 ???:?? ?? 6 ??10 ? 7 ?\"\"?\"?\"? 8 ??? 9 911?? 10 ???????( 1 ?\"???\"?( 2 315?? ?888:1 3 ?????10 4 ? 5 ?? ? 6 ????( 7 ?? 8 ???? ??( 9 :? ?? 10 :?? 1 ?\"???\"?( 2 ? 3 ? 2? 4 ??3200?? ?? 5 :??? ? 6 ???? 7 ?? 8 ? 9 ?5 ( 10 ?? ( ?? | ? | ? | ? | ?? | ??? | 2012001 ????()147? ICP11013708 110402440030 - ?? ? -", "?? -? ,???[ ][ ? ] ? | | English | ?? | ?? | ?- | ? | ? | ? | ?? | | | | PTA | ??? | ? | | ? | ? | | | ?? | | ?? | ? | | ? | ?? | | | ? | | ? | | | 20151027 >> ?? www.oilmg.com 2015/10/20 11:40:13 ? ? ? 20151012 13 916???PNW??????????????????? ??? ????? 2011??????? ???? ??????? ? ????????????????? ???6%?24%???? ???? ????????30-40%?2030????????????????????? ????????????????? ???? ?????????LNG????LNG 20146???????????????????????????????? ??????????????????LNG?????????????????? ?? ?????????????? ? ????????????????????????????????????????? ??????????????????????????????????????????? ?????????????????? ??????????????????? ???LNG???LNG??????????? ??????????LNG??LNG???????? ?????? ???????? ??? 2014716??????PNW15%???5%60?/???50?/?????LNG????? ?????????LNGLNG???LNG? ????5?????,??201546900?1602?4?,???1??1? LNG???????????????LNG??????????? LNG??????? ???????????????????? ????LNG????????????? ?? ? ?????? ??? ??? ?? ? ?? ??????? ??? EOS@drs-i.com ? | ? ?? ? ? ? ? ? ? ???? ? ?? ourchemical ?? ?? ?? QC ?? ? ? ? ? ? ? ? ? ?? ? ?? ? ?? ? ? | ? | | ? | | 2005-2008 DRS iNNOVATIONS GROUP LTD. All Rights Reserved ICP13027032?", "2400? 12_? ? ? ?? LOFTER ? ? ??? ? ? ? VIP? ? ? ??? ? VIP ? ? ? ? ? ? ? ? ? LOFTER LOFTER ? LOFTER BOBO BoBo NBA ? ? ? ? ? ? > ?? > ? > 2400? 12 2015-09-22 07:05:00??: ?-? () 0 ??????5.03%?? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? 11??? ? ? ? ? ? ? ? ? ? ? ?5% ???????35????????????? ?? ? ?? ? ? 12????10009798.57?9543.16?9274.93?6947.35?6310.60?5222.92?2613.23?2274.20?1553.69?1517.15?1239.661169.4812??5.75 ???????? 918????????????????????????? ??921244 ? ????????????5????????????? 921??C?20?197.69?????5??? 10 250?2415?C?? ? ? ??????????????????????????????????????3d? ?????? ????????HVAC? ? 2015??5?329?????68??????? ?20141229??20149??????????3D??? ?3D? ??????20152?????????????200 ?????3D???? ???? ???100%?20147???????????????? -A6125?2015-2016EPS1.0?1.3?1.5???3D?6125 ??3D1H2015????? ? 2015??2013? ?????? ??1H2015??5.21?-2.94%?0.26?-20.83%0.35?-0.67%?????1H2015?2013? ?????? ?23.77%?-0.04pct????????30.18%45.85%22.75%15.13%14.24%?+2.18pct?+1.14pct+0.19pct+0.90pct-19.23pct??????20.01%?+1.48pct? ?68.69%0.69???? ?????????????????5?6???2500??????? ?????? ?? A ???????????2015???1323??2.54% ??? ?6000???????20143909 ?? ???????? ? ? ? ?????? ????85%??????????????????2015/16/17EPS0.19/0.23/0.36PE180/150/97?? ????? ?? 2015???71476.66?0.32%5035.58??34.41% ? 1???????? 2015???71476.66?0.32%5035.58??34.41%?????????1441 ??????????????????????? 2? ?????400?????????2025??4.0??? 3???? ????????????1400?CAP1400DN450?CAP1400???? ????????????????? ?????????????????? 4??????? 20157???????????????? ????????18937???????????????????????????225.10%?5.5?9781/ 5??????????? 2015615???????????????25.67/??151453 ???780??13.2%????????1344??22.7% ?????????????????? ???11.12???? 6? ??????2025??????????????2015-2017EPS0.29?0.52?0.7166??37??26??? 7??? ???+???? ? ??? ?2014?????????9.1720157???1.61??2014?23.48% ?? ????51%???????20%?19%?10%????????????? ?????2015? ??????????????????????????????52015? ???? ?2014????51%?2.30????????2015-2019?0.411.31.31.3 ???? ??? 2014?40%?11%??2015611%??40%?????????16.46% ???20152.130.852.982015/16/17EPS0.150.210.30????13.00? ???????? ????????????????2010????????????????2010-2013??LNG?????????????2012-2013?LNG????2014???????2016????????????? ????40?30????PE??LNG????690???LNG???690?????????????10-20??? ??????? ? ??53??? \"\" ?? ? [] ? ?? (10-23 00:52) [] ? ?? (10-23 00:30) [] 1.5% ? (10-23 00:00) [] 18?GDP ?7?? (10-22 23:09) [] ???? ??? (10-22 23:02) [] 7 ? (10-22 23:02) [] 25% ??2.68% (10-22 22:59) [] ???A (10-22 22:59) [] A (10-22 22:58) [] 9?? (10-22 22:47) [] ????10.22 (10-22 22:38) [] 9? (10-22 22:16) [] ??? (10-22 22:16) [] ?????? (10-22 22:13) [] ?? 3? (10-22 22:08) [] ????? (10-22 22:00) [] ?? (10-22 21:49) [] ?4.6% (10-22 21:44) [] ?? (10-22 21:44) [] ?26.5? (10-22 21:43) [] ???? (10-22 21:42) [] ???64% (10-22 21:36) [] ? ? (10-22 21:33) [] ?QE???? (10-22 21:26) [] ????? (10-22 21:24) [] ?? 130 (10-22 21:22) [] ? ?? (10-22 21:13) [] ??? (10-22 21:10) [] ??64% (10-22 21:06) [] ?? 130 (10-22 21:03) [] ???? (10-22 20:57) [] 12??? (10-22 20:51) [] ???? (10-22 20:50) [] ???? (10-22 20:50) [] ??? (10-22 20:49) [] ? ? (10-22 20:49) [] ??? Ravio?? (10-22 20:49) [] ?? (10-22 20:48) [] ??21? (10-22 20:48) [] ?? (10-22 20:36) 15???? ?? ??? ??? ?? ? ? \"??\" ?MLF? ??? ? ?????? ? ?6000 ???1200 ?9??? ??? ?? ?? ?? ??? ??1100:130 ???", " ? ? ? ? ? ? ? ?? ?? ?? ? ?? | ? ?? ?? ? ? ?? ? | ? ??? ?? --> ? 2015LNG : 2015-11-24/2015-11-26 : ? ??: ??: ??? ??? ?? ?? ???? ? ? ?????? ?? ???? ??? ?? ? ?????? ??? ?? ????? ??? ? ?(2345?) 20151122-23 20151122-23 20151124-26 20151126(?1430) ? ??????12%?????LNG?LNG???,2011LNG??9.4%LNG28%??LNG???????(IEA)2015???2?7900??2015LNG3100? ?? ChinaLng 2015LNG ????SIPPE2015????????????????????????????????????????????API?????LMF?SAMSUNG?Youngkook?Oilgear?RosneftOil?NIOC?NIGC?National Petrochemical Company?NIORDC?Business Group?Pietro Fiorentini?Saudi Arabian Oil Co?SULZER?Total?Fanavaran?Tencate?Intra Corporation?SANGBONG Corporation Intra Corporation?Armacel? Raymonds?SHAIC?Haward?SilcoTek?Control Flow?RUSNANO?ECOIN?FNS PLUS?Kish Spanta????????????????????3500???52?25????60?????? ???????????????????????20 ?ChinaLng ChinaLng? ??930%2015??900??30000VIP600 ChinaLng??? ??? (CPS)??(CCPIT)????(AIEXPO)???? ChinaLng? 10040??5??40 ChinaLng?? ?50?????? 500??? ChinaLng??? ?VIP??? ChinaLng???????ChinaLng???VIP??? ?? ????? ? .?? ??? ? ??,??? ? ?????? ????GPS??MP3 ?????? ?? ???? ??\\???? ?????? LNG LNG?? ?? : ??20000 ? 15000 ?13000 11000 ?9000 6000 3000 ?1500 23000/ 20000/ ?30000/ ?15000/ 10,000/ ??20000/ 600/ m2 ????? ??? ?15?A?1309-1310 +86-21-36411820 +86-21-65282319 ? www.chinalng-expo.com 2433854269@qq.com ? 15800887941 200441 ??? ? ? >> 2015? 2015?... 2015 ??? >> 2014??... 2014-9-27 2014TnPM... 2014-9-20 2014... 2014-9-19 2014??... 2014-9-13 2014????... 2014-9-3 ... 2014-8-28 ?... 2014-8-28 ??? | | | ? | 010-84885237,84885243 010-5286723264697972 ?010-84885391 webmail@cpcia.org.cn ????416? 100723 ???? ????? ", " ?? > > > ??? ??? 0310, 2015 ???????????????? ??? ?????????????? ??????????? ?????? ??????????????? ??????? 200?????66??????????????????????? ??????? ???60%?? ?????????????? ?? ?: ?: http://finance.cnr.cn/txcj/20150225/t20150225_517801884.shtml ?? ?? ", " ? ? ? ? ? ? ? 24??? ????? | 4%????? | ????? | ?? | ?? | ??(BC)??? | ??? | ??? | ??? | ???? | ????? | 4%????? | ????? | ?? | ?? | ??(BC)??? | ??? | ??? | ??? | ???? | ? > ? ???? ??FX168 ? ?2015-11-04 ??PBF Energy????Delaware??????(113)???? ?PBF Energy??2013???? PBFThomas OMalley????????? ?20156??115.38??113?????????????3???? PBF??Philadelphia Energy Solutions??DeltaMonroe Energy???2013? Philadelphia Energy Solutions?11???172015??100???(EIA)?Philadelphia Energy Solutions?201517???????? ???? ? http://weibo.com/oilone/ 24? ?????... ??... ?? ???... ? ? ???60 812????... ? ? | |B ?? [] 0 0 ?? ?91624?????[] 010-83686528010-83686528-8003 :news@oilone.cn Copyright 2012 oilone.org. All Rights Reserved ?? ICP12033856?-1 11010102000532? ???????? ", " ? LOFTER BOBO NBA?????? > > ? ?? 2015-10-20 09:04:39??: 1 201511?????????????????2015? 201511?????????????????2015???????? ????????VOC1800?????????3-15?????????11.1 ?????200411???()();2004??? ????????????VOC?60%70%????? ???????????2015???????? 2015????????????????90???16??????????????????????????SGS?TUV???(600031,?)??????????? ???????????? ????2015-2020?:http://bg.qianzhan.com/report/detail/56dafc80ec644221.html ?? ?? 1 ? ? 48? ? ?? 2015/09/27 ? ??? 2015/07/08 ? 2014/12/17 ?? 2014/08/20 ?? 2014/07/17 BoBo ??? ?? 228 ??? ?? 928 2234 ?? 294 ?? 1 | 1? p8663111 p8663111 [??] 2015-10-30 14:08:20 ???????????? [0] ? ? >> 1 | 1? | ? | ? ? ? ? ?? ?? ? 140? 29.7 ??1001403 ? ? ?? ?? ?? ?? ??? ?? ?... ? ? ? ? ? ? ? ? ?? ? ? 89 89 165 165 89? 89? ??? ?3 ??38??????? ??????? 10 ? ? ?? ?? ?? ?? ? ? ??? ??? ?? ?? ? ?? ? ?? 4000 ??? ?? ? ? ? ? : ?? 3D ?? ? : ?? 3D ?? 3 115 : ?? 3D ?? 115 1283726310 ? 2580207 3236649140? 29.7 488694? 566341????? 655047?? 749029??1001403 848700?? ?/? ??? ? ?? ??? ??? ? NBA CBA ? ? ? ? ? ? ? ? ? ? ? ? ? /? ? ? / ? ? ? ? ? 1997-2015 ?? About NetEase | ? | ? | ?? | ? | ?? | ? | | ???? | ?? ", " ?? ? ? IT ?? ? ?? ??? ??? ??? ?10??>> ??? ??? ??-15?-11D-16>> ()? ??? 2016 ad ? ???? 1880 20:55 ?? ? ???? 20:55 ???? ???? 20:41 ???? 20:41 ?? 20:41 ?:???4 20:34 ?? 20:20 5?????? 20:14 ???? 1880 20:55 ?? ? ???? 20:55 ???? ???? 20:41 ???? 20:41 ?? 20:41 ?:???4 20:34 ?? 20:20 5?????? 20:14 >?>?> ???? 1880 2015-11-04 20:55:01 ?? 114 (??)114???20154??5?5?44(?)?11??() ?5431112971880??127 20154?????5558???????? ??????????????? 114??????()?3228???82?358????158?30 ???????????????????????????????????? ?????????? ????????????????????? ????????????? ????????????????() ??????????????? ? ??? ?? ??10??10 ? ? [] 0 [] 0 [?] ? 0 [?] ? 0 [] 0 [] 0 [] 0 [] 0 [] 0 370 ?180??370 ?180?? ?????? ?????????? ?? ?? ??? ????? ?? 17? ??17? ?? ? ???? ??? ?(0?0?) ???... ? QQ ???? ??? C919 ?? ?? ? ?? ? ???? ??? ? ???? ??? ? ?? ? ? ? ?? ?10??? ?10? ????? ????? ?15???15?? ???? 24? 1 ??13%? ? 2 ? ?( 3 ?:\"??\" ?( 4 ? ?? 5 ??:??? ? 6 ? ?? 7 :CIA?? 8 C919 9 ?? 10 ????15 ?? | ? | ? | ? | ?? | ??? | 2012001????()147?ICP11013708 110402440030 - ?? ? - ", " logoUPrivacy and cookiesJobsDatingOffersShopPuzzlesInvestor SubscribeRegisterLog in Telegraph.co.uk Search - enhanced by OpenText Monday 16 November 2015 Home Video News World Sport Finance Comment Culture Travel Life Women Fashion Luxury Tech Cars Film TV USA Asia China Europe Middle East Australasia Africa South America Central Asia KCL Big Question Expat Honduras France Francois Hollande Germany Angela Merkel Russia Vladimir Putin Greece Spain Italy Home News World News Europe France French air strikes will make little difference, warns Jeremy Corbyn Labour leader says the only way to deal with Isil threat is through a political settlement to Syria's long-running civil war Email El Corbyno: non-drinker, non-smoker, vegetarian Jeremy Corbyn doubts air strikes will make any difference in fight against Isil Photo: Nick Edwards/The Telegraph Michael Wilkinson By Michael Wilkinson, Political Correspondent 9:48AM GMT 16 Nov 2015 Follow French air strikes against Isil targets in Syria will make little difference, Labour leader Jeremy Corbyn has warned. Following Friday's terror attacks in Paris, French warplanes mounted a series of strikes against the Isil - also referred to as Islamic State or Isis - stronghold of Raqqa. \"I am not saying 'sit round the table with Isis', I am saying bring about a political settlement in Syria which will help then to bring some kind of unity government.\" Jeremy Corbyn However Mr Corbyn said that the only way to deal with the threat from Isil was through a political settlement to Syria's long-running civil war. \"Does the bombing change it Probably not. The idea has to be surely a political settlement in Syria,\" he told ITV1's Lorraine programme. He added: \"We have to be careful. One war doesn't necessarily bring about peace, it often can bring yet more conflicts, more mayhem and more loss.\" The Labour leader criticised the media for focusing on Paris while at the same time giving \"hardly any publicity\" to an Isil attack in Beirut last week which killed more than 40 people or a bomb exploding at a peace rally in Turkey last month which killed 97 people. He said: \"I think first of all what happened in Paris was appalling. This is a vibrant, multi-cultural city, young people of all faiths, and older people as well, all there together and cultures and this terrible thing happened. Likewise, which didn't unfortunately get hardly any publicity, was a bombing in Beirut last week or the killing in Turkey and I think our media needs to be able to report things that happened outside Europe as well as inside Europe. A life is a life.\" Mr Corbyn acknowledged that achieving a settlement in Syria would be \"very difficult\" but said that international talks over the weekend appeared to have made some progress. \"I am not saying 'sit round the table with Isis', I am saying bring about a political settlement in Syria which will help then to bring some kind of unity government - technical government - in Syria,\" he said. The Labour leader said that the rise of Isil had raised some \"very big questions\" as to who was behind the jihadist group. \"Who is funding Isis Who is arming Isis Who is providing safe havens for Isis You have to ask questions about the arms that everyone has sold in the region, the role of Saudi Arabia in this. I think there are some very big questions,\" he said. While Mr Corbyn said that the attacks in Paris were \"appalling\", he criticised the British media for giving little coverage to recent terrorist attacks in Turkey and Lebanon. \"I think our media needs to be able to report things that happen outside Europe as well as inside Europe. A life is a life,\" he said. Follow @telegraphnews Email Promoted stories What's the Most Popular Baby Name in Your State AllAnalytics TED Talks Live Continues With \"War & Peace\" at the TheaterMania Hollande says 'terrorists' at Paris Bataclan hall killed Nikkei Asian Review Striking the Balance Between Information CollaboristaBlog Citi: English Proficiency Ensures Consistency Why English Matters by TOEIC 9 Tile Ideas To Upgrade Your Home Dwell Stunning Moments of Discovery Through Travel CNN Top 5 Reasons The Philippines Is A Great Base Century Spire Offices on INQUIRER.net How Bad Were the First World War Generals Dummies.com Recommended by Telegraph Sponsored Maggie Smith: major roles The brotherhood that inspired The Last Panthers Seven habits to help you age happily Recommended by Top news galleries Gruesome food: 20 of the world's most bizarre dishes Gruesome food: 20 of the world's most bizarre dishes As I'm A Celebrity... Get Me Out of Here! returns, we look at 20 of the strangest culinary delicacies from around the world Charles and Camilla down under Prince Charles (R) and his wife Camilla, Duchess of Duchess, wave farewell as they depart Australia in Perth In pics: Duchess of Cornwall and Prince of Wales tour of New Zealand and Australia Pictures of the day Skipper the adventure dog goes for a paddle with his owner Jon Taylor on the canal in Wheaton Aston, Staffordshire A paddling doggy, a London sunset and Paris in mourning Best looks from the weekend Best looks from the weekend Jessica Alba and Gwen Stefani bring glamour to the Baby 2 Baby Gala, while other film stars flock to LAs annual Governors Ball 25 great closing lines in films Claude Rains, Paul Henreid, Humphrey Bogart, Ingrid Bergman in 'Casablanca' . It had its premiere 70 years ago - on 26 November 1942 Film Martin Chilton looks at some great final lines to movies Comments Rita Ora: Eurovision flop to X Factor New 'The Voice' judge Rita Ora with Ricky Wilson Music Ahead of tonight's X Factor results, here's the story of Rita Ora's unlikely rise Comments #PeaceForParis A peace vigil in Kathmandu In pics: French cartoonist Jean Jullien's poignant drawing Paris terror attacks in pictures In pics: Images from a night of carnage in France's capital as scores are killed and injured in Paris The 10 biggest doping scandals in sport - is the Russian drugs expose top After Russia was accused of a state-sanctioned drugs programme in athletics, Ben Rumsby assesses the biggest doping scandals to hit sport Comments David Beckham Unicef match: Sports and celebrities including Sir Alex Ferguson and Ronaldinho turn out at Old Trafford The stars were out for the 'Match for Children' on Saturday Comments Ads by Google British Expat In China Avoid Losing 55% Of 70k+ Pensions Download A Free Expat Pension Guide your.expatpensionreview.com Expat Living In China 50k-1m Or 500+ Regular Savings Review Your Interest Rates Today! expatsavingsreview.com ?0,?$200 ?,4?,?200,0 0,T+0??,,? www.hx9999.com Latest Video Paris attacks: Anonymous declares war on Isil Anonymous declares war on Isil people have created a mural in Port de Solferino, Paris, under the words: WATCH LIVE Live: Paris marks minute silence Paris attacks: Girlfriend's moving tribute to British man killed at Bataclan theatre Girlfriend's moving tribute to British vicitm Mariesha Payne (L) and Christine Tadhope (R) (APTN) Survivors hid in cellar to escape gunmen Paris attacks: Sky News presenter Kay Burley reports from cafe following panic from false alarm News presenter during moment of panic BBC's Nick Robinson to have tumour removed BBC Radio 4 pips interrupted by person saying 's***' More from the web Profit from property without purchasing Profit from property without purchasing Rise in property prices, especially in London, can offer exciting opportunities for investors View More from the web The future of online learning The future of online learning Fast, fun and fully interactive language courses available online. View More from the web Promoted stories The French and Indian War The French and Indian War (Dummies.com) Stormfall: Free and Addicting strategy game! Prepare for war! Stormfall: Free and Addicting strategy game! Prepare for war! (Stormfall) How to Use the SAS Pi Constant How to Use the SAS Pi Constant (AllAnalytics) Boston Children's Theatre Offers Theater Workshop to Military Families Boston Children's Theatre Offers Theater Workshop to Military Families (TheaterMania) Recommended by SPONSORED FEATURES Telegraph Jobs Search for a new job and get help with your career today View Telegraph Jobs Why CV action words matter and how to use them View Telegraph Courses Discover a new language experience View Careers Advice What is your business worth View Back to top HOME News UK News Politics Long Reads Wikileaks Jobs World News Europe USA China Royal Family News Celebrity news Dating Finance Education Defence Weird News Editor's Choice Financial Services Pictures Video Matt Alex Comment Blogs Crossword Contact us Privacy and Cookies Advertising Fantasy Football Tickets Announcements Reader Prints Follow Us Apps Epaper Expat Promotions Subscriber Syndication Copyright of Telegraph Media Group Limited 2015 Terms and Conditions Today's News Archive Style Book Weather Forecast ", " IEA Logo About News Publications Topics Countries Statistics EventsWorkshopsSpeechesNewslettersIEA in the newsMultimedia International Energy Agency > Newsroom & events > IEA journal > Issue 7 Chinese national oil companies' investments: going global for energy A CNOOC facility in China. Investment abroad by the country's NOCs can bring home technologies needed to tap unconventional reserves. The IEA tracks Chinese oil firms growing overseas investments, finding they are driven by commercial interests but may affect foreign policy 3 November 2014 Chinese national oil companies (NOCs) are the new big players on the global energy scene. In the last three years, they spent a total of USD 73 billion in upstream investments and now operate in more than 40 countries to control about 7% of worldwide crude oil output, raising alarms in some quarters about supply security and price. To address those concerns, the IEA investigated the NOCs spending, producing two reports. The first, which in 2011 quantified the size and growth of investments, determined that the Chinese NOCs had been responsible for 61% of acquisitions by all NOCs in 2009. It also found that the Chinese companies overseas investments had, for the most part, increased global oil and gas supplies for all importers. A follow-up report this year confirmed the 2011 findings, adding that combined overseas oil and gas production by Chinese companies totalled 2.5 million barrels per day (mb/d), reflecting a geographic diversification of assets. A growing degree of independence The IEA studies, Overseas Investments by Chinas National Oil Companies: Assessing the Drivers and Impacts and Update on Overseas Investments by Chinas Oil Companies, did not find cause to believe that the Chinese NOCs operate under the direct instructions of, or in close co-ordination with, the central government. Instead, the studies determined that the companies, especially the big three China National Petroleum Corporation (CNPC), parent company of PetroChina; China Petroleum & Chemical Corporation (Sinopec Group); and China National Offshore Oil Corporation (CNOOC) had benefitted from three decades of economic reforms to gain a great deal of power in relation to the government. Chinas soaring domestic energy consumption has increased the NOCs financial and economic impact, giving them the means to lobby for greater influence. With domestic production stalled at just over 4 mb/d for the past two years, imports meet 59% of Chinese demand which grew 3% last year and is expected to overtake that of the United States in 2030. While the NOCs remain primarily owned by the state, the studies found that they have carved out significant operational and investment independence from the government because of their historical associations with former ministries; top company officials high ranks within the Communist Party; the fragmented and decentralised nature of Chinese energy governance structure; and the companies much larger sizes and lobbying power relative to the government agencies tasked with overseeing them. No evidence emerged from the IEA research that the Chinese government requires the companies to ship back overseas production to China, as some critics have suggested. Instead, the studies found, NOCs decisions about equity oils marketing are mainly based on commercial considerations, the production-sharing contracts involving the investments, or both. The IEA report (2011) disproved the common misconception that Chinas NOCs were acting overseas under the instruction of the Chinese government,? the 2014 study says, adding that further research conducted for this updated publication has uncovered no evidence to suggest that the Chinese government imposes a quota on the NOCs regarding the amount of their overseas oil that they must ship to China?. Investments in countries near and far Two big changes the IEA detected between the studies are the companies new emphasis on investment in unconventional oil and gas, and a reorientation from high-risk regions to areas with more stable geopolitics. The recalibration has come as countries in the Americas and Australia have been more welcoming of Chinese investment, while investments in other regions have had less success amid rising nationalism and political uncertainty. The first significant setback for Chinese investment was in Sudan. Chinese NOCs are the biggest investors in South Sudans oil industry, but the investment was originally made before the new nation came into existence. Sudan was among the very first countries to attract Chinese interest, with activities dating back to 1995. That involvement forced China to weather international scrutiny during the Darfur crisis, but by 2010, Chinese equity production in the country, most of whose oil fields are in the south, was 210 000 barrels per day (kb/d). After South Sudans 2011 independence, oil transport negotiations deadlocked, and by early 2012, nearly 900 Chinese-operated wells were shut or forced to reduce production. South Sudan expelled President Liu Yingcai of the Chinese-Malaysian oil consortium Petrodar for non-cooperation?. By the end of 2013, CNPC and Sinopec reported oil production of only 84 kb/d in South Sudan and Sudan. Unrest in South Sudan has not gone away, with intermittent fighting this year. But contrary to the position it adopted during the so-called Arab Spring and in Syria in particular, the Chinese government has sought to be a major mediator among the various factions. Similarly, unrest in Iraq continues to threaten Chinese NOCs combined 472 kb/d production entitlement 25% of all Chinese overseas oil output. China has long viewed Iraq as a replacement for reduced flow from Iran. From 2007 the NOCs invested no less than USD 14 billion in Iranian oil and gas fields, making the country Chinas third-largest oil supplier in 2010 and 2011, with 11% of total imports. But the effects of international sanctions dropped Iran to sixth place as of the end of 2013, just after Iraq and well behind top-ranked Saudi Arabia, which provides about half of all imports. Libya also has been a deep disappointment, with fighting there cutting exports to China by more than one-third, to 0.8% of total imports in 2013. The government also had to arrange an emergency plan to evacuate 35 000 Chinese nationals from the country during the overthrow of the Qaddafi regime, and it subsequently has been involved in complex discussions concerning its pre-2011 contracts. Then there is Syria, where Chinese companies had a total equity production of 84 kb/d, which fell to below 53 kb/d in 2011. By the end of 2013 only the small NOC Sinochem was still producing oil there, about 2.5 kb/d. Security challenges have affected NOCs operations in Myanmar and Nigeria and potentially in Central Asia, where the competitive edge held from early entry is threatened by growing ethnic tensions and terrorist threats in the some of the five countries through which the Central Asia-China pipelines run. More trouble may follow, as CNPC successfully bid in 2012 to be among the first companies to explore for oil and gas in Afghanistan. Not all of the NOCs setbacks have been the result of political unrest: some of their African investments, including in Niger and Chad, are at risk of reversal of contracts. The companies have had greater success in Russia, Saudi Arabia and Central Asian countries such as Turkmenistan and Kazakhstan, where energy deals have been combined with other investment. Sinopec entered the refining industry in Saudi Arabia by investing USD 4.5 billion in the companys first international downstream deal. A loan-for-gas deal with Turkmenistan secured 25 billion cubic metres (bcm) of gas supply, bringing total supply capacity to 65 bcm per year. Increased co-operation with Western firms The uneven results of investment in high-risk regions have led to a shift in Chinese investment to more stable regions as well as closer co-operation and co-ordination with independent oil companies of Western countries. Every Chinese NOC has expanded its global production portfolio significantly, particularly in North America and Australia, usually through direct acquisition when possible. Along with smaller Chinese companies, the NOCs invested USD 38 billion in 2013 in global upstream oil and gas mergers and acquisitions, up from USD 15 billion in 2012 and USD 20 billion in 2011. This shift not only has smoothed investments and purchases, according to the IEA report this year, but also has furthered Chinas mastery of techniques it hopes to use for domestic production. Chinas National Energy Administration addressed research,development and demonstration projects in 2012s 12th Five-Year Plan for Energy Technology, which calls for domestic development of shale gas, heavy oil and other unconventional energy sources. The Ministry of Land and Resources estimates that domestic shale gas reserves exceed the United States, and expertise from NOCs investments in foreign companies could help develop those reserves. Global majors including Shell, ConocoPhillips, ENI and Total have co-operation accords with NOCs to conduct seismic surveys, exploration, and joint research to develop shale gas and oil blocks in China. But the new IEA study notes the significant differences between US and Chinese reserves, which will mean a potentially challenging adaptation of North American drilling technologies to Chinas geological specifications. Commercial influences on foreign policy Given 21 years of surging investment in countries around the world, it was inevitable that Chinese NOCs would run into challenges and generate concerns. The IEA studies found that the companies have relied heavily on Chinese government support in the Middle East and in Sudan and South Sudan, raising two questions: will Chinas commercial interests help shape the countrys foreign policy in these regions, and to what extent does the existence of substantial energy and other commercial investments already influence Chinas diplomatic decisions Today, perhaps the greatest challenge facing the NOCs is that their business interests are highly dependent on the evolution of Chinese foreign policy. But the NOCs are not waiting as they charge ahead with overseas expansions and keep the pressure on both themselves and their government to garner more experience in their dealings in the international energy arena. IEA keeps monitoring all NOCs investments Given the potential effect on global energy security and engagement, two of the Agencys principal concerns, the IEA carefully monitors ongoing investment by all NOCs around the world. While the Chinese companies overseas investments may have originated as primarily commercial moves, recent events have politicised many of them, and the IEA is among many observers watching how the Chinese NOCs and their government find ways to work with each other and other players in the global energy sector to reconcile these political and security issues. This article by former IEA China Programme Officer Julie Jiang, originally appeared in IEA Energy: The Journal of the International Energy Agency. Julie Jiang left the IEA in 2014 after five years, during which she co-ordinated bilateral co-operation projects with China and co-wrote four publications. Prior to joining the IEA, she was a manager for the US Foreign Commercial Services programme in China. Both Overseas Investments by Chinas National Oil Companies: Assessing the Drivers and Impacts and Update on Overseas Investments by Chinas Oil Companies are available for free; click on the title of each to download it. Through the end of 2014, the IEA regularly produced IEA Energy, but analysis and views contained in the journal are those of individual IEA analysts and not necessarily those of the IEA Secretariat or IEA member countries, and are not to be construed as advice on any specific issue or situation. Click here to view past issues of IEA Energy. Browse IEA news by topic: China Oil Global Engagement inShare88 Tweet Recent News Executive Director meets with Australian Prime Minister IEA releases Oil Market Report for November IEA hails launch of Canadian CO2 storage project, first to cut emissions from oil sands Free IEA headline statistics aim to widen understanding of energy production and use IEA updates carbon emissions data ahead of climate change negotiations, revealing recent trends TwitterFacebookLinkedInYouTubeGooglePlus About us Delegates Outlook History Members Contact us Executive office Jobs Training Technology Platform Topics Carbon capture Climate change Coal Electricity Energy efficiency Energy poverty Energy security Energy technology Natural gas Nuclear Oil Renewables Transport Countries Member countries Non-member countries News Events IEA in the news Multimedia Statistics Data services Statistics by country Policies & Measures Database Contact us Terms and Conditions, Use and Copyright Sitemap Delegates 2015 OECD/IEA", " logoUPrivacy and cookiesJobsDatingOffersShopPuzzlesInvestor SubscribeRegisterLog in Telegraph.co.uk Search - enhanced by OpenText Sunday 15 November 2015 Home Video News World Sport Finance Comment Culture Travel Life Women Fashion Luxury Tech Cars Film TV Home Archive 01 February 2013 Archive News | Finance | Motoring | Sport | Travel | Food and Drink | Gardening | Education | Technology | Culture | Comment | Sponsored | Promotions | Women News Egypt protesters attack Mohammed Morsi's palace Gay marriage could cost Conservatives power, poll suggests David Cameron told to honour defence promise Jo Swinson plans crackdown on scam mail Service chiefs deserve clarity on the defence budget Eastleight by-election is a wake-up call, rival warns David Cameron Major Sir Michael Parker interview: Your Majesty, I said, its all going terribly wrong David Cameron's schoolfriend says his rival would be 'a great prime minister' Hillary Clinton steps down as US Secretary of State Jenkinss plea to Darling deserves a firm rebuff Dispatch: Inside Timbuktu, the city freed from its al-Qaeda tormentors How serious is the conspiracy to bring down Prime Minister David Cameron Sorry, but Adam Afriyie - Britains Barack Obama - never had a hope Hillary Clinton: timeline of a political life The Lib Dems turn their backs on a founding father of democratic voting reform From Somerset to Sellafield: it's a thumbs-down to storing nuclear waste Israel 'considering further air strikes on Syria' Missing Irish tycoon found 'ragged, lost with an insult carved on his head' Have some sympathy for our glum French friends Holding a candle in the Temple Francois Hollande to remove word 'race' from French constitution Two arrested after teenager's body found burning in alleyway Super Bowl Ravens vs 49ers: how politics took over the Greatest Show on Earth Ed Koch Peter Beales Mystery acid attack leaves Victoria's Secret store assistant scarred for life Animal pictures of the week: 1 February 2013 Mid Staffs: Ignoring Francis would 'betray' patients, says charity Suicide bomb outside US embassy in Ankara Hague's 'disappointment' as Argentina pulls out of Falklands talks The week in pictures: 1 February 2013 Stalingrad anniversary: 70 years on, Russian city still gives up its WWII dead Hispanics to overtake whites in California next year Is Iran's space monkey a fake 'Robin Hood' couple could lose Kenyan holiday home to repay cannabis profits The BBC's phantom foot fetishist seems to have struck again Sir Andrew Motion: 'Count stars to help fight light pollution' Horse meat burger expert appointed to Ireland's equestrian sport body The view from the top of the Shard: interactive panorama Burglary victims mission to track stolen phone becomes online hit Female police officer arrested in Plebgate row Crime maps allow public greater scrunity of offences on their doorstep Teacher 'demanded 6,500 not to have child expelled' David Cameron given a lecture on 'debt' and 'deficit' by top statistics official Family of teenager stabbed to death 'relieved' at murder convictions Truck carrying fireworks explodes causing road bridge to collapse in China MP calls for crackdown on lobbyists Alexander Lebedev's airline Red Wings suspended Reporter whose evidence convicted April Casburn says police officer was 'sacrificed' by News International Blame your council tax hike on Jimmy Savile, says police leader Former policeman plans to quiz ex-Libyan spy chief over Yvonne Fletcher's murder Joe the orphaned baby elephant 'wasting away' after mother was poisoned 'Surreal and hilarious': Armando Iannucci receives an OBE Entrepreneur sells 8 million cans of scented fresh air in smoggy China Fireworks explosion kills 26 in China Japan 'may revisit Second World War statement' Thieves abandon toddlers in the street half a mile after stealing mothers car Zookeeper dressed as zebra makes a break for freedom in Japan Boris Johnson opens The View From The Shard viewing deck in London New York mayor Ed Koch in his own words Former New York mayor Ed Koch dies Man overjoyed at escaping prison jailed for kissing stranger in celebration Nappy wars in Norway: supermarkets lure eastern Europeans Zimbabwe 'would be shut down if it was a company' David Cameron pledges to keep spending 'billions in overseas aid' Australian DJs behind Kate hospital hoax call will not face charges - CPS Explosion at headquarters of Mexico state oil company David Cameron backs George Osborne amid rumours of plot to oust him, Downing Street says Vegetable oil fallen off a ship may be to blame for bird deaths Pictures of the day: 1 February 2013 Sabotage suspected at toppled wind turbine as second is brought down People who abuse troops must face tougher punishments, Labour says 'Gay' dog on death row saved Whooping cough cases up tenfold as another baby dies Senior Met Police detective jailed for 15 months over corrupt payments Marion Cotillard wins Harvard's Hasty Pudding David Cameron: Police probe into 'plebgate' must be thorough Former RAF radar station with bunker and helipad for sale on eBay 'All our women look like Kate Middleton', Romanian ad campaign claims Householders up in arms over 20-a-year garden-gate levy Man found dead at recycling plant after climbing into a bin MPs call for criminal inquiry into toxic hip implants Russian rocket plunges into Pacific Pussy Riot member sent to prison hospital Thousands of Cambodians gather to mourn Norodom Sihanouk Shard opening: first marriage proposal 800ft above the Capital Super Bowl: Americans to eat 1.23 billion chicken wings Ashcroft: EU referendum promise has done little to boost Tory support North Korea covers tunnel at nuclear test site Woman claims she lost eye to contact lens fungus infection US teacher suspended after racy Twitter photos Serving Met Police officer arrested over alleged corrupt payments Britain to bathe in winter sunshine but only for a day Iran stepping up support for Syria, Hillary Clinton warns US considers firmer action against Chinese cyber-espionage 'Zorbing' survivor speaks of 'fear' in friend's eyes before death Argentina pulls out of Falklands talks Sharia divorces could be allowed after legal ruling Thousands of women with advanced ovarian cancer left 'frustrated' after Nice denies them drug EastEnders star Leslie Grantham blames wife for breakdown of his marriage Whatever happened to Antonia de Sancha - the kiss-and-tell lover who brought down David Mellor Why the Duchess of Cornwall's nightie rules out queenly ambitions Liam Fox denies claims that 'plotter' Adam Afriyie is his stalking horse Kim jong-un smokes cigarette while touring hospital First butterflies, now moths decline Older pregnant women should be induced at an earlier stage to reduce stillbirths: research Britain's bulwark against fundamentalism - Songs of Praise Military search-and-rescue helicopter overhaul 'could put lives at risk' Richard Briers: The Good Life star battling emphysema Richard Dawkins attacks 'irrelevant' religion in Rowan Williams debate Assisted suicide: GMC signals doctors safe to provide medical records to Dignitas patients Sperm donors can seek more parental rights Armenian presidential candidate shot ahead of election The night sky in February 2013 200 officers a year retire or resign to avoid disciplinary proceedings Hillary Clinton: Iran stepping up support for Syria Back to top Finance Afren shares leap as Sinopec said to eye $1bn assets Wall Street closes in on record high as FTSE 100 surges IMF hits Argentina with first-ever censure of a country Britons pile into shares to profit from 'great rotation' A four-day week could work in Britain too, says psychologist Traders sell-off New World Oil and Gas World economies need more than new year cheer to build on Iberia workers to hold five-day strike UK manufacturing expands for second month Britain is 'broadband leader' thanks to BT cash, boss Ian Livingston claims Britain's Truphone wins backing from Roman Abramovich UK factories avoid European slowdown IAG to press ahead with Iberia cuts Swap scheme 10m threshold could block billions of pounds of claims, says experts Hilton backs e-visas to open door to China 'Bankruptcy lite' is up 7pc in a year How I made a years net salary in a month Russia's Rosneft disappoints with fourth quarter profits of 1.2bn Barclays boss waives bonus amid fresh questions over Qatar Barclays boss Antony Jenkins waives bonus China's Geely saves London cab maker Manganese Bronze Why David Beckham can afford to give away a 3.4m salary Rupert Murdoch to spend billions on video rights Qinetiq secures 1bn contract with the MoD US creates more jobs than expected, eases growth fears 40,000 cost of credit cards Are you being penny wise by shopping in pound shops London Metal Exchange loses its only woman trader Exxon profits hit five-year high Fungus hits Tate & Lyle profits Barclays: the Qatar Question and the Companies Act 'This Government is committed to helping first-time buyers' Pensioners face cuts on fuel allowances, bus passes and TV licences How the Bank of Mum and Dad has expanded Dutch state nationalises SNS Reaal bank 'Santander failed to pay interest on my account for four years' Airline compensation: What are your rights Taxpayers who missed the self-assessment deadline can still avoid 100 penalty HSBC completes 5.8bn sale of Ping An stake Making money: Five life-changing finds from a walk in the wild FTSE 100 post strong start to February Chinese firm Geely saves London taxi cab maker Manganese Bronze The world's best private islands for sale Tax blow for holiday home owners BT beats forecasts, helped by high-speed broadband rollout and TV push Is there any hope for first-time buyers China manufacturing expands in Janaury Swap mis-selling victims: The restaurateur, the electrical retailer and the shop owner 'Ban fees to stop lenders profiting from company failures' Career coach: Do you really need to go to university City Diary: A loan by any other name at the OFT, and for 8m Questor share tip: Cranswick brings home the bacon Questor share tip: Royal Dutch Shell a hold after tough fourth quarter Barclays investigated over claims it lent Qatar money to invest in itself UK lags Germany and France on Chinese investment Swap mis-selling and the dark heart of the City Banks face 10bn bill over swaps mis-selling scandal Interactive graphic: FTSE 100 enjoys best January since 1989 Back to top Motoring The world's best performance cars What car for a fisherman Toyota's GT86 convertible concept car Mazda6 review Back to top Sport Dundee United v Rangers: Ally McCoist tries to take heat out of Cup clash Roberto Mancini hopes Europe distracts Manchester United from title race Ryder Cup 2013: captain's picks key to Paul McGinley's game plan against the Americans Baltimore Ravens linebacker Ray Lewis looks for fairy-tale end in Super Bowl but dark past still haunts him How Newcastle United put the accent on French in their battle for Premier League survival Leeds Rhinos 36 Hull 6: match report St Helens coach Nathan Brown to forget old friendships for a day as he eyes Huddersfield Giants scalp Reading striker Adam Le Fondre proud to silence his doubters Dan Cole's leading role on the road to redemption Scottish Cup fifth-round previews: Rangers and Celtic in action Former Liverpool goalkeeper Alexander Doni 'nearly died' after suffering heart attack while at Anfield Six Nations 2013: Wales need to reconnect with the lost heartland of the game at Pontypool Six Nations 2013: reformed tight-head prop Dan Cole fuels Englands championship hope QPR manager Harry Redknapp delivers suspect defence for deadline-day spree Manchester City v Liverpool: Daniel Sturridge sees signs of a telepathic understanding with Luis Suarez Alan Pardew's French connection could be gamble worth taking to revive Newcastle United's fortunes Wayne Rooney hands over penalty-taking duties to Manchester United team-mate Robin van Persie Arsne Wenger admits negative pressure has affected his Arsenal players this season Hurricane Fly still looks the one to beat in the Champion Hurdle at the Cheltenham Festival Six Nations 2013: England's road to the 2015 World Cup begins at Twickenham against Scotland Six Nations 2013: Scotland boosted by mellowing of former England forward Dean Ryan Six Nations 2013: revealing statistics will not shock Scotland, says interim coach Scott Johnson England v Scotland: Joe Launchbury aims to punch above his weight again in Six Nations opening game Six Nations 2013: history of Beattie clan suggests a rerun of 1983 and Scotland's last win at Twickenham England's women put faith in youth as 2013 Six Nations title defence begins against Scotland Chelsea interim manager Rafael Bentez is left frustrated by international break Peter Odemwingie directs his fire at West Bromwich Albion after QPR transfer debacle England Saxons 9 Scotland A 13: match report England v Scotland: Gavin Hastings says visitors must hurt England and try to win ugly in Six Nations opener Six Nations 2013: what became of Scotland's stars of 1983 Six Nations 2013: Sir Ian McGeechan looks at the tactics that will be used on the opening weekend England v Scotland: Stuart Lancaster's men must avoid sudden bust after boom that saw All Blacks defeated Six Nations 2013: England promise to handle great expectations in Calcutta Cup match against Scotland Cardiff Blues 10 London Irish 6: match report Six Nations 2013: Thierry Dusautoir's influence looms large for France ahead of Italy clash Six Nations 2013: Andrea Masi says Italy are aiming for two championship victories Paolo Di Canio considering his future as Swindon Town manager Six Nations 2013: Declan Kidney's Ireland break tradition and trust in youth Celtic new boy Tom Rogic on his 'X-Factor' big break So a Scotsman believes the English to be arrogant How outrageous! Alex Ferguson denies FA charge for comments made following Manchester United's draw with Tottenham French connection could be a gamble worth taking for Newcastle Desert Classic 2013: late surge eases Sergio Garcia's pain in Dubai Nicky Henderson looks for Cheltenham Festival clue from Captain Conan at Sandown Hurricane Fly still looks the one to beat in the Champion Hurdle Norwich City manager Chris Hughton hails the arrival of Luciano Becchio from Leeds United Six Nations 2013: let battle commence for the most-entertaining rugby competition on the planet Arsenal v Stoke City: match preview World Cup 2014: finals artwork through the years in pictures Manchester City v Liverpool: match preview West Bromwich Albion v Tottenham Hotspur: match preview Newcastle United v Chelsea: match preview Chelsea striker Fernando Torres left out of Spain squad for Uruguay friendly, while Swansea's Michu misses out Fulham v Manchester United: match preview Wigan Athletic v Southampton: match preview West Ham United v Swansea City: match preview Reading v Sunderland: match preview Everton v Aston Villa: match preview West Brom striker Peter Odemwingie dropped for Tottenham game following transfer deadline day farce Carl Froch IBF super-middleweight title defence with Mikkel Kessler to take place at 02 Arena on May 25 Six Nations 2013: Welsh hoping to cash in on Leigh Halfpenny 's speedy return from injury Queens Park Rangers v Norwich City: match preview West Ham United co-chairman David Sullivan calls agents 'scavengers' after 'deeply unpleasant' transfer window Sports pictures of the week: February 1, 2013 Manchester City manager Roberto Mancini vows to close gap on neighbours United at top of Premier League table British Basketball can now target Rio 2016 Olympics after receiving funding reprieve from UK Sport Manolo Saiz admits three Liberty Seguros-Wrth riders worked with Operation Puerto doctor Eufemiano Fuentes Six Nations 2013: Wales captain Sam Warburton confident of success despite worst run in nine years Reading failed in bid to sign Gylfi Sigurdsson from Tottenham on transfer deadline day Ferrari launch new Formula One car for 2013 F1 season as Stefano Domenicali demands flying start Six Nations 2013: England v Scotland Calcutta Cup Quiz Carl Froch and Floyd Mayweather a cut above on Telegraph Sport's quarterly pound-for-pound rankings ICC Women's Cricket World Cup 2013: last-ball agony for England as Sri Lanka claim dramatic win Italy v France: Thierry Dusautoir returns to French team for Six Nations opener in Rome Liverpool's Raheem Sterling charged with assault Arsene Wenger: signing Spain left-back Nacho Monreal vital for Arsenal after Kieran Gibbs injury Britain's Shelley Rudman wins world skeleton gold after blitzing her rivals in St Moritz David Beckham joins PSG French media hail arrival of 'David the Magnificent' Six Nations 2013: Stuart Lancaster aims to follow All Blacks model as her prepares for Scotland opener Manchester United defender Jonny Evans poised to return to action with Premier League leaders at Fulham Premier League January transfer deadline day: in pictures Manchester City manager Roberto Mancini 'sorry' for Mario Balotelli's exit to AC Milan West Indies embarassed for 70 as Australia claim for first ODI honours in Perth Phil Mickelson lips out on final hole at Phoenix Open as bid for a 59 agonisingly fails Leeds coach Brian McDermott signs ground-breaking new deal ahead of Super League opener Philippe Coutinho will prove a major success at Liverpool, insists fellow Brazilian Lucas Leiva Newcastle v Chelsea: Demba Ba will not be fazed by St James' Park fans, says Cesar Azpilicueta 'Unprofessional' Peter Odemwingie told to focus on West Bromwich Albion duties after farcical deadline day drama New Zealand v England: Ross Taylor returns to Black Caps' ODI and Twenty20 squads Six Nations 2013: England, Scotland and Wales captains describe the thrill of leading their countries Football's transfer window needs a great big brick thrown through it before this timebomb goes off Be very careful, David. Do not start waving the flag for Qatar 2022 David Beckham needs to beware the motives of Qatar moneymen behind his move to Paris St-Germain Vijay Singh's spray disaster smacks of such stupidity that the golfer should start a new career as a stand-up comic Tottenham Hotspur concede defeat in transfer window deal for Brazil striker Leandro Damiao Transfer window closes in shambles as West Brom block Peter Odemwingie's move to Queens Park Rangers Alex McLeish considering future at Nottingham Forest after failed attempt to sign George Boyd Back to top Travel Renzo Piano buildings around the world In pictures: New York's Grand Central Terminal celebrates its 100th birthday The week in travel: January 28-February 1, 2013 Valentine's Day holiday deals Cruise holidays: a guide for first-timers - what the brochures don't tell you Cruise holidays: a guide for first-timers - specialist options Cruise holidays: a guide for first-timers - sailing from Britain Cruise holidays: a guide for first-timers - dispelling the myths WWF: Australia in grave danger over Great Barrier Reef Travel views: January 26 to February 1, 2013 The Grand Canyon on Google Grand Canyon gets Google treatment New York's Grand Central Terminal turns 100 Just Back: memories of Auschwitz Visiting the Thipval Memorial Back to top Food and Drink Is horse meat still on sale in Britain Ministers consider 'calorie labels' for wine, beer and spirits Word of mouth: the real queen of puddings Rose Prince's winter recipes with a piquant punch Broccoli with gnocchi, sage butter and toasted hazelnuts Sweet cooked red chicory, toasted pumpernickel and speck recipe Pickled pears with fromage blanc recipe Braised wild rabbit with new-season lemons and parsley Garlic and thyme pork with celeriac and pickled roots recipe Budget recipe: pork cheek casserole with mushrooms and red wine Soul food: Karam Sethi on his grandparents' rotis The magic of couscous Back to top Gardening Volunteers sought to restore historic garden at Clifton Hill House How Seedy Sundays grew into a phenomenon The best snowdrop varieties for your garden RHS diary: what to do in the garden in February Back to top Education More privately-educated pupils win university offers Britain hands over 100m to Polish students Yes, Nick Clegg, only money will get your boy a good school. How sad is that Head warns over 'bunfight' for places at top schools Britain's fastest-growing universities Record 2.4bn sitting unspent in school bank accounts International education league tables 'are misleading' A Very Private Tutor: Getting to know the parents Back to top Technology BT drops broadband caps and cuts prices Ten tech terms we could do without Plusnet tops broadband survey 'Anonymous' hacker who cost Paypal millions escapes jail Grand Theft Auto V delayed until autumn Google submits proposals to EU anti-trust investigators Sony PS4 rumours sparked by event invites Best British crowdfunding sites Back to top Culture New BBC drama to show the scandalous stories of the playboy Princes 'I was Gina Lollobrigida at her Barcelona wedding': Spanish pensioner speaks Jake Bugg: Bringing back a blue-collar perspective Otello, Opera North, Leeds, review Hyde Park on Hudson, review Flight, review Jennifer Lynch on Sunset Boulevard La Clemenza di Tito, Opera North, Grand Theatre, Leeds, review Anjin: The Shogun and the English Samurai, Sadler's Wells, review Short raises his game How Ebony Day and the MTV Brand New award are changing the music industry Bolshoi drops major ballet premiere after acid attack Culture pictures of the week: 1 February 2013 Tristan Sharps interview for In the Beginning was the End Deadline by Barbara Nadel: review Children's songwriting competition seeks Britain's brightest young stars Films in brief: Bullhead, A Place in the Sun, Chained Modern art pioneer dismisses contemporary works as 'humbug' The opera novice: The Mikado by Gilbert & Sullivan Musorgsky: Pictures from an Exhibition. Prokofiev: Sarcasms; Visions fugitives, classical album review Bollywood star Salman Khan to be tried for hit-and-run Japanese pop star shaves head in penance for sex scandal Kris Kristofferson leads praise for Cowboy Jack Clement Jonathan Ross and Russell Brand: we regret Sachsgate Skyfall boosts British cinema as audiences reach decade high Old Times, Harold Pinter Theatre, review Laura Linney interview for Hyde Park on Hudson Dan Stevens takes the helm at literary magazine House of Cards, Netflix, review Children under 5 should not watch TV alone, Jackanory creator argues Why were all waking up to Chris Evans Back to top Comment Lib Dems abandon founding father of voting reform It's a thumbs down to storing nuclear waste This Equality obsession is mad, bad and dangerous Is there a Tory conspiracy to bring down the PM A moment of renewal, for the Church and country Stars in our eyes The perfumers skills are not to be sniffed at Chris Brown did a terrible thing, but he served his time Cameron should introduce marriage tax relief now How I made a years net salary in a month Gay marriage folly shows Coalition's incompetence What really holds you back in the Labour Party Time to ditch Downton as foreign policy instrument I dont envy the Rebecca Adlingtons of sport Will the PMs promise on defence cuts survive the general election Dogs of war: Army officers canine companions Back to top Sponsored Decorate your conservatory in a style that sets the mood What are calories and how do you burn them Safer Internet Day 2013 connects with respect Lower your sugar intake with Splenda's Small Steps Back to top Promotions Claim a free copy* of Sky at Night Magazine In pictures: awe-inspiring astronomy Save 10 per cent on a Michel Roux Jr cookery course Berry souffl recipe Back to top Women Grandes dames at the door of the Dream Factory This Equality obsession is mad, bad and very dangerous David Beckham doesn't endure the mockery his wife Victoria gets 'I think I've got an STI. Help!' Children's notebook: Eczema and itchy skin Childcare tax breaks: Cameron should introduce marriage tax relief now Women's Bits: Kate Middleton's nose, Oprah Winfrey and being Harry Styles Parenting dilemma: should you make your child eat whats on their plate Forceps births at record high because of older and obese mothers Joy Whitby: a life spent telling children's stories on TV Roaring forties: naughty or nice Back to top Back to top HOME News World News Obituaries Travel Health Jobs Sport Football Cricket Fantasy Football Culture Motoring Dating Finance Personal Finance Economics Markets Fashion Property Puzzles Comment My Telegraph Letters Columnists Technology Gardening Telegraph Shop Contact us Privacy and Cookies Guidelines Advertising Tickets Announcements Reader Prints Follow Us Apps Epaper Expat Promotions Subscriber Syndication Copyright of Telegraph Media Group Limited 2015 Terms and Conditions Today's News Archive Style Book Weather Forecast ", }; for (int i = 0; i < contents.length; i++) { System.out.println("??" + getSource(contents[i]) + "" + getAuthor(contents[i]) + "" + getEditor(contents[i]) + "" + getDate(contents[i])); System.out.println("??" + getSourceE(contents[i]) + "" + getAuthorE(contents[i]) + "" + getEditorE(contents[i]) + "" + getDate(contents[i])); } } }