PageRenderTime 28ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 1ms

/confluence/glossary/src/main/java/com/keysight/glossary/events/GlossarySpaceEventListener.java

https://bitbucket.org/SaiPatel/keysight-plugins-for-atlassian-products
Java | 224 lines | 193 code | 31 blank | 0 comment | 26 complexity | 81cae737d3d4e0b99cf3900fc7e8b735 MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.keysight.glossary.space;
  2. import com.atlassian.event.api.EventListener;
  3. import com.atlassian.event.api.EventPublisher;
  4. import com.atlassian.confluence.pages.Page;
  5. import com.atlassian.confluence.pages.PageManager;
  6. import com.atlassian.confluence.plugins.createcontent.api.events.SpaceBlueprintCreateEvent;
  7. import com.atlassian.confluence.plugins.createcontent.api.events.SpaceBlueprintHomePageCreateEvent;
  8. import com.atlassian.confluence.plugins.ia.service.SidebarLinkService;
  9. import com.atlassian.confluence.labels.Label;
  10. import com.atlassian.confluence.labels.SpaceLabelManager;
  11. import com.atlassian.confluence.security.ContentPermission;
  12. import com.atlassian.confluence.security.SpacePermission;
  13. import com.atlassian.confluence.security.SpacePermissionManager;
  14. import com.atlassian.confluence.spaces.Space;
  15. import com.atlassian.confluence.spaces.SpaceDescription;
  16. import com.atlassian.confluence.spaces.SpaceManager;
  17. import com.atlassian.confluence.user.ConfluenceUser;
  18. import com.atlassian.confluence.user.UserAccessor;
  19. import com.atlassian.plugin.ModuleCompleteKey;
  20. import com.atlassian.renderer.v2.components.HtmlEscaper;
  21. import org.springframework.beans.factory.DisposableBean;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Component;
  24. import com.atlassian.confluence.user.AuthenticatedUserThreadLocal;
  25. import org.apache.commons.lang.StringUtils;
  26. import java.util.Arrays;
  27. import java.util.List;
  28. import java.util.Map;
  29. @Component
  30. public class GlossarySpaceEventListener implements DisposableBean
  31. {
  32. private static final String GROUP_ID = "com.keysight";
  33. private static final String ARTIFACT_ID = "glossary";
  34. private static final String MODULE = "glossary-space-blueprint";
  35. private static final ModuleCompleteKey BLUEPRINT_KEY = new ModuleCompleteKey( GROUP_ID + "." + ARTIFACT_ID, MODULE );
  36. private static final String SPACE_CATEGORIES = "keysight-glossary-space-categories";
  37. private static final String SPACE_ADMINS = "administrators";
  38. private static final String ADMIN_GROUP_UNIQUE_KEY = "admin-group-unique-key";
  39. private static final String ANONYMOUS_ALLOWED = "anonymous-allowed";
  40. private static final String SPACE_DESCRIPTION = "space-description";
  41. private final EventPublisher eventPublisher;
  42. private final PageManager pageManager;
  43. private final SidebarLinkService sidebarLinkService;
  44. private final SpaceManager spaceManager;
  45. private final SpaceLabelManager spaceLabelManager;
  46. private final SpacePermissionManager spacePermissionManager;
  47. private final UserAccessor userAccessor;
  48. @Autowired
  49. public GlossarySpaceEventListener(EventPublisher eventPublisher,
  50. PageManager pageManager,
  51. SidebarLinkService sidebarLinkService,
  52. SpaceLabelManager spaceLabelManager,
  53. SpaceManager spaceManager,
  54. SpacePermissionManager spacePermissionManager,
  55. UserAccessor userAccessor )
  56. {
  57. this.eventPublisher = eventPublisher;
  58. this.pageManager = pageManager;
  59. this.sidebarLinkService = sidebarLinkService;
  60. this.spaceLabelManager = spaceLabelManager;
  61. this.spaceManager = spaceManager;
  62. this.spacePermissionManager = spacePermissionManager;
  63. this.userAccessor = userAccessor;
  64. eventPublisher.register(this);
  65. }
  66. @EventListener
  67. public void onSpaceCreated(SpaceBlueprintCreateEvent event) {
  68. if (!BLUEPRINT_KEY.getCompleteKey().equals(event.getSpaceBlueprint().getModuleCompleteKey())) {
  69. return;
  70. }
  71. ConfluenceUser user;
  72. Map <String, Object> eventContext = event.getContext();
  73. Space space = event.getSpace();
  74. SpaceDescription spaceDescription = space.getDescription();
  75. String group = "";
  76. boolean bGrantCurrentUserAdminRights = true;
  77. boolean bAdminGroupsSet = false;
  78. spacePermissionManager.removeAllPermissions(space);
  79. group = "TEAM-CONFL-2-ADMIN";
  80. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.VIEWSPACE_PERMISSION, space, group));
  81. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.REMOVE_OWN_CONTENT_PERMISSION, space, group));
  82. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.CREATEEDIT_PAGE_PERMISSION, space, group));
  83. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.REMOVE_PAGE_PERMISSION, space, group));
  84. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.EDITBLOG_PERMISSION, space, group));
  85. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.REMOVE_BLOG_PERMISSION, space, group));
  86. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.COMMENT_PERMISSION, space, group));
  87. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.REMOVE_COMMENT_PERMISSION, space, group));
  88. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.CREATE_ATTACHMENT_PERMISSION, space, group));
  89. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.REMOVE_ATTACHMENT_PERMISSION, space, group));
  90. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.SET_PAGE_PERMISSIONS_PERMISSION, space, group));
  91. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.REMOVE_MAIL_PERMISSION, space, group));
  92. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.EXPORT_SPACE_PERMISSION, space, group));
  93. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.ADMINISTER_SPACE_PERMISSION, space, group));
  94. List<String> currentUsersGroups = userAccessor.getGroupNames( AuthenticatedUserThreadLocal.get() );
  95. for( String groupName : currentUsersGroups ){
  96. if( groupName.equals( "TEAM-CONFL-2-ADMIN" ) ){
  97. bGrantCurrentUserAdminRights = false;
  98. }
  99. }
  100. if( (eventContext.containsKey( SPACE_ADMINS ) && !StringUtils.isEmpty( (String) eventContext.get( SPACE_ADMINS ) ) ) || bGrantCurrentUserAdminRights ){
  101. String spaceAdminList = AuthenticatedUserThreadLocal.get().getName();
  102. if( eventContext.containsKey( SPACE_ADMINS ) && !StringUtils.isEmpty( (String) eventContext.get( SPACE_ADMINS ) ) && bGrantCurrentUserAdminRights ){
  103. spaceAdminList = (String) eventContext.get(SPACE_ADMINS) + "," + AuthenticatedUserThreadLocal.get().getName();
  104. } else if( eventContext.containsKey( SPACE_ADMINS ) && !StringUtils.isEmpty( (String) eventContext.get( SPACE_ADMINS ) ) ) {
  105. spaceAdminList = (String) eventContext.get(SPACE_ADMINS);
  106. }
  107. String[] spaceAdmins = spaceAdminList.split( "[,\\s]+" );
  108. for( int i = 0; i < spaceAdmins.length; i++ ){
  109. user = userAccessor.getUserByName(spaceAdmins[i]);
  110. if( user != null ){
  111. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.VIEWSPACE_PERMISSION, space, user));
  112. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.REMOVE_OWN_CONTENT_PERMISSION, space, user));
  113. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.CREATEEDIT_PAGE_PERMISSION, space, user));
  114. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.REMOVE_PAGE_PERMISSION, space, user));
  115. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.EDITBLOG_PERMISSION, space, user));
  116. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.REMOVE_BLOG_PERMISSION, space, user));
  117. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.COMMENT_PERMISSION, space, user));
  118. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.REMOVE_COMMENT_PERMISSION, space, user));
  119. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.CREATE_ATTACHMENT_PERMISSION, space, user));
  120. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.REMOVE_ATTACHMENT_PERMISSION, space, user));
  121. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.SET_PAGE_PERMISSIONS_PERMISSION, space, user));
  122. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.REMOVE_MAIL_PERMISSION, space, user));
  123. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.EXPORT_SPACE_PERMISSION, space, user));
  124. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.ADMINISTER_SPACE_PERMISSION, space, user));
  125. }
  126. }
  127. }
  128. group = "TEAM-CONFL-2-ALL-USERS";
  129. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.VIEWSPACE_PERMISSION, space, group));
  130. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.REMOVE_OWN_CONTENT_PERMISSION, space, group));
  131. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.COMMENT_PERMISSION, space, group));
  132. group = "ORG-ALL-KEYSIGHT";
  133. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.VIEWSPACE_PERMISSION, space, group));
  134. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.REMOVE_OWN_CONTENT_PERMISSION, space, group));
  135. spacePermissionManager.savePermission(SpacePermission.createGroupSpacePermission(SpacePermission.COMMENT_PERMISSION, space, group));
  136. user = userAccessor.getUserByName("Anonymous");
  137. spacePermissionManager.savePermission(SpacePermission.createUserSpacePermission(SpacePermission.VIEWSPACE_PERMISSION, space, user));
  138. if( eventContext.containsKey( SPACE_DESCRIPTION ) ){
  139. spaceDescription.setBodyAsString( (String) eventContext.get( SPACE_DESCRIPTION ) );
  140. }
  141. return;
  142. }
  143. @EventListener
  144. public void onSpaceHomePageCreated(SpaceBlueprintHomePageCreateEvent event) {
  145. if (!BLUEPRINT_KEY.getCompleteKey().equals(event.getSpaceBlueprint().getModuleCompleteKey())) {
  146. return;
  147. }
  148. Map <String, Object> eventContext = event.getContext();
  149. Space space = event.getSpace();
  150. SpaceDescription spaceDescription = space.getDescription();
  151. Label spaceCategory;
  152. String[] alphabet = new String[]{ "&", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
  153. "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
  154. if( eventContext.containsKey( SPACE_CATEGORIES ) && !StringUtils.isEmpty( (String) eventContext.get( SPACE_CATEGORIES ) ) ){
  155. String spaceCategoriesList = (String) eventContext.get(SPACE_CATEGORIES);
  156. String[] spaceCategories = spaceCategoriesList.split( "[,\\s]+" );
  157. for( int i = 0; i < spaceCategories.length; i++ ){
  158. if( !isCurrentSpaceCategory( spaceDescription, spaceCategories[i] )){
  159. spaceCategory = spaceLabelManager.addLabel( space, spaceCategories[i] );
  160. if( spaceCategory == null ){
  161. System.out.println( "Failed to add Space Category: " + spaceCategories[i] );
  162. }
  163. }
  164. }
  165. }
  166. Page homePage = space.getHomePage();
  167. for( String letter : alphabet ){
  168. Page newPage = new Page();
  169. newPage.setTitle( letter );
  170. newPage.setSpace( space );
  171. newPage.setBodyAsString( "<p><ac:structured-macro ac:name=\"children\" ac:schema-version=\"1\"/></p>\n" );
  172. pageManager.saveContentEntity( newPage, null );
  173. homePage.addChild(newPage);
  174. pageManager.saveContentEntity(homePage, null);
  175. }
  176. return;
  177. }
  178. @Override
  179. public void destroy() throws Exception
  180. {
  181. eventPublisher.unregister(this);
  182. }
  183. private boolean isCurrentSpaceCategory( SpaceDescription spaceDescription, String spaceCategory ){
  184. boolean bFlag = false;
  185. List<Label> currentSpaceCategories = spaceDescription.getLabels();
  186. for( Label currentSpaceCategory : currentSpaceCategories ){
  187. if( currentSpaceCategory.getName().equals( spaceCategory ) ){
  188. bFlag = true;
  189. }
  190. }
  191. return bFlag;
  192. }
  193. }