WCMServiceCallerTest.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507
  1. /**
  2. * 2008-1-30
  3. */
  4. package com.trs.web2frame;
  5. import com.alibaba.fastjson.JSON;
  6. import com.alibaba.fastjson.JSONObject;
  7. import com.trs.cms.CMSConstants;
  8. import com.trs.dto.ChannelDTO;
  9. import com.trs.dto.SiteDTO;
  10. import com.trs.infra.common.BizError;
  11. import com.trs.infra.common.WCMException;
  12. import com.trs.infra.util.CMyString;
  13. import com.trs.support.ApplicationProperties;
  14. import com.trs.util.DBUtil;
  15. import com.trs.web2frame.dispatch.Dispatch;
  16. import com.trs.web2frame.eventhandler.ICallbackCompleteHandler;
  17. import com.trs.web2frame.eventhandler.ICallbackEventHandler;
  18. import com.trs.web2frame.eventhandler.ICallbackSuccessHandler;
  19. import com.trs.web2frame.util.JsonHelper;
  20. import junit.framework.TestCase;
  21. import java.sql.Connection;
  22. import java.sql.SQLException;
  23. import java.util.ArrayList;
  24. import java.util.HashMap;
  25. import java.util.List;
  26. import java.util.Map;
  27. /**
  28. * Title: TRS 内容协作平台(TRS WCM) <BR>
  29. * Description: <BR>
  30. * TODO <BR>
  31. * Copyright: Copyright (c) 2004-2005 TRS信息技术有限公司 <BR>
  32. * Company: TRS信息技术有限公司(www.trs.com.cn) <BR>
  33. *
  34. * @author TRS信息技术有限公司 LY
  35. * @version 1.0
  36. */
  37. public class WCMServiceCallerTest extends TestCase {
  38. /**
  39. *
  40. */
  41. // public static final String FILE_1 =
  42. // "D:\\Webapps\\TRS_WCM_52\\Tomcat\\webapps\\wcm\\infoview\\infoview.js";
  43. public static final String FILE_1 = "/Users/macro.li/TRS/logs/j01.txt";
  44. private static final String connectUrl = ApplicationProperties.get("mysql_connectUrl");
  45. private static final String userName = ApplicationProperties.get("user_name");
  46. private static final String pswd = ApplicationProperties.get("pswd");
  47. private static Connection connection;
  48. @Override
  49. public void setUp() throws Exception {
  50. super.setUp();
  51. connection = DBUtil.getConnection(connectUrl, userName, pswd);
  52. }
  53. @Override
  54. public void tearDown() throws Exception {
  55. super.tearDown();
  56. try {
  57. if (connection != null) {
  58. connection.close();
  59. }
  60. } catch (SQLException e) {
  61. e.printStackTrace();
  62. }
  63. }
  64. /**
  65. * 查询站点的例子
  66. */
  67. public void testCall() {
  68. String sServiceId = "gov_site";
  69. String sMethodName = "querySites";
  70. Map oPostData = new HashMap();
  71. oPostData.put("CurrUserName", "admin");
  72. oPostData.put("MODULEID", "10");
  73. oPostData.put("MediaType", "1");
  74. oPostData.put("PAGESIZE", "10");
  75. Dispatch oResult = WCMServiceCaller.Call(sServiceId, sMethodName,
  76. oPostData, false);
  77. System.out.println("Result:" + oResult.getResponseText());
  78. }
  79. /**
  80. public void testCallback() {
  81. String sServiceId = "wcm6_document";
  82. String sMethodName = "query";
  83. Map oPostData = new HashMap();
  84. oPostData.put("ChannelId", new Integer(11));
  85. ServiceObject oServiceObject = new ServiceObject(sServiceId,
  86. sMethodName);
  87. oServiceObject.setPostData(oPostData);
  88. oServiceObject.addEventHandlers(
  89. new ICallbackEventHandler[] { new ICallbackCompleteHandler() {
  90. public void onComplete(Dispatch _dispatch)
  91. throws Web2frameClientException {
  92. System.out.println("hahaha, i'm completed.");
  93. }
  94. }, new ICallbackSuccessHandler() {
  95. public void onSuccess(Dispatch _dispatch)
  96. throws Web2frameClientException {
  97. System.out.println("oh yeah, i'm successed.");
  98. System.out.println(
  99. "responseText:" + _dispatch.getResponseText());
  100. Map oJson = _dispatch.getJson();
  101. System.out.println("oJson:" + oJson);
  102. System.out.println("DOCUMENTS.NUM:" + JsonHelper
  103. .getValueAsString(oJson, "DOCUMENTS.NUM"));
  104. List lstDocuments = JsonHelper.getList(oJson,
  105. "DOCUMENTS.Document");
  106. System.out
  107. .println("DOCUMENTS.Document:" + lstDocuments);
  108. if (lstDocuments != null && lstDocuments.size() > 0) {
  109. System.out.println("Document.CRTIME:" + JsonHelper
  110. .getValueAsString((Map) lstDocuments.get(0),
  111. "CRTIME"));
  112. System.out.println("Document.DOCTYPE:" + JsonHelper
  113. .getValueAsString((Map) lstDocuments.get(0),
  114. "DOCTYPE"));
  115. System.out.println("Document.DOCTYPE.TYPE:"
  116. + JsonHelper.getValueAsString(
  117. (Map) lstDocuments.get(0),
  118. "DOCTYPE.TYPE"));
  119. }
  120. }
  121. } });
  122. WCMServiceCaller.Call(oServiceObject, false);
  123. }
  124. public void testCall2() {
  125. String sServiceId = "wcm6_document";
  126. String sMethodName = "query";
  127. Map oPostData = new HashMap();
  128. oPostData.put("ChannelId", new Integer(10));
  129. Dispatch oDispatch = WCMServiceCaller.Call(sServiceId, sMethodName,
  130. oPostData, false);
  131. System.out.println(
  132. "oDispatch.getResponseText():" + oDispatch.getResponseText());
  133. }
  134. public void testCall3() {
  135. String sServiceId = "wcm6_document";
  136. String sMethodName = "query";
  137. ServiceObject oServiceObject = new ServiceObject(sServiceId,
  138. sMethodName);
  139. oServiceObject.setParameter("ChannelId", "10");
  140. Dispatch oDispatch = WCMServiceCaller.Call(oServiceObject, false);
  141. System.out.println(
  142. "oDispatch.getResponseText():" + oDispatch.getResponseText());
  143. }
  144. **/
  145. /**
  146. * 文件上传的例子
  147. */
  148. public void testUploadFile() {
  149. Dispatch oDispatch = WCMServiceCaller.UploadFile(FILE_1);
  150. System.out.println(
  151. "oDispatch.getResponseText():" + oDispatch.getResponseText());
  152. System.out.println("oDispatch.getUploadShowName():"
  153. + oDispatch.getUploadShowName());
  154. }
  155. /**
  156. * 保存文档的例子(自定义视图)
  157. * 1、自定义视图:sServiceId = gov_webdocument, sMethodName = saveDocumentInOpenData
  158. * 2、默认的资讯视图:sServiceId = gov_webdocument, sMethodName = saveDocumentInWeb
  159. */
  160. public void testSaveOpenData() {
  161. String sServiceId = "gov_webdocument";
  162. String sMethodName = "saveDocumentInOpenData";
  163. HashMap<String, Object> hParameters = new HashMap<>();
  164. hParameters.put("CurrUserName", "admin"); // 当前操作的用户
  165. hParameters.put("MetaDataId", "0"); // 表示新建
  166. hParameters.put("CHANNELID", "19043");
  167. hParameters.put("DOCTYPE", CMSConstants.CONTENT_BODY_HTML);
  168. int nFromType = 711, nSrcId = 1008; // 原始数据的类型(比如约定711表示来自于财政局)和ID
  169. hParameters.put("FromType", nFromType);
  170. hParameters.put("FromId", String.valueOf(nSrcId));
  171. hParameters.put("DOCTITLE",
  172. "省人民政府办公厅关于禁止在纳雍县金珠水库淹没区及工程建设区新增建设项目和迁入人口的通知");
  173. String sHTMLContent = "<DIV class=\"TRS_UEDITOR TRS_WEB\">"//
  174. + "<BR>大发打发第三方打发第三方大法师<B>dafdsf</B><P>测试中文</P>" + "</DIV>";// 系统要求图文混排内容都要包一个DIV
  175. hParameters.put("DocHTMLCon", sHTMLContent); // 正文
  176. hParameters.put("DocContent", "大发打发第三方打发第三方大法师dafdsf\n测试中文\n");// 不带格式的正文
  177. hParameters.put("PUBLISHER", "贵州省人民政府办公厅");
  178. hParameters.put("SEARCHCONTENT", "");
  179. hParameters.put("DOCAUTHOR", "刘颖");
  180. hParameters.put("DOCRELTIME", "2017-06-21 15:48:00");
  181. hParameters.put("SVOBJCAT", "");
  182. hParameters.put("DOCWORDSCOUNT", "813");
  183. hParameters.put("DOCLINK", "");
  184. hParameters.put("ZLRQ", "2017-06-13 15:48:00");
  185. hParameters.put("IDXID", "000014349/2017-01873");
  186. hParameters.put("FZRQ", "");
  187. hParameters.put("FILENUM", "黔府办函");
  188. WCMServiceCaller.Call(sServiceId, sMethodName, hParameters, true);
  189. }
  190. /**
  191. * 批量迁移站点的例子,站点需要项目组自己根据实际情况获取
  192. * @throws WCMException
  193. */
  194. public void testPostSaveSite() throws WCMException {
  195. List<SiteDTO> list = new ArrayList<>();
  196. //start TODO 需要项目组根据第三方项目情况,填写相应数据 具体参数见:SiteDTO
  197. SiteDTO siteDTO = new SiteDTO();
  198. siteDTO.setSitename("乐至市改1");
  199. siteDTO.setClassificationid(95);
  200. siteDTO.setSitedesc("乐至市");
  201. siteDTO.setDatapath("lezshi1");
  202. siteDTO.setWebhttp("http://192.168.200.124/pub/lezshi");
  203. //设置视图ID,这个ID是海云全媒体采编中的视图ID。项目组可以根据自己可以将站点栏目指定到海云中已存在的视图下。
  204. String siteCode = "1";
  205. int viewId = queryViewIdByCode(siteCode);
  206. siteDTO.setViewinfoid(36);
  207. siteDTO.setDetailtemplate(7086);
  208. siteDTO.setOutlinetemplate(7084);
  209. siteDTO.setChnloutlinetemp(7085);
  210. siteDTO.setSrcSiteCode(siteCode);
  211. list.add(siteDTO);
  212. //end TODO 需要项目组根据第三方项目情况,填写相应数据
  213. testSaveSite(list);
  214. }
  215. private int queryViewIdByCode(String code) throws BizError {
  216. //TODO 项目组定义站点栏目绑定对应海云已存在的视图ID
  217. throw new BizError("项目组自定义站点栏目绑定对应海云已存在的视图ID");
  218. }
  219. /**
  220. * 栏目迁移的例子
  221. * @throws WCMException
  222. */
  223. public void testSaveChannel() throws WCMException {
  224. List<ChannelDTO> list = new ArrayList<>();
  225. //start TODO 需要项目组根据第三方项目情况,填写相应数据 具体参数见:ChannelDTO
  226. ChannelDTO channelDTO = new ChannelDTO();
  227. String channelCode = "13";
  228. channelDTO.setSrcChannelCode(channelCode);
  229. channelDTO.setChnlname("视频新闻");
  230. channelDTO.setChnldesc("视频新闻");
  231. channelDTO.setChnldatapath("spxw");
  232. channelDTO.setDetailtemplate(0);
  233. channelDTO.setOutlinetemplate(0);
  234. //如果是根节点 parenId = 0; 如果不是根节点需要查询HYCLOUDCHANNELRELATION 表数据
  235. int parentId = queryPatentIdByChannelCode(channelCode);
  236. channelDTO.setParentid(parentId);
  237. String srcSiteCode = "1";
  238. //通过第三方系统的站点 唯一表示 获取迁移后的站点
  239. int siteId = querySiteIdBySrcSiteCode(srcSiteCode);
  240. if (siteId == 0){
  241. throw new BizError(String.format("该站点[%s]没有迁移",srcSiteCode));
  242. }
  243. channelDTO.setSiteid(siteId);
  244. //设置视图ID,这个ID是海云全媒体采编中的视图ID。
  245. int viewId = queryViewIdByCode(channelCode);
  246. channelDTO.setViewinfoid(viewId);
  247. list.add(channelDTO);
  248. //end TODO 需要项目组根据第三方项目情况,填写相应数据
  249. testSaveChannel(list);
  250. }
  251. private int queryPatentIdByChannelCode(String channelCode) throws BizError {
  252. String sql = "SELECT CHANNELID FROM HYCLOUDCHANNELRELATION WHERE SRCCHANNELCODE = ?;";
  253. List<String> list = new ArrayList<>();
  254. list.add(channelCode);
  255. List<String> result = DBUtil.getDBManager().sqlExecuteStringsQuery(connection, sql, list);
  256. int channelId = 0;
  257. if (result != null && result.size() == 1){
  258. channelId = Integer.parseInt(result.get(0));
  259. }
  260. return channelId;
  261. }
  262. private int querySiteIdBySrcSiteCode(String srcSiteCode) throws BizError {
  263. String sql = "SELECT SITEID FROM HYCLOUDSITERELATION WHERE SRCSITECODE = ?;";
  264. List<String> list = new ArrayList<>();
  265. list.add(srcSiteCode);
  266. List<String> result = DBUtil.getDBManager().sqlExecuteStringsQuery(connection, sql, list);
  267. int siteId = 0;
  268. if (result != null && result.size() == 1){
  269. siteId = Integer.parseInt(result.get(0));
  270. }
  271. return siteId;
  272. }
  273. /**
  274. * 批量迁移站点的例子
  275. * @param siteDTOList
  276. */
  277. private void testSaveSite(List<SiteDTO> siteDTOList) throws WCMException {
  278. String sServiceId = "gov_site";
  279. String sMethodName = "saveSite";
  280. for(SiteDTO siteDTO : siteDTOList) {
  281. if (CMyString.isEmpty(siteDTO.getSrcSiteCode())){
  282. throw new BizError("第三方站点唯一表示不能为空");
  283. }
  284. HashMap<String, Object> hParameters = new HashMap<>();
  285. hParameters.put("CurrUserName", "admin"); // 当前操作的用户
  286. hParameters.put("SITEID", siteDTO.getSiteid()); // 表示新建
  287. hParameters.put("SITENAME", siteDTO.getSitename());
  288. hParameters.put("SITEDESC", siteDTO.getSitedesc());
  289. hParameters.put("CLASSIFICATIONID", siteDTO.getClassificationid());
  290. hParameters.put("DATAPATH", siteDTO.getDatapath());
  291. hParameters.put("VIEWINFOID", siteDTO.getViewinfoid());
  292. hParameters.put("WEBHTTP", siteDTO.getWebhttp());
  293. hParameters.put("DETAILTEMPLATE", siteDTO.getDetailtemplate());
  294. hParameters.put("OUTLINETEMPLATE", siteDTO.getOutlinetemplate());
  295. hParameters.put("CHNLOUTLINETEMP", siteDTO.getChnloutlinetemp());
  296. hParameters.put("SITEORDER", siteDTO.getSiteorder());
  297. hParameters.put("ISDISTRIBUTABLE", siteDTO.getIsdistributable());
  298. hParameters.put("ISPUSHABLE", siteDTO.getIspushable());
  299. hParameters.put("ISSUBSCRIBE", siteDTO.getIssubscribe());
  300. hParameters.put("MEDIATYPE", siteDTO.getMediatype());
  301. hParameters.put("AUTOCHECK", siteDTO.getAutocheck());
  302. hParameters.put("ISOTHERPLATDISTRIBUTABLE", siteDTO.getIsotherplatdistributable());
  303. hParameters.put("ISOTHERPLATPUSHABLE", siteDTO.getIsotherplatpushable());
  304. Dispatch oResult = WCMServiceCaller.Call(sServiceId, sMethodName, hParameters, true);
  305. //对返回值进行处理
  306. dealWithSiteReturn(oResult, siteDTO);
  307. }
  308. }
  309. private void dealWithSiteReturn(Dispatch oResult, SiteDTO siteDTO) throws WCMException {
  310. System.out.println("Result:" + oResult.getResponseText());
  311. JSONObject jsonObject = JSON.parseObject(oResult.getResponseText()).getJSONObject("DATA");
  312. if (jsonObject == null) {
  313. throw new BizError(String.format("保存站点失败,站点名称[%s],迁移前应用ID[%s]", siteDTO.getSitename(), siteDTO.getSrcSiteCode()));
  314. }
  315. int siteId = jsonObject.getIntValue("SITEID");
  316. if (siteId == 0) {
  317. throw new BizError(String.format("保存站点失败,站点名称[%s],迁移前应用ID[%s]", siteDTO.getSitename(), siteDTO.getSrcSiteCode()));
  318. }
  319. saveSiteMapping(siteId, siteDTO.getSrcSiteCode());
  320. }
  321. public void testPostSaveSiteMapping() throws WCMException{
  322. saveSiteMapping(1, "12");
  323. }
  324. private void saveSiteMapping(int siteId, String siteCode) throws WCMException {
  325. System.out.println(String.format("保存成功,新站点ID[%d]", siteId));
  326. String sql = "INSERT INTO HYCLOUDSITERELATION (SRCSITECODE,SITEID) VALUES(?, ?);";
  327. List<Object> list = new ArrayList<>();
  328. list.add(siteCode);
  329. list.add(siteId);
  330. DBUtil.getDBManager().sqlExecuteUpdate(connection, sql, list);
  331. }
  332. private void testSaveChannel(List<ChannelDTO> channelDTOS) throws WCMException{
  333. String sServiceId = "gov_channel";
  334. String sMethodName = "saveChannel";
  335. for(ChannelDTO channelDTO : channelDTOS) {
  336. if (CMyString.isEmpty(channelDTO.getSrcChannelCode())){
  337. throw new BizError("第三方栏目唯一表示不能为空");
  338. }
  339. HashMap<String, Object> hParameters = new HashMap<>();
  340. hParameters.put("CurrUserName", "admin"); // 当前操作的用户
  341. hParameters.put("SITEID", channelDTO.getSiteid());
  342. hParameters.put("CHANNELID", channelDTO.getChannelid()); // 表示新建
  343. hParameters.put("CHNLNAME", channelDTO.getChnlname());
  344. hParameters.put("CHNLDESC", channelDTO.getChnldesc());
  345. hParameters.put("PARENTID", channelDTO.getParentid());
  346. hParameters.put("CHNLDATAPATH", channelDTO.getChnldatapath());
  347. hParameters.put("VIEWINFOID", channelDTO.getViewinfoid());
  348. if (channelDTO.getRootdomain() != null){
  349. hParameters.put("ROOTDOMAIN", channelDTO.getRootdomain());
  350. }
  351. hParameters.put("DETAILTEMPLATE", channelDTO.getDetailtemplate());
  352. hParameters.put("OUTLINETEMPLATE", channelDTO.getOutlinetemplate());
  353. hParameters.put("CHNLORDER", channelDTO.getChnlorder());
  354. hParameters.put("ISDISTRIBUTABLE", channelDTO.getIsdistributable());
  355. hParameters.put("ISPUSHABLE", channelDTO.getIspushable());
  356. hParameters.put("ISSUBSCRIBE", channelDTO.getIssubscribe());
  357. hParameters.put("MEDIATYPE", channelDTO.getMediatype());
  358. hParameters.put("CANPUB", channelDTO.getCanpub());
  359. hParameters.put("ISOTHERPLATDISTRIBUTABLE", channelDTO.getIsotherplatdistributable());
  360. hParameters.put("ISOTHERPLATPUSHABLE", channelDTO.getIsotherplatpushable());
  361. hParameters.put("CHNLTYPE", channelDTO.getChnltype());
  362. if (channelDTO.getLinkurl() != null){
  363. hParameters.put("LINKURL", channelDTO.getLinkurl());
  364. }
  365. hParameters.put("GENERATECHNLROLE", channelDTO.getGeneratechnlrole());
  366. Dispatch oResult = WCMServiceCaller.Call(sServiceId, sMethodName, hParameters, true);
  367. //对返回值进行处理
  368. dealWithChannelReturn(oResult, channelDTO);
  369. }
  370. }
  371. private void dealWithChannelReturn(Dispatch oResult, ChannelDTO channelDTO) throws WCMException {
  372. System.out.println("Result:" + oResult.getResponseText());
  373. JSONObject jsonObject = JSON.parseObject(oResult.getResponseText()).getJSONObject("DATA");
  374. if (jsonObject == null) {
  375. throw new BizError(String.format("保存栏目失败,栏目名称[%s],迁移前应用ID[%s]", channelDTO.getChnlname(), channelDTO.getSrcChannelCode()));
  376. }
  377. int channelid = jsonObject.getIntValue("CHANNELID");
  378. if (channelid == 0) {
  379. throw new BizError(String.format("保存栏目失败,栏目名称[%s],迁移前应用ID[%s]", channelDTO.getChnlname(), channelDTO.getSrcChannelCode()));
  380. }
  381. saveChannelMapping(channelid, channelDTO.getSrcChannelCode());
  382. }
  383. public void testPostSaveChannelMapping() throws WCMException{
  384. saveChannelMapping(2, "121");
  385. }
  386. private void saveChannelMapping(int channelid, String srcChannelCode) throws WCMException {
  387. System.out.println(String.format("保存成功,新栏目ID[%d]", channelid));
  388. String sql = "INSERT INTO HYCLOUDCHANNELRELATION (SRCCHANNELCODE, CHANNELID) VALUES(?, ?);";
  389. List<Object> list = new ArrayList<>();
  390. list.add(srcChannelCode);
  391. list.add(channelid);
  392. DBUtil.getDBManager().sqlExecuteUpdate(connection, sql, list);
  393. }
  394. }