Commit cfcd880c074023a9aff7732725e58074c719521e

Authored by bernard
1 parent 5b6367a5

Restored searchIssuesByProject. Added FilterHelper.

  1 +package pl.com.it_crowd.youtrack.api;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.List;
  5 +
  6 +public final class FilterHelper {
  7 +// -------------------------- STATIC METHODS --------------------------
  8 +
  9 + public static Filter issueId(String issueId)
  10 + {
  11 + return new Filter().issueId(issueId);
  12 + }
  13 +
  14 + public static Filter summary(String summary)
  15 + {
  16 + return new Filter().summary(summary);
  17 + }
  18 +
  19 + public static Filter unresolved()
  20 + {
  21 + return new Filter().unresolved();
  22 + }
  23 +
  24 +// --------------------------- CONSTRUCTORS ---------------------------
  25 +
  26 + private FilterHelper()
  27 + {
  28 +
  29 + }
  30 +
  31 +// -------------------------- INNER CLASSES --------------------------
  32 +
  33 + public static class Filter {
  34 +// ------------------------------ FIELDS ------------------------------
  35 +
  36 + private List<Condition> conditions = new ArrayList<Condition>();
  37 +
  38 +// --------------------------- CONSTRUCTORS ---------------------------
  39 +
  40 + private Filter()
  41 + {
  42 +
  43 + }
  44 +
  45 +// ------------------------ CANONICAL METHODS ------------------------
  46 +
  47 + @Override
  48 + public String toString()
  49 + {
  50 + StringBuilder builder = new StringBuilder();
  51 + for (Condition condition : conditions) {
  52 + if (condition.key != null) {
  53 + builder.append(" ");
  54 + builder.append(condition.key);
  55 + builder.append(":");
  56 + }
  57 + builder.append(condition.value);
  58 + }
  59 + return builder.toString();
  60 + }
  61 +
  62 +// -------------------------- OTHER METHODS --------------------------
  63 +
  64 + public Filter issueId(String issueId)
  65 + {
  66 + conditions.add(new Condition(Key.ISSUE_ID, issueId));
  67 + return this;
  68 + }
  69 +
  70 + public Filter summary(String summary)
  71 + {
  72 + conditions.add(new Condition(null, summary));
  73 + return this;
  74 + }
  75 +
  76 + public Filter unresolved()
  77 + {
  78 + conditions.add(new Condition(null, "#Unresolved"));
  79 + return this;
  80 + }
  81 +
  82 +// -------------------------- ENUMERATIONS --------------------------
  83 +
  84 + private enum Key {
  85 + ISSUE_ID("issue id");
  86 +
  87 +// ------------------------------ FIELDS ------------------------------
  88 +
  89 + private String key;
  90 +
  91 +// --------------------------- CONSTRUCTORS ---------------------------
  92 +
  93 + Key(String key)
  94 + {
  95 + this.key = key;
  96 + }
  97 +
  98 +// ------------------------ CANONICAL METHODS ------------------------
  99 +
  100 + @Override
  101 + public String toString()
  102 + {
  103 + return key;
  104 + }
  105 + }
  106 +
  107 +// -------------------------- INNER CLASSES --------------------------
  108 +
  109 + private class Condition {
  110 +// ------------------------------ FIELDS ------------------------------
  111 +
  112 + private Key key;
  113 +
  114 + private String value;
  115 +
  116 +// --------------------------- CONSTRUCTORS ---------------------------
  117 +
  118 + private Condition(Key key, String value)
  119 + {
  120 + this.key = key;
  121 + this.value = value;
  122 + }
  123 + }
  124 + }
  125 +}
... ...
... ... @@ -16,16 +16,13 @@ import pl.com.it_crowd.youtrack.api.rest.Issues;
16 16 import javax.xml.bind.JAXBException;
17 17 import java.io.IOException;
18 18 import java.net.URL;
  19 +import java.security.GeneralSecurityException;
19 20 import java.util.ArrayList;
20 21 import java.util.List;
21 22
22   -import java.security.GeneralSecurityException;
23   -
24 23 public class YoutrackAPI {
25 24 // ------------------------------ FIELDS ------------------------------
26 25
27   - private Integer MAX_RESULTS = 1000;
28   -
29 26 private String serviceLocation;
30 27
31 28 private WebClient webClient;
... ... @@ -41,7 +38,7 @@ public class YoutrackAPI {
41 38 try {
42 39 this.webClient.setUseInsecureSSL(true);
43 40 } catch (GeneralSecurityException e) {
44   - e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
  41 + throw new RuntimeException("Cannot turn on 'Use insecure SSL'", e);
45 42 }
46 43 }
47 44
... ... @@ -80,9 +77,9 @@ public class YoutrackAPI {
80 77 }
81 78 }
82 79
83   - public List<Issue> searchIssuesByProject(String project) throws JAXBException, IOException
  80 + public List<Issue> searchIssuesByProject(String project, Object filter) throws JAXBException, IOException
84 81 {
85   - String url = serviceLocation + "/rest/issue/byproject/" + project + "?max=" + MAX_RESULTS;
  82 + String url = serviceLocation + "/rest/issue/byproject/" + project + "?filter=" + filter;
86 83 WebResponse webResponse = webClient.<Page>getPage(url).getWebResponse();
87 84
88 85 List<Issues.Issue> issues = IssuesUnmarshaller.unmarshal(webResponse.getContentAsStream()).getIssue();
... ...
Please register or login to post a comment