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

/src/main/java/com/atlassian/jira/plugins/bitbucket/streams/GlobalFilterQueryWhereClauseBuilder.java

https://bitbucket.org/atlassian/jira-bitbucket-connector/
Java | 146 lines | 135 code | 7 blank | 4 comment | 56 complexity | b5e25057179cbd87e482bf32a0a98720 MD5 | raw file
  1. package com.atlassian.jira.plugins.bitbucket.streams;
  2. import org.apache.commons.lang.StringUtils;
  3. /**
  4. *
  5. */
  6. public class GlobalFilterQueryWhereClauseBuilder
  7. {
  8. private GlobalFilter gf;
  9. public GlobalFilterQueryWhereClauseBuilder(GlobalFilter gf)
  10. {
  11. this.gf = gf;
  12. }
  13. public String build()
  14. {
  15. StringBuilder whereClauseProjectsSb = new StringBuilder();
  16. StringBuilder whereClauseIssueKyesSb = new StringBuilder();
  17. StringBuilder whereClauseUsersSb = new StringBuilder();
  18. if (gf != null)
  19. {
  20. if (gf.getInProjects() != null && gf.getInProjects().iterator().hasNext())
  21. {
  22. for (String projectKey : gf.getInProjects())
  23. {
  24. if (StringUtils.isBlank(projectKey))
  25. {
  26. continue;
  27. }
  28. if (whereClauseProjectsSb.length() != 0)
  29. {
  30. whereClauseProjectsSb.append(" OR ");
  31. }
  32. whereClauseProjectsSb.append("ISSUE_ID like '").append(projectKey).append("-%'");
  33. }
  34. }
  35. if (gf.getNotInProjects() != null && gf.getNotInProjects().iterator().hasNext())
  36. {
  37. for (String projectKey : gf.getNotInProjects())
  38. {
  39. if (StringUtils.isBlank(projectKey))
  40. {
  41. continue;
  42. }
  43. if (whereClauseProjectsSb.length() != 0)
  44. {
  45. whereClauseProjectsSb.append(" AND ");
  46. }
  47. whereClauseProjectsSb.append("ISSUE_ID not like '").append(projectKey).append("-%'");
  48. }
  49. }
  50. if (gf.getInIssues() != null && gf.getInIssues().iterator().hasNext())
  51. {
  52. for (String issueKey : gf.getInIssues())
  53. {
  54. if (StringUtils.isBlank(issueKey))
  55. {
  56. continue;
  57. }
  58. if (whereClauseIssueKyesSb.length() != 0)
  59. {
  60. whereClauseIssueKyesSb.append(" OR ");
  61. }
  62. whereClauseIssueKyesSb.append("ISSUE_ID like '").append(issueKey.toUpperCase()).append("'");
  63. }
  64. }
  65. if (gf.getNotInIssues() != null && gf.getNotInIssues().iterator().hasNext())
  66. {
  67. for (String issueKey : gf.getNotInIssues())
  68. {
  69. if (StringUtils.isBlank(issueKey))
  70. {
  71. continue;
  72. }
  73. if (whereClauseIssueKyesSb.length() != 0)
  74. {
  75. whereClauseIssueKyesSb.append(" AND ");
  76. }
  77. whereClauseIssueKyesSb.append("ISSUE_ID not like '").append(issueKey.toUpperCase()).append("'");
  78. }
  79. }
  80. if (gf.getInUsers() != null && gf.getInUsers().iterator().hasNext())
  81. {
  82. for (String username : gf.getInUsers())
  83. {
  84. if (StringUtils.isBlank(username))
  85. {
  86. continue;
  87. }
  88. if (whereClauseUsersSb.length() != 0)
  89. {
  90. whereClauseUsersSb.append(" OR ");
  91. }
  92. whereClauseUsersSb.append("AUTHOR like '").append(username).append("'");
  93. }
  94. }
  95. if (gf.getNotInUsers() != null && gf.getNotInUsers().iterator().hasNext())
  96. {
  97. for (String username : gf.getNotInUsers())
  98. {
  99. if (StringUtils.isBlank(username))
  100. {
  101. continue;
  102. }
  103. if (whereClauseUsersSb.length() != 0)
  104. {
  105. whereClauseUsersSb.append(" AND ");
  106. }
  107. whereClauseUsersSb.append("AUTHOR not like '").append(username).append("'");
  108. }
  109. }
  110. }
  111. StringBuilder whereClauseSb = new StringBuilder();
  112. if (whereClauseProjectsSb.length() != 0)
  113. {
  114. whereClauseSb.append("(").append(whereClauseProjectsSb.toString()).append(")");
  115. }
  116. if (whereClauseIssueKyesSb.length() != 0)
  117. {
  118. if (whereClauseSb.length() != 0)
  119. {
  120. whereClauseSb.append(" AND ");
  121. }
  122. whereClauseSb.append("(").append(whereClauseIssueKyesSb.toString()).append(")");
  123. }
  124. if (whereClauseUsersSb.length() != 0)
  125. {
  126. if (whereClauseSb.length() != 0)
  127. {
  128. whereClauseSb.append(" AND ");
  129. }
  130. whereClauseSb.append("(").append(whereClauseUsersSb.toString()).append(")");
  131. }
  132. // if no filter applyied than "no" where clause should be used
  133. if (whereClauseSb.length() == 0)
  134. {
  135. whereClauseSb.append(" true ");
  136. }
  137. return whereClauseSb.toString();
  138. }
  139. }