Showing
4 changed files
with
72 additions
and
15 deletions
@@ -63,7 +63,7 @@ | @@ -63,7 +63,7 @@ | ||
63 | </executions> | 63 | </executions> |
64 | <configuration> | 64 | <configuration> |
65 | <packageName>pl.com.it_crowd.youtrack.api.rest</packageName> | 65 | <packageName>pl.com.it_crowd.youtrack.api.rest</packageName> |
66 | - <outputDirectory>${build.sourceDirectory}</outputDirectory> | 66 | + <outputDirectory>${project.build.sourceDirectory}</outputDirectory> |
67 | <clearOutputDir>false</clearOutputDir> | 67 | <clearOutputDir>false</clearOutputDir> |
68 | <extension>false</extension> | 68 | <extension>false</extension> |
69 | </configuration> | 69 | </configuration> |
@@ -58,7 +58,7 @@ public final class Filter { | @@ -58,7 +58,7 @@ public final class Filter { | ||
58 | return new Filter().resolved(date); | 58 | return new Filter().resolved(date); |
59 | } | 59 | } |
60 | 60 | ||
61 | - public static Filter stateFilter(StateValues state) | 61 | + public static Filter stateFilter(StateValues... state) |
62 | { | 62 | { |
63 | return new Filter().state(state); | 63 | return new Filter().state(state); |
64 | } | 64 | } |
@@ -191,9 +191,13 @@ public final class Filter { | @@ -191,9 +191,13 @@ public final class Filter { | ||
191 | return this; | 191 | return this; |
192 | } | 192 | } |
193 | 193 | ||
194 | - public Filter state(StateValues state) | 194 | + public Filter state(StateValues... state) |
195 | { | 195 | { |
196 | - return state(state.getFilterValue()); | 196 | + final StringBuilder stringBuilder = new StringBuilder(); |
197 | + for (StateValues value : state) { | ||
198 | + stringBuilder.append(",").append(value.getFilterValue()); | ||
199 | + } | ||
200 | + return state(stringBuilder.length() > 0 ? stringBuilder.substring(1) : stringBuilder.toString()); | ||
197 | } | 201 | } |
198 | 202 | ||
199 | public Filter summary(String summary) | 203 | public Filter summary(String summary) |
1 | package pl.com.it_crowd.youtrack.api.defaults; | 1 | package pl.com.it_crowd.youtrack.api.defaults; |
2 | 2 | ||
3 | public enum StateValues { | 3 | public enum StateValues { |
4 | - Submitted, Open, InProgress("{In Progress}", "In Progress"), ToBeDiscussed("{To be discussed}", "To be discussed"), Reopened, CantReproduce( | ||
5 | - "{Can't Reproduce}", "Can't Reproduce"), Duplicate, Fixed, WontFix("{Won't fix}", "Won't fix"), | ||
6 | - Incomplete, Obsolete, Verified, New, Resolved("Resolved", null), Unresolved("Unresolved", null); | 4 | + Submitted, |
5 | + Open, | ||
6 | + InProgress("{In Progress}", "In Progress"), | ||
7 | + ToBeDiscussed("{To be discussed}", "To be discussed"), | ||
8 | + Reopened, | ||
9 | + CantReproduce("{Can't Reproduce}", "Can't Reproduce"), | ||
10 | + Duplicate, | ||
11 | + Fixed, | ||
12 | + WontFix("{Won't fix}", "Won't fix"), | ||
13 | + Incomplete, | ||
14 | + Obsolete, | ||
15 | + Verified, | ||
16 | + New, | ||
17 | + NotSubmitted(true, Submitted), | ||
18 | + NotOpen(true, Open), | ||
19 | + NotInProgress(true, InProgress), | ||
20 | + NotToBeDiscussed(true, ToBeDiscussed), | ||
21 | + NotReopened(true, Reopened), | ||
22 | + NotCantReproduce(true, CantReproduce), | ||
23 | + NotDuplicate(true, Duplicate), | ||
24 | + NotFixed(true, Fixed), | ||
25 | + NotWontFix(true, WontFix), | ||
26 | + NotIncomplete(true, Incomplete), | ||
27 | + NotObsolete(true, Open), | ||
28 | + NotVerified(true, Verified), | ||
29 | + NotNew(true, New), | ||
30 | + Resolved("Resolved", null), | ||
31 | + Unresolved("Unresolved", null); | ||
7 | 32 | ||
8 | // ------------------------------ FIELDS ------------------------------ | 33 | // ------------------------------ FIELDS ------------------------------ |
9 | 34 | ||
@@ -11,29 +36,54 @@ public enum StateValues { | @@ -11,29 +36,54 @@ public enum StateValues { | ||
11 | 36 | ||
12 | private String filterValue; | 37 | private String filterValue; |
13 | 38 | ||
39 | + private boolean not; | ||
40 | + | ||
14 | // --------------------------- CONSTRUCTORS --------------------------- | 41 | // --------------------------- CONSTRUCTORS --------------------------- |
15 | 42 | ||
16 | private StateValues() | 43 | private StateValues() |
17 | { | 44 | { |
18 | - filterValue = name(); | ||
19 | - commandValue = name(); | 45 | + this(false); |
46 | + } | ||
47 | + | ||
48 | + private StateValues(boolean not) | ||
49 | + { | ||
50 | + this(not, null, null); | ||
20 | } | 51 | } |
21 | 52 | ||
22 | private StateValues(String filterValue, String commandValue) | 53 | private StateValues(String filterValue, String commandValue) |
23 | { | 54 | { |
24 | - this.filterValue = filterValue; | ||
25 | - this.commandValue = commandValue; | 55 | + this(false, filterValue, commandValue); |
56 | + } | ||
57 | + | ||
58 | + private StateValues(boolean not, StateValues value) | ||
59 | + { | ||
60 | + this(not, value.getFilterValue(), value.getCommandValue()); | ||
61 | + } | ||
62 | + | ||
63 | + private StateValues(boolean not, String filterValue, String commandValue) | ||
64 | + { | ||
65 | + this.not = not; | ||
66 | + this.filterValue = filterValue == null ? name() : filterValue; | ||
67 | + this.commandValue = commandValue == null ? name() : commandValue; | ||
68 | + } | ||
69 | + | ||
70 | +// ------------------------ CANONICAL METHODS ------------------------ | ||
71 | + | ||
72 | + @Override | ||
73 | + public String toString() | ||
74 | + { | ||
75 | + return getCommandValue(); | ||
26 | } | 76 | } |
27 | 77 | ||
28 | -// --------------------- GETTER / SETTER METHODS --------------------- | 78 | +// -------------------------- OTHER METHODS -------------------------- |
29 | 79 | ||
30 | public String getCommandValue() | 80 | public String getCommandValue() |
31 | { | 81 | { |
32 | - return commandValue; | 82 | + return (not ? "-" : "") + commandValue; |
33 | } | 83 | } |
34 | 84 | ||
35 | public String getFilterValue() | 85 | public String getFilterValue() |
36 | { | 86 | { |
37 | - return filterValue; | 87 | + return (not ? "-" : "") + filterValue; |
38 | } | 88 | } |
39 | } | 89 | } |
@@ -119,6 +119,10 @@ public class FilterTest { | @@ -119,6 +119,10 @@ public class FilterTest { | ||
119 | Assert.assertEquals("state:" + encodeURL("Obsolete"), Filter.stateFilter(StateValues.Obsolete).toString()); | 119 | Assert.assertEquals("state:" + encodeURL("Obsolete"), Filter.stateFilter(StateValues.Obsolete).toString()); |
120 | Assert.assertEquals("state:" + encodeURL("Open"), Filter.stateFilter(StateValues.Open).toString()); | 120 | Assert.assertEquals("state:" + encodeURL("Open"), Filter.stateFilter(StateValues.Open).toString()); |
121 | Assert.assertEquals("state:" + encodeURL("{Won't fix}"), Filter.stateFilter(StateValues.WontFix).toString()); | 121 | Assert.assertEquals("state:" + encodeURL("{Won't fix}"), Filter.stateFilter(StateValues.WontFix).toString()); |
122 | + Assert.assertEquals("state:" + encodeURL("-{Won't fix}"), Filter.stateFilter(StateValues.NotWontFix).toString()); | ||
123 | + Assert.assertEquals("state:" + encodeURL("-Verified"), Filter.stateFilter(StateValues.NotVerified).toString()); | ||
124 | + Assert.assertEquals("state:" + encodeURL("-Verified,{Can't Reproduce},Obsolete,{Won't fix}"), | ||
125 | + Filter.stateFilter(StateValues.NotVerified, StateValues.CantReproduce, StateValues.Obsolete, StateValues.WontFix).toString()); | ||
122 | } | 126 | } |
123 | 127 | ||
124 | @Test | 128 | @Test |
@@ -143,7 +147,6 @@ public class FilterTest { | @@ -143,7 +147,6 @@ public class FilterTest { | ||
143 | } | 147 | } |
144 | 148 | ||
145 | @Test | 149 | @Test |
146 | - | ||
147 | public void updaterFilter() | 150 | public void updaterFilter() |
148 | { | 151 | { |
149 | Assert.assertEquals("updated by:bernard", Filter.updaterFilter("bernard").toString()); | 152 | Assert.assertEquals("updated by:bernard", Filter.updaterFilter("bernard").toString()); |
Please
register
or
login
to post a comment