MetaDataExchangeTest.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  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 = saveGovNews();
  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 testSaveNewsContainsAppendix() {
  51. try {
  52. // 1 保存文章
  53. MetaViewData oMetaData = saveGovNews();
  54. assertNotNull("网站资讯入库失败?", oMetaData);
  55. // 2 保存附件
  56. dowithAppendix(oMetaData, Appendix.FLAG_DOCPIC);
  57. dowithAppendix(oMetaData, Appendix.FLAG_DOCAPD);
  58. // 3 处理文章缩略图信息:Thumbfiles
  59. m_oGovDocumentMgr.updateThumbAndAttachField(oMetaData);
  60. // 4 保存版本,如果稿件太多,建议将这个环节注释掉
  61. MetaDataLog oMetaDataLog = creatLog(oMetaData);
  62. // 保存稿件版本
  63. m_oVersionMgr.buildVersion(oMetaData, oMetaDataLog);
  64. // 新建要将稿件版本修改为流程版本
  65. m_oVersionMgr.updateProcess(m_oLoginUser.getName(),
  66. oMetaData.getId());
  67. } catch (Exception ex) {
  68. logger.error("测试[testSaveNewsContainsAppendix]出现异常!", ex);
  69. fail("测试[testSaveNewsContainsAppendix]出现异常!\n"
  70. + CMyException.getStackTraceText(ex));
  71. }
  72. }
  73. private MetaViewData saveGovNews() throws Exception, WCMException {
  74. DBManager dbMgrForWCM = DBManager.getDBManager();
  75. // 0 定义目标视图、目标栏目
  76. MetaView view = GovMetaDataConstants.findGovNewsView();
  77. Channel channel = Channel.findById(m_nChannelIdForTest);
  78. assertNotNull("指定栏目【" + m_nChannelIdForTest + "】不存在!", channel);
  79. // 1 产生新的元数据
  80. MetaViewData oMetaData = new MetaViewData(view);
  81. // 2 读取数据设置属性,这里用硬代码示例
  82. int nFromType = 711, nSrcId = 1008; // 原始数据的类型(比如约定711表示来自于财政局)和ID
  83. oMetaData.setProperty("FromType", nFromType);
  84. oMetaData.setProperty("FromId", String.valueOf(nSrcId));
  85. oMetaData.setProperty("DocType", CMSConstants.CONTENT_BODY_HTML);
  86. oMetaData.setProperty("ChannelId", m_nChannelIdForTest);
  87. oMetaData.setPropertyWithString("DocTitle", "测试一下数据迁移框架是否可用"); // 标题
  88. String sHTMLContent = "<DIV class=\"TRS_UEDITOR TRS_WEB\">"//
  89. + "<BR>大发打发第三方打发第三方大法师<B>dafdsf</B><P>测试中文</P>" + "</DIV>";// 系统要求图文混排内容都要包一个DIV
  90. oMetaData.setPropertyWithString("DocHTMLCon", sHTMLContent); // 正文
  91. oMetaData.setProperty("DocContent", "大发打发第三方打发第三方大法师dafdsf\n测试中文\n");// 不带格式的正文
  92. oMetaData.setProperty("ShortTitle", "我是首页标题");
  93. oMetaData.setProperty("SUBDOCTITLE", "我是副标题");
  94. oMetaData.setProperty("DOCSOURCENAME", "我是来源");
  95. oMetaData.setProperty("DocAbstract", "我是摘要\n第二段文字");
  96. // 3 入库保存
  97. oMetaData.save(m_oLoginUser);
  98. if (oMetaData.getDocument() == null) {
  99. throw new WCMException(
  100. "Fail to save metaviewdata![SrcId=" + nSrcId + "]");
  101. }
  102. // 4 更新DocOutupId
  103. dbMgrForWCM.sqlExecuteUpdate(
  104. new String[] {
  105. "update WCMDocument set DocOutupId=? where DocId=?" },
  106. new int[] { nSrcId, oMetaData.getDocumentId() });
  107. return oMetaData;
  108. }
  109. private void dowithAppendix(MetaViewData _oMetaViewData, int _nAppendixFlag)
  110. throws WCMException {
  111. // 1 从原始库获取对应文档的附件,然后传到WCMData/Upload所在目录中
  112. String[] pAppendixFile = { "U020170817494109015293.jpeg",
  113. "U020170817494938975762.jpg" };
  114. // 2 产生将要保存的附件对象
  115. int nSize = pAppendixFile.length;
  116. List<CMSObj> nAppendixs = new ArrayList<>(nSize);
  117. for (int i = 0; i < nSize; i++) {
  118. Appendix appendix = Appendix.createNewInstance();
  119. appendix.setFile(pAppendixFile[i]);
  120. appendix.setDesc("附件说明" + i);
  121. appendix.setDocId(_oMetaViewData.getMetaDataId());
  122. appendix.setFlag(_nAppendixFlag);
  123. appendix.setProperty("APPSERN", i + 1);
  124. nAppendixs.add(appendix);
  125. }
  126. // 3 处理指定类型的附件
  127. m_oAppendixMgr.saveAppendixes(_oMetaViewData.getDocument(), nAppendixs,
  128. _nAppendixFlag);
  129. }
  130. private MetaDataLog creatLog(MetaViewData _oMetaData) throws WCMException {
  131. MetaDataLog oMetaDataLog = MetaDataLog.createNewInstance();
  132. oMetaDataLog.setDesChnlId(m_nChannelIdForTest);
  133. oMetaDataLog.setDesDept("");
  134. oMetaDataLog.setDesGroupId(0);
  135. oMetaDataLog.setDesUser(m_sCurrUserName);
  136. oMetaDataLog.setOperTime(CMyDateTime.now());
  137. oMetaDataLog.setOperDesc(
  138. "迁移数据【" + _oMetaData + "】【" + _oMetaData.getDocument() + "】");
  139. return oMetaDataLog;
  140. }
  141. }