MetaDataExchangeTest.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. package com.trs.exchange.metadata;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.trs.DreamFactory;
  5. import com.trs.TRSWCMBaseTest;
  6. import com.trs.cms.CMSConstants;
  7. import com.trs.cms.content.CMSObj;
  8. import com.trs.components.metadata.center.MetaViewData;
  9. import com.trs.components.metadata.definition.MetaView;
  10. import com.trs.components.wcm.content.domain.AppendixMgr;
  11. import com.trs.components.wcm.content.persistent.Appendix;
  12. import com.trs.components.wcm.content.persistent.Channel;
  13. import com.trs.gov.common.log.MetaDataLog;
  14. import com.trs.gov.editorcenter.document.IGovDocumentMgr;
  15. import com.trs.gov.editorcenter.extVersion.ExtObjectVersionMgr;
  16. import com.trs.gov.metadata.GovMetaDataConstants;
  17. import com.trs.infra.common.WCMException;
  18. import com.trs.infra.persistent.db.DBManager;
  19. import com.trs.infra.util.CMyDateTime;
  20. import com.trs.infra.util.CMyException;
  21. public class MetaDataExchangeTest extends TRSWCMBaseTest {
  22. private static org.apache.log4j.Logger logger = org.apache.log4j.Logger
  23. .getLogger(MetaDataExchangeTest.class);
  24. /**
  25. * 测试数据入库默认的栏目ID
  26. */
  27. private int m_nChannelIdForTest = 12;
  28. private AppendixMgr m_oAppendixMgr = (AppendixMgr) DreamFactory
  29. .createObjectById("AppendixMgr");
  30. private IGovDocumentMgr m_oGovDocumentMgr = (IGovDocumentMgr) DreamFactory
  31. .createObjectById("IGovDocumentMgr");
  32. private ExtObjectVersionMgr m_oVersionMgr = (ExtObjectVersionMgr) DreamFactory
  33. .createObjectById("ExtObjectVersionMgr");
  34. /**
  35. * 保存一篇最简单的网站文章
  36. */
  37. public void testSaveNews() {
  38. try {
  39. MetaViewData oMetaData = createNormalGovNews();
  40. assertNotNull("网站资讯入库失败?", oMetaData);
  41. } catch (Exception ex) {
  42. logger.error("测试[testSaveMetaViewData]出现异常!", ex);
  43. fail("测试[testSaveMetaViewData]出现异常!\n"
  44. + CMyException.getStackTraceText(ex));
  45. }
  46. }
  47. /**
  48. * 保存一篇链接性文章
  49. */
  50. public void testSaveLinkeNews() {
  51. try {
  52. MetaViewData oMetaData = createLinkGovNews();
  53. assertNotNull("网站资讯入库失败?", oMetaData);
  54. } catch (Exception ex) {
  55. logger.error("测试[testSaveLinkeNews]出现异常!", ex);
  56. fail("测试[testSaveLinkeNews]出现异常!\n"
  57. + CMyException.getStackTraceText(ex));
  58. }
  59. }
  60. /**
  61. * 保存一篇带有附件的网站文章
  62. */
  63. public void testSaveNewsContainsAppendix() {
  64. try {
  65. // 1 保存文章
  66. MetaViewData oMetaData = createNormalGovNews();
  67. assertNotNull("网站资讯入库失败?", oMetaData);
  68. // 2 保存附件
  69. dowithAppendix(oMetaData, Appendix.FLAG_DOCPIC);
  70. dowithAppendix(oMetaData, Appendix.FLAG_DOCAPD);
  71. // 3 处理文章缩略图信息:Thumbfiles
  72. m_oGovDocumentMgr.updateThumbAndAttachField(oMetaData);
  73. // 4 保存版本,如果稿件太多,建议将这个环节注释掉
  74. MetaDataLog oMetaDataLog = creatLog(oMetaData);
  75. // 保存稿件版本
  76. m_oVersionMgr.buildVersion(oMetaData, oMetaDataLog);
  77. // 新建要将稿件版本修改为流程版本
  78. m_oVersionMgr.updateProcess(m_oLoginUser.getName(),
  79. oMetaData.getId());
  80. } catch (Exception ex) {
  81. logger.error("测试[testSaveNewsContainsAppendix]出现异常!", ex);
  82. fail("测试[testSaveNewsContainsAppendix]出现异常!\n"
  83. + CMyException.getStackTraceText(ex));
  84. }
  85. }
  86. private MetaViewData createLinkGovNews() throws Exception, WCMException {
  87. DBManager dbMgrForWCM = DBManager.getDBManager();
  88. // 0 定义目标视图、目标栏目
  89. MetaView view = GovMetaDataConstants.findGovNewsView();
  90. Channel channel = Channel.findById(m_nChannelIdForTest);
  91. assertNotNull("指定栏目【" + m_nChannelIdForTest + "】不存在!", channel);
  92. // 1 产生新的元数据
  93. MetaViewData oMetaData = new MetaViewData(view);
  94. // 2 读取数据设置属性,这里用硬代码示例
  95. int nFromType = 711, nSrcId = 1008; // 原始数据的类型(比如约定711表示来自于财政局)和ID
  96. oMetaData.setProperty("FromType", nFromType);
  97. oMetaData.setProperty("FromId", String.valueOf(nSrcId));
  98. oMetaData.setProperty("DocLink", "http://www.trs.com.cn/");
  99. oMetaData.setProperty("DocType", CMSConstants.CONTENT_BODY_LINK);
  100. oMetaData.setProperty("ChannelId", m_nChannelIdForTest);
  101. oMetaData.setPropertyWithString("DocTitle", "测试一下数据迁移框架是否可用"); // 标题
  102. oMetaData.setProperty("ShortTitle", "我是首页标题");
  103. oMetaData.setProperty("SUBDOCTITLE", "我是副标题");
  104. oMetaData.setProperty("DOCSOURCENAME", "我是来源");
  105. oMetaData.setProperty("DocAbstract", "我是摘要\n第二段文字");
  106. // 3 入库保存
  107. oMetaData.save(m_oLoginUser);
  108. if (oMetaData.getDocument() == null) {
  109. throw new WCMException(
  110. "Fail to save metaviewdata![SrcId=" + nSrcId + "]");
  111. }
  112. // 4 更新DocOutupId
  113. dbMgrForWCM.sqlExecuteUpdate(
  114. new String[] {
  115. "update WCMDocument set DocOutupId=? where DocId=?" },
  116. new int[] { nSrcId, oMetaData.getDocumentId() });
  117. return oMetaData;
  118. }
  119. private MetaViewData createNormalGovNews() throws Exception, WCMException {
  120. DBManager dbMgrForWCM = DBManager.getDBManager();
  121. // 0 定义目标视图、目标栏目
  122. MetaView view = GovMetaDataConstants.findGovNewsView();
  123. Channel channel = Channel.findById(m_nChannelIdForTest);
  124. assertNotNull("指定栏目【" + m_nChannelIdForTest + "】不存在!", channel);
  125. // 1 产生新的元数据
  126. MetaViewData oMetaData = new MetaViewData(view);
  127. // 2 读取数据设置属性,这里用硬代码示例
  128. int nFromType = 711, nSrcId = 1008; // 原始数据的类型(比如约定711表示来自于财政局)和ID
  129. oMetaData.setProperty("FromType", nFromType);
  130. oMetaData.setProperty("FromId", String.valueOf(nSrcId));
  131. oMetaData.setProperty("DocType", CMSConstants.CONTENT_BODY_HTML);
  132. oMetaData.setProperty("ChannelId", m_nChannelIdForTest);
  133. oMetaData.setPropertyWithString("DocTitle", "测试一下数据迁移框架是否可用"); // 标题
  134. String sHTMLContent = "<DIV class=\"TRS_UEDITOR TRS_WEB\">"//
  135. + "<BR>大发打发第三方打发第三方大法师<B>dafdsf</B><P>测试中文</P>" + "</DIV>";// 系统要求图文混排内容都要包一个DIV
  136. oMetaData.setPropertyWithString("DocHTMLCon", sHTMLContent); // 正文
  137. oMetaData.setProperty("DocContent", "大发打发第三方打发第三方大法师dafdsf\n测试中文\n");// 不带格式的正文
  138. oMetaData.setProperty("ShortTitle", "我是首页标题");
  139. oMetaData.setProperty("SUBDOCTITLE", "我是副标题");
  140. oMetaData.setProperty("DOCSOURCENAME", "我是来源");
  141. oMetaData.setProperty("DocAbstract", "我是摘要\n第二段文字");
  142. // 3 入库保存
  143. oMetaData.save(m_oLoginUser);
  144. if (oMetaData.getDocument() == null) {
  145. throw new WCMException(
  146. "Fail to save metaviewdata![SrcId=" + nSrcId + "]");
  147. }
  148. // 4 更新DocOutupId
  149. dbMgrForWCM.sqlExecuteUpdate(
  150. new String[] {
  151. "update WCMDocument set DocOutupId=? where DocId=?" },
  152. new int[] { nSrcId, oMetaData.getDocumentId() });
  153. return oMetaData;
  154. }
  155. private void dowithAppendix(MetaViewData _oMetaViewData, int _nAppendixFlag)
  156. throws WCMException {
  157. // 1 从原始库获取对应文档的附件,然后传到WCMData/Upload所在目录中
  158. String[] pAppendixFile = { "U020170817494109015293.jpeg",
  159. "U020170817494938975762.jpg" };
  160. // 2 产生将要保存的附件对象
  161. int nSize = pAppendixFile.length;
  162. List<CMSObj> nAppendixs = new ArrayList<>(nSize);
  163. for (int i = 0; i < nSize; i++) {
  164. Appendix appendix = Appendix.createNewInstance();
  165. appendix.setFile(pAppendixFile[i]);
  166. appendix.setDesc("附件说明" + i);
  167. appendix.setDocId(_oMetaViewData.getMetaDataId());
  168. appendix.setFlag(_nAppendixFlag);
  169. appendix.setProperty("APPSERN", i + 1);
  170. nAppendixs.add(appendix);
  171. }
  172. // 3 处理指定类型的附件
  173. m_oAppendixMgr.saveAppendixes(_oMetaViewData.getDocument(), nAppendixs,
  174. _nAppendixFlag);
  175. }
  176. private MetaDataLog creatLog(MetaViewData _oMetaData) throws WCMException {
  177. MetaDataLog oMetaDataLog = MetaDataLog.createNewInstance();
  178. oMetaDataLog.setDesChnlId(m_nChannelIdForTest);
  179. oMetaDataLog.setDesDept("");
  180. oMetaDataLog.setDesGroupId(0);
  181. oMetaDataLog.setDesUser(m_sCurrUserName);
  182. oMetaDataLog.setOperTime(CMyDateTime.now());
  183. oMetaDataLog.setOperDesc(
  184. "迁移数据【" + _oMetaData + "】【" + _oMetaData.getDocument() + "】");
  185. return oMetaDataLog;
  186. }
  187. }