/src/com/shroggle/logic/forum/ForumDispatchHelper.java

https://github.com/shroggle/Shroggle · Java · 158 lines · 117 code · 26 blank · 15 comment · 52 complexity · a0b877c7772fed566271c8defb270b30 MD5 · raw file

  1. /*********************************************************************
  2. * *
  3. * Copyright (c) 2007-2011 by Web-Deva. *
  4. * All rights reserved. *
  5. * *
  6. * This computer program is protected by copyright law and *
  7. * international treaties. Unauthorized reproduction or distribution *
  8. * of this program, or any portion of it, may result in severe civil *
  9. * and criminal penalties, and will be prosecuted to the maximum *
  10. * extent possible under the law. *
  11. * *
  12. *********************************************************************/
  13. package com.shroggle.logic.forum;
  14. import com.shroggle.presentation.forum.*;
  15. import com.shroggle.exception.UnknownForumDispatchTypeException;
  16. import com.shroggle.exception.MissingDispatchParameterException;
  17. import javax.servlet.http.HttpServletRequest;
  18. import javax.servlet.ServletException;
  19. import java.io.IOException;
  20. import java.util.Map;
  21. /**
  22. * @author dmitry.solomadin
  23. */
  24. public class ForumDispatchHelper {
  25. public ForumDispatchHelper(HttpServletRequest httpServletRequest) {
  26. this.httpServletRequest = httpServletRequest;
  27. }
  28. private ForumDispatchHelper() {
  29. }
  30. public String dispatch(final ForumDispatchType dispatch, final Integer widgetId, final Integer forumId,
  31. final Integer subForumId, final Integer threadId, final Integer postId,
  32. final boolean showOnUserPages, final boolean draftPostEdit) throws IOException, ServletException {
  33. final ForumDispatchRequest request = new ForumDispatchRequest();
  34. request.setDispatchForum(dispatch);
  35. request.setWidgetId(widgetId);
  36. request.setForumId(forumId);
  37. request.setSubForumId(subForumId);
  38. request.setThreadId(threadId);
  39. request.setPostId(postId);
  40. request.setShowOnUserPages(showOnUserPages);
  41. request.setDraftPostEdit(draftPostEdit);
  42. return dispatch(request);
  43. }
  44. public String dispatch(final ForumDispatchRequest request) throws IOException, ServletException {
  45. if (request.getWidgetId() == null) {
  46. throw new MissingDispatchParameterException("Cannot find parameter <widgetId> in dispatch request.");
  47. }
  48. if (request.isShowOnUserPages() == null){
  49. throw new MissingDispatchParameterException("Cannot find parameter <showOnUserPages> in dispatch request.");
  50. }
  51. if (request.getDispatchForum() == ForumDispatchType.SHOW_FORUM) {
  52. final ShowForumService showForumService = new ShowForumService();
  53. return showForumService.execute(request.getForumId(), request.getWidgetId(),
  54. request.isShowOnUserPages());
  55. } else if (request.getDispatchForum() == ForumDispatchType.SHOW_SUBFORUM) {
  56. final ShowSubForumService showSubForumService = new ShowSubForumService();
  57. return showSubForumService.execute(request.getSubForumId(), request.getWidgetId(),
  58. request.isShowOnUserPages());
  59. } else if (request.getDispatchForum() == ForumDispatchType.SHOW_THREAD) {
  60. final ShowThreadService showThreadService = new ShowThreadService();
  61. return showThreadService.execute(request.getThreadId(), request.getWidgetId(),
  62. request.isShowOnUserPages());
  63. } else if (request.getDispatchForum() == ForumDispatchType.SHOW_CREATE_SUBFORUM) {
  64. final CreateSubForumService createSubForumService = new CreateSubForumService();
  65. createSubForumService.setHttpServletRequest(httpServletRequest);
  66. return createSubForumService.showCreateSubForumForm(request.getForumId(), request.getWidgetId(),
  67. request.isShowOnUserPages());
  68. } else if (request.getDispatchForum() == ForumDispatchType.SHOW_RENAME_SUBFORUM) {
  69. final CreateSubForumService createSubForumService = new CreateSubForumService();
  70. createSubForumService.setHttpServletRequest(httpServletRequest);
  71. return createSubForumService.showRenameSubForumForm(request.getSubForumId(), request.getWidgetId(),
  72. request.isShowOnUserPages());
  73. } else if (request.getDispatchForum() == ForumDispatchType.SHOW_CREATE_THREAD) {
  74. final CreateThreadService createThreadService = new CreateThreadService();
  75. createThreadService.setRequest(httpServletRequest);
  76. return createThreadService.showCreateThreadForm(request.getSubForumId(), request.getWidgetId(),
  77. request.isShowOnUserPages());
  78. } else if (request.getDispatchForum() == ForumDispatchType.SHOW_CREATE_POLL) {
  79. final CreateThreadService createThreadService = new CreateThreadService();
  80. createThreadService.setRequest(httpServletRequest);
  81. return createThreadService.showCreatePollForm(request.getSubForumId(), request.getWidgetId(),
  82. request.isShowOnUserPages());
  83. } else if (request.getDispatchForum() == ForumDispatchType.SHOW_RENAME_THREAD) {
  84. final CreateThreadService createThreadService = new CreateThreadService();
  85. createThreadService.setRequest(httpServletRequest);
  86. return createThreadService.showRenameThreadForm(request.getThreadId(), request.getWidgetId(),
  87. request.isShowOnUserPages());
  88. } else if (request.getDispatchForum() == ForumDispatchType.SHOW_RENAME_POLL) {
  89. final CreateThreadService createThreadService = new CreateThreadService();
  90. createThreadService.setRequest(httpServletRequest);
  91. return createThreadService.showRenamePollForm(request.getThreadId(), request.getWidgetId(),
  92. request.isShowOnUserPages());
  93. } else if (request.getDispatchForum() == ForumDispatchType.SHOW_CREATE_POST) {
  94. final CreatePostService createPostService = new CreatePostService();
  95. createPostService.setHttpServletRequest(httpServletRequest);
  96. return createPostService.showCreatePostForm(false, false, request.getThreadId(), 0, false,
  97. request.getWidgetId(), request.isShowOnUserPages());
  98. } else if (request.getDispatchForum() == ForumDispatchType.SHOW_EDIT_POST) {
  99. final CreatePostService createPostService = new CreatePostService();
  100. createPostService.setHttpServletRequest(httpServletRequest);
  101. return createPostService.showCreatePostForm(!request.isDraftPostEdit(), false, request.getThreadId(),
  102. request.getPostId(), request.isDraftPostEdit(), request.getWidgetId(), request.isShowOnUserPages());
  103. } else if (request.getDispatchForum() == ForumDispatchType.SHOW_QUOTE_POST) {
  104. final CreatePostService createPostService = new CreatePostService();
  105. createPostService.setHttpServletRequest(httpServletRequest);
  106. return createPostService.showCreatePostForm(false, true, request.getThreadId(), request.getPostId(),
  107. false, request.getWidgetId(), request.isShowOnUserPages());
  108. } else {
  109. throw new UnknownForumDispatchTypeException("Unknown forum dispatch type: " + request.getDispatchForum());
  110. }
  111. }
  112. public static String extractForumDispatchParameters(final Map<String, String[]> parameterMap) {
  113. String forumParameters = "";
  114. for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
  115. if (entry.getKey().equals("dispatchForum")) {
  116. forumParameters += "&dispatchForum=" + entry.getValue()[0];
  117. } else if (entry.getKey().equals("subForumId")) {
  118. forumParameters += "&subForumId=" + entry.getValue()[0];
  119. } else if (entry.getKey().equals("threadId")) {
  120. forumParameters += "&threadId=" + entry.getValue()[0];
  121. } else if (entry.getKey().equals("postId")) {
  122. forumParameters += "&postId=" + entry.getValue()[0];
  123. } else if (entry.getKey().equals("draftPostEdit")) {
  124. forumParameters += "&draftPostEdit=" + entry.getValue()[0];
  125. } else if (entry.getKey().equals("widgetId")) {
  126. forumParameters += "&widgetId=" + entry.getValue()[0];
  127. }
  128. }
  129. return forumParameters;
  130. }
  131. private HttpServletRequest httpServletRequest;
  132. }