WCMRoleRightCallerTest.java 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. package com.trs.web2frame;
  2. import com.trs.infra.common.BizError;
  3. import com.trs.infra.common.WCMException;
  4. import com.trs.infra.util.CMyString;
  5. import com.trs.infra.util.Loader;
  6. import com.trs.support.ApplicationProperties;
  7. import com.trs.util.DBUtil;
  8. import com.trs.util.ExcelReader;
  9. import com.trs.web2frame.dispatch.Dispatch;
  10. import junit.framework.TestCase;
  11. import java.io.File;
  12. import java.sql.Connection;
  13. import java.sql.SQLException;
  14. import java.util.ArrayList;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18. /**
  19. * Title: TRS 内容协作平台(TRS WCM) <BR>
  20. * Description: <BR>
  21. * TODO <BR>
  22. * Copyright: Copyright (c) 2004-2005 TRS信息技术有限公司 <BR>
  23. * Company: TRS信息技术有限公司(www.trs.com.cn) <BR>
  24. *
  25. * @author TRS信息技术有限公司 LY
  26. * @version 1.0
  27. */
  28. public class WCMRoleRightCallerTest extends TestCase {
  29. private static final String connectUrl = ApplicationProperties.get("mysql_connectUrl");
  30. private static final String userName = ApplicationProperties.get("user_name");
  31. private static final String pswd = ApplicationProperties.get("pswd");
  32. private static Connection connection;
  33. @Override
  34. public void setUp() throws Exception {
  35. super.setUp();
  36. connection = DBUtil.getConnection(connectUrl, userName, pswd);
  37. }
  38. @Override
  39. public void tearDown() throws Exception {
  40. super.tearDown();
  41. try {
  42. if (connection != null) {
  43. connection.close();
  44. }
  45. } catch (SQLException e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. /**
  50. * 批量创建模板
  51. */
  52. public void testCreateRightTemplate() throws WCMException {
  53. String filePath = Loader.getResource("template").getPath() + "/贵州-权限数据-填充模板.xlsx";
  54. String[][] values = ExcelReader.readExcel(new File(filePath), 0, 1, 0);
  55. //获取站点的偏移量
  56. List<Map<String, Object>> siteOffset = querySiteOffset();
  57. if (siteOffset == null || siteOffset.isEmpty()) {
  58. throw new BizError("偏移量表未获取到数据");
  59. }
  60. testRightTemplate(values, siteOffset);
  61. }
  62. /**
  63. * 批量创建角色,授权
  64. */
  65. public void testCreateRole() throws WCMException {
  66. String filePath = Loader.getResource("template").getPath() + "/贵州-权限数据-填充模板.xlsx";
  67. String[][] values = ExcelReader.readExcel(new File(filePath), 1, 1, 0);
  68. //获取站点的偏移量
  69. List<Map<String, Object>> siteOffset = querySiteOffset();
  70. if (siteOffset == null || siteOffset.isEmpty()) {
  71. throw new BizError("偏移量表未获取到数据");
  72. }
  73. //获取栏目的偏移量
  74. List<Map<String, Object>> channelOffset = queryChannelOffset();
  75. if (channelOffset == null || channelOffset.isEmpty()) {
  76. throw new BizError("偏移量表未获取到数据");
  77. }
  78. testRole(values, siteOffset, channelOffset);
  79. }
  80. private void testRightTemplate(String[][] values, List<Map<String, Object>> siteOffset) throws WCMException {
  81. String sServiceId = "gov_right";
  82. String sMethodName = "saveRightTemplate";
  83. for (String[] strings : values) {
  84. HashMap<String, Object> hParameters = new HashMap<>();
  85. hParameters.put("CurrUserName", "admin"); // 当前操作的用户
  86. if (CMyString.isEmpty(strings[0])) {
  87. throw new BizError("权限模板名称不能为空");
  88. }
  89. hParameters.put("RTName", strings[0]);
  90. if (!CMyString.isEmpty(strings[1])) {
  91. long siteId = Double.valueOf(strings[1]).longValue();
  92. long offsetNum = getOffset(siteOffset, siteId);
  93. hParameters.put("SITEID", siteId + offsetNum);
  94. }
  95. if (CMyString.isEmpty(strings[2])) {
  96. throw new BizError("权限值不能为空");
  97. }
  98. hParameters.put("RIGHTVALUE", strings[2]);
  99. Dispatch oResult = WCMServiceCaller.Call(sServiceId, sMethodName, hParameters, true);
  100. System.out.println("结果:" + oResult.getResponseText());
  101. }
  102. }
  103. private void testRole(String[][] values, List<Map<String, Object>> siteOffset, List<Map<String, Object>> channelOffset) throws BizError {
  104. String sServiceId = "gov_role";
  105. String sMethodName = "saveRolesAndRelations";
  106. for (String[] strings : values) {
  107. HashMap<String, Object> hParameters = new HashMap<>();
  108. hParameters.put("CurrUserName", "admin"); // 当前操作的用户
  109. if (CMyString.isEmpty(strings[0])) {
  110. throw new BizError("角色名称不能为空");
  111. }
  112. hParameters.put("ROLENAME", strings[0]);
  113. if (CMyString.isEmpty(strings[1])) {
  114. throw new BizError("权限模板名称不能为空");
  115. }
  116. hParameters.put("RIGHTTEMNAME", strings[1]);
  117. if (!CMyString.isEmpty(strings[2])) {
  118. long siteId = Double.valueOf(strings[2]).longValue();
  119. long siteOffsetNum = getOffset(siteOffset, siteId);
  120. hParameters.put("SITEID", siteId + siteOffsetNum);
  121. }
  122. if (!CMyString.isEmpty(strings[3])) {
  123. long channelId = Double.valueOf(strings[3]).longValue();
  124. long channelOffsetNum = getOffset(channelOffset, channelId);
  125. hParameters.put("CHANNELID", channelId + channelOffsetNum);
  126. }
  127. if (!CMyString.isEmpty(strings[4])) {
  128. hParameters.put("USERNAMES", strings[4]);
  129. }
  130. if (!CMyString.isEmpty(strings[5])) {
  131. hParameters.put("GROUPNAMES", strings[5]);
  132. }
  133. if (!CMyString.isEmpty(strings[6])) {
  134. String channelIds = strings[6];
  135. channelIds = channelIds.replaceAll(",", ",");
  136. String[] channelIdStrs = CMyString.split(channelIds, ",");
  137. StringBuilder stringBuilder = new StringBuilder();
  138. for (String channelIdStr : channelIdStrs) {
  139. long channelId = Long.parseLong(channelIdStr);
  140. long channelOffsetNum = getOffset(channelOffset, channelId);
  141. stringBuilder.append(channelId + channelOffsetNum).append(",");
  142. }
  143. stringBuilder.deleteCharAt(stringBuilder.length() - 1);
  144. hParameters.put("CHANNELIDS", stringBuilder.toString());
  145. }
  146. Dispatch oResult = WCMServiceCaller.Call(sServiceId, sMethodName, hParameters, true);
  147. System.out.println("结果:" + oResult.getResponseText());
  148. }
  149. }
  150. private List<Map<String, Object>> querySiteOffset() throws WCMException {
  151. String sql = "SELECT * FROM data_migration_offset WHERE table_name = ?;";
  152. List<Object> list = new ArrayList<>();
  153. list.add("wcmwebsite");
  154. return DBUtil.getDBManager().executeStringsQuery(connection, sql, list);
  155. }
  156. private List<Map<String, Object>> queryChannelOffset() throws WCMException {
  157. String sql = "SELECT * FROM data_migration_offset WHERE table_name = ?;";
  158. List<Object> list = new ArrayList<>();
  159. list.add("wcmchannel");
  160. return DBUtil.getDBManager().executeStringsQuery(connection, sql, list);
  161. }
  162. private long getOffset(List<Map<String, Object>> offsetMap, long id) throws BizError {
  163. long offsetNum = -1;
  164. for (Map<String, Object> objectMap : offsetMap) {
  165. long startId = (long) objectMap.get("START_ID");
  166. long endId = (long) objectMap.get("END_ID");
  167. if (id > startId && id <= endId) {
  168. offsetNum = (long) objectMap.get("OFFSET_NUM");
  169. }
  170. }
  171. if (offsetNum == -1) {
  172. throw new BizError("没有找到对应的偏移量");
  173. }
  174. return offsetNum;
  175. }
  176. }