/**
* 2008-1-30
*/
package com.trs.web2frame;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.trs.cms.CMSConstants;
import com.trs.dto.ChannelDTO;
import com.trs.dto.SiteDTO;
import com.trs.infra.common.BizError;
import com.trs.infra.common.WCMException;
import com.trs.infra.util.CMyString;
import com.trs.support.ApplicationProperties;
import com.trs.util.DBUtil;
import com.trs.web2frame.dispatch.Dispatch;
import com.trs.web2frame.eventhandler.ICallbackCompleteHandler;
import com.trs.web2frame.eventhandler.ICallbackEventHandler;
import com.trs.web2frame.eventhandler.ICallbackSuccessHandler;
import com.trs.web2frame.util.JsonHelper;
import junit.framework.TestCase;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Title: TRS 内容协作平台(TRS WCM)
* Description:
* TODO
* Copyright: Copyright (c) 2004-2005 TRS信息技术有限公司
* Company: TRS信息技术有限公司(www.trs.com.cn)
*
* @author TRS信息技术有限公司 LY
* @version 1.0
*/
public class WCMServiceCallerTest extends TestCase {
/**
*
*/
// public static final String FILE_1 =
// "D:\\Webapps\\TRS_WCM_52\\Tomcat\\webapps\\wcm\\infoview\\infoview.js";
public static final String FILE_1 = "/Users/macro.li/TRS/logs/j01.txt";
private static final String connectUrl = ApplicationProperties.get("mysql_connectUrl");
private static final String userName = ApplicationProperties.get("user_name");
private static final String pswd = ApplicationProperties.get("pswd");
private static Connection connection;
@Override
public void setUp() throws Exception {
super.setUp();
connection = DBUtil.getConnection(connectUrl, userName, pswd);
}
@Override
public void tearDown() throws Exception {
super.tearDown();
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 查询站点的例子
*/
public void testCall() {
String sServiceId = "gov_site";
String sMethodName = "querySites";
Map oPostData = new HashMap();
oPostData.put("CurrUserName", "admin");
oPostData.put("MODULEID", "10");
oPostData.put("MediaType", "1");
oPostData.put("PAGESIZE", "10");
Dispatch oResult = WCMServiceCaller.Call(sServiceId, sMethodName,
oPostData, false);
System.out.println("Result:" + oResult.getResponseText());
}
/**
public void testCallback() {
String sServiceId = "wcm6_document";
String sMethodName = "query";
Map oPostData = new HashMap();
oPostData.put("ChannelId", new Integer(11));
ServiceObject oServiceObject = new ServiceObject(sServiceId,
sMethodName);
oServiceObject.setPostData(oPostData);
oServiceObject.addEventHandlers(
new ICallbackEventHandler[] { new ICallbackCompleteHandler() {
public void onComplete(Dispatch _dispatch)
throws Web2frameClientException {
System.out.println("hahaha, i'm completed.");
}
}, new ICallbackSuccessHandler() {
public void onSuccess(Dispatch _dispatch)
throws Web2frameClientException {
System.out.println("oh yeah, i'm successed.");
System.out.println(
"responseText:" + _dispatch.getResponseText());
Map oJson = _dispatch.getJson();
System.out.println("oJson:" + oJson);
System.out.println("DOCUMENTS.NUM:" + JsonHelper
.getValueAsString(oJson, "DOCUMENTS.NUM"));
List lstDocuments = JsonHelper.getList(oJson,
"DOCUMENTS.Document");
System.out
.println("DOCUMENTS.Document:" + lstDocuments);
if (lstDocuments != null && lstDocuments.size() > 0) {
System.out.println("Document.CRTIME:" + JsonHelper
.getValueAsString((Map) lstDocuments.get(0),
"CRTIME"));
System.out.println("Document.DOCTYPE:" + JsonHelper
.getValueAsString((Map) lstDocuments.get(0),
"DOCTYPE"));
System.out.println("Document.DOCTYPE.TYPE:"
+ JsonHelper.getValueAsString(
(Map) lstDocuments.get(0),
"DOCTYPE.TYPE"));
}
}
} });
WCMServiceCaller.Call(oServiceObject, false);
}
public void testCall2() {
String sServiceId = "wcm6_document";
String sMethodName = "query";
Map oPostData = new HashMap();
oPostData.put("ChannelId", new Integer(10));
Dispatch oDispatch = WCMServiceCaller.Call(sServiceId, sMethodName,
oPostData, false);
System.out.println(
"oDispatch.getResponseText():" + oDispatch.getResponseText());
}
public void testCall3() {
String sServiceId = "wcm6_document";
String sMethodName = "query";
ServiceObject oServiceObject = new ServiceObject(sServiceId,
sMethodName);
oServiceObject.setParameter("ChannelId", "10");
Dispatch oDispatch = WCMServiceCaller.Call(oServiceObject, false);
System.out.println(
"oDispatch.getResponseText():" + oDispatch.getResponseText());
}
**/
/**
* 文件上传的例子
*/
public void testUploadFile() {
Dispatch oDispatch = WCMServiceCaller.UploadFile(FILE_1);
System.out.println(
"oDispatch.getResponseText():" + oDispatch.getResponseText());
System.out.println("oDispatch.getUploadShowName():"
+ oDispatch.getUploadShowName());
}
/**
* 保存文档的例子(自定义视图)
* 1、自定义视图:sServiceId = gov_webdocument, sMethodName = saveDocumentInOpenData
* 2、默认的资讯视图:sServiceId = gov_webdocument, sMethodName = saveDocumentInWeb
*/
public void testSaveOpenData() {
String sServiceId = "gov_webdocument";
String sMethodName = "saveDocumentInOpenData";
HashMap hParameters = new HashMap<>();
hParameters.put("CurrUserName", "admin"); // 当前操作的用户
hParameters.put("MetaDataId", "0"); // 表示新建
hParameters.put("CHANNELID", "19043");
hParameters.put("DOCTYPE", CMSConstants.CONTENT_BODY_HTML);
int nFromType = 711, nSrcId = 1008; // 原始数据的类型(比如约定711表示来自于财政局)和ID
hParameters.put("FromType", nFromType);
hParameters.put("FromId", String.valueOf(nSrcId));
hParameters.put("DOCTITLE",
"省人民政府办公厅关于禁止在纳雍县金珠水库淹没区及工程建设区新增建设项目和迁入人口的通知");
String sHTMLContent = ""//
+ "
大发打发第三方打发第三方大法师
dafdsf测试中文
" + "
";// 系统要求图文混排内容都要包一个DIV
hParameters.put("DocHTMLCon", sHTMLContent); // 正文
hParameters.put("DocContent", "大发打发第三方打发第三方大法师dafdsf\n测试中文\n");// 不带格式的正文
hParameters.put("PUBLISHER", "贵州省人民政府办公厅");
hParameters.put("SEARCHCONTENT", "");
hParameters.put("DOCAUTHOR", "刘颖");
hParameters.put("DOCRELTIME", "2017-06-21 15:48:00");
hParameters.put("SVOBJCAT", "");
hParameters.put("DOCWORDSCOUNT", "813");
hParameters.put("DOCLINK", "");
hParameters.put("ZLRQ", "2017-06-13 15:48:00");
hParameters.put("IDXID", "000014349/2017-01873");
hParameters.put("FZRQ", "");
hParameters.put("FILENUM", "黔府办函");
WCMServiceCaller.Call(sServiceId, sMethodName, hParameters, true);
}
/**
* 批量迁移站点的例子,站点需要项目组自己根据实际情况获取
* @throws WCMException
*/
public void testPostSaveSite() throws WCMException {
List list = new ArrayList<>();
//start TODO 需要项目组根据第三方项目情况,填写相应数据 具体参数见:SiteDTO
SiteDTO siteDTO = new SiteDTO();
siteDTO.setSitename("乐至市改1");
siteDTO.setClassificationid(95);
siteDTO.setSitedesc("乐至市");
siteDTO.setDatapath("lezshi1");
siteDTO.setWebhttp("http://192.168.200.124/pub/lezshi");
//设置视图ID,这个ID是海云全媒体采编中的视图ID。项目组可以根据自己可以将站点栏目指定到海云中已存在的视图下。
String siteCode = "1";
int viewId = queryViewIdByCode(siteCode);
siteDTO.setViewinfoid(36);
siteDTO.setDetailtemplate(7086);
siteDTO.setOutlinetemplate(7084);
siteDTO.setChnloutlinetemp(7085);
siteDTO.setSrcSiteCode(siteCode);
list.add(siteDTO);
//end TODO 需要项目组根据第三方项目情况,填写相应数据
testSaveSite(list);
}
private int queryViewIdByCode(String code) throws BizError {
//TODO 项目组定义站点栏目绑定对应海云已存在的视图ID
throw new BizError("项目组自定义站点栏目绑定对应海云已存在的视图ID");
}
/**
* 栏目迁移的例子
* @throws WCMException
*/
public void testSaveChannel() throws WCMException {
List list = new ArrayList<>();
//start TODO 需要项目组根据第三方项目情况,填写相应数据 具体参数见:ChannelDTO
ChannelDTO channelDTO = new ChannelDTO();
String channelCode = "13";
channelDTO.setSrcChannelCode(channelCode);
channelDTO.setChnlname("视频新闻");
channelDTO.setChnldesc("视频新闻");
channelDTO.setChnldatapath("spxw");
channelDTO.setDetailtemplate(0);
channelDTO.setOutlinetemplate(0);
//如果是根节点 parenId = 0; 如果不是根节点需要查询HYCLOUDCHANNELRELATION 表数据
int parentId = queryPatentIdByChannelCode(channelCode);
channelDTO.setParentid(parentId);
String srcSiteCode = "1";
//通过第三方系统的站点 唯一表示 获取迁移后的站点
int siteId = querySiteIdBySrcSiteCode(srcSiteCode);
if (siteId == 0){
throw new BizError(String.format("该站点[%s]没有迁移",srcSiteCode));
}
channelDTO.setSiteid(siteId);
//设置视图ID,这个ID是海云全媒体采编中的视图ID。
int viewId = queryViewIdByCode(channelCode);
channelDTO.setViewinfoid(viewId);
list.add(channelDTO);
//end TODO 需要项目组根据第三方项目情况,填写相应数据
testSaveChannel(list);
}
private int queryPatentIdByChannelCode(String channelCode) throws BizError {
String sql = "SELECT CHANNELID FROM HYCLOUDCHANNELRELATION WHERE SRCCHANNELCODE = ?;";
List list = new ArrayList<>();
list.add(channelCode);
List result = DBUtil.getDBManager().sqlExecuteStringsQuery(connection, sql, list);
int channelId = 0;
if (result != null && result.size() == 1){
channelId = Integer.parseInt(result.get(0));
}
return channelId;
}
private int querySiteIdBySrcSiteCode(String srcSiteCode) throws BizError {
String sql = "SELECT SITEID FROM HYCLOUDSITERELATION WHERE SRCSITECODE = ?;";
List list = new ArrayList<>();
list.add(srcSiteCode);
List result = DBUtil.getDBManager().sqlExecuteStringsQuery(connection, sql, list);
int siteId = 0;
if (result != null && result.size() == 1){
siteId = Integer.parseInt(result.get(0));
}
return siteId;
}
/**
* 批量迁移站点的例子
* @param siteDTOList
*/
private void testSaveSite(List siteDTOList) throws WCMException {
String sServiceId = "gov_site";
String sMethodName = "saveSite";
for(SiteDTO siteDTO : siteDTOList) {
if (CMyString.isEmpty(siteDTO.getSrcSiteCode())){
throw new BizError("第三方站点唯一表示不能为空");
}
HashMap hParameters = new HashMap<>();
hParameters.put("CurrUserName", "admin"); // 当前操作的用户
hParameters.put("SITEID", siteDTO.getSiteid()); // 表示新建
hParameters.put("SITENAME", siteDTO.getSitename());
hParameters.put("SITEDESC", siteDTO.getSitedesc());
hParameters.put("CLASSIFICATIONID", siteDTO.getClassificationid());
hParameters.put("DATAPATH", siteDTO.getDatapath());
hParameters.put("VIEWINFOID", siteDTO.getViewinfoid());
hParameters.put("WEBHTTP", siteDTO.getWebhttp());
hParameters.put("DETAILTEMPLATE", siteDTO.getDetailtemplate());
hParameters.put("OUTLINETEMPLATE", siteDTO.getOutlinetemplate());
hParameters.put("CHNLOUTLINETEMP", siteDTO.getChnloutlinetemp());
hParameters.put("SITEORDER", siteDTO.getSiteorder());
hParameters.put("ISDISTRIBUTABLE", siteDTO.getIsdistributable());
hParameters.put("ISPUSHABLE", siteDTO.getIspushable());
hParameters.put("ISSUBSCRIBE", siteDTO.getIssubscribe());
hParameters.put("MEDIATYPE", siteDTO.getMediatype());
hParameters.put("AUTOCHECK", siteDTO.getAutocheck());
hParameters.put("ISOTHERPLATDISTRIBUTABLE", siteDTO.getIsotherplatdistributable());
hParameters.put("ISOTHERPLATPUSHABLE", siteDTO.getIsotherplatpushable());
Dispatch oResult = WCMServiceCaller.Call(sServiceId, sMethodName, hParameters, true);
//对返回值进行处理
dealWithSiteReturn(oResult, siteDTO);
}
}
private void dealWithSiteReturn(Dispatch oResult, SiteDTO siteDTO) throws WCMException {
System.out.println("Result:" + oResult.getResponseText());
JSONObject jsonObject = JSON.parseObject(oResult.getResponseText()).getJSONObject("DATA");
if (jsonObject == null) {
throw new BizError(String.format("保存站点失败,站点名称[%s],迁移前应用ID[%s]", siteDTO.getSitename(), siteDTO.getSrcSiteCode()));
}
int siteId = jsonObject.getIntValue("SITEID");
if (siteId == 0) {
throw new BizError(String.format("保存站点失败,站点名称[%s],迁移前应用ID[%s]", siteDTO.getSitename(), siteDTO.getSrcSiteCode()));
}
saveSiteMapping(siteId, siteDTO.getSrcSiteCode());
}
public void testPostSaveSiteMapping() throws WCMException{
saveSiteMapping(1, "12");
}
private void saveSiteMapping(int siteId, String siteCode) throws WCMException {
System.out.println(String.format("保存成功,新站点ID[%d]", siteId));
String sql = "INSERT INTO HYCLOUDSITERELATION (SRCSITECODE,SITEID) VALUES(?, ?);";
List