1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.atlassian.jira.rest.client.domain.input;
18
19 import com.atlassian.jira.rest.client.domain.BasicUser;
20 import com.atlassian.jira.rest.client.domain.Visibility;
21 import com.atlassian.jira.rest.client.domain.Worklog;
22 import com.google.common.base.Preconditions;
23 import org.joda.time.DateTime;
24
25 import java.net.URI;
26
27
28
29
30
31
32
33
34
35
36 public class WorklogInputBuilder {
37 public static final String ESTIMATE_UNIT_MINUTES = "m";
38 private URI self;
39 private URI issueUri;
40 private BasicUser author;
41 private BasicUser updateAuthor;
42 private String comment;
43 private DateTime startDate;
44 private int minutesSpent;
45 private Visibility visibility;
46 private WorklogInput.AdjustEstimate adjustEstimate = WorklogInput.AdjustEstimate.AUTO;
47 private String adjustEstimateValue;
48
49 public WorklogInputBuilder(URI issueUri) {
50 Preconditions.checkNotNull(issueUri, "The issueUri cannot be null");
51 this.issueUri = issueUri;
52 }
53
54 @SuppressWarnings("UnusedDeclaration")
55 public WorklogInputBuilder copyFromWorklog(Worklog worklog) {
56 return this
57 .setSelf(worklog.getSelf())
58 .setIssueUri(worklog.getIssueUri())
59 .setAuthor(worklog.getAuthor())
60 .setUpdateAuthor(worklog.getUpdateAuthor())
61 .setComment(worklog.getComment())
62 .setStartDate(worklog.getStartDate())
63 .setMinutesSpent(worklog.getMinutesSpent())
64 .setVisibility(worklog.getVisibility());
65 }
66
67
68 private WorklogInputBuilder setAdjustEstimate(WorklogInput.AdjustEstimate adjustEstimate, String estimateValue) {
69 this.adjustEstimate = adjustEstimate;
70 this.adjustEstimateValue = estimateValue;
71 return this;
72 }
73
74
75
76
77
78
79
80
81
82 public WorklogInputBuilder setAdjustEstimateNew(String newEstimate) {
83 return setAdjustEstimate(WorklogInput.AdjustEstimate.NEW, newEstimate);
84 }
85
86
87
88
89
90
91 public WorklogInputBuilder setAdjustEstimateNew(int newEstimateMinutes) {
92 return setAdjustEstimate(WorklogInput.AdjustEstimate.NEW, newEstimateMinutes + ESTIMATE_UNIT_MINUTES);
93 }
94
95
96
97
98
99 public WorklogInputBuilder setAdjustEstimateLeave() {
100 return setAdjustEstimate(WorklogInput.AdjustEstimate.LEAVE, null);
101 }
102
103
104
105
106
107
108
109
110
111 public WorklogInputBuilder setAdjustEstimateManual(String reduceEstimateBy) {
112 return setAdjustEstimate(WorklogInput.AdjustEstimate.MANUAL, reduceEstimateBy);
113 }
114
115
116
117
118
119
120 public WorklogInputBuilder setAdjustEstimateManual(int reduceEstimateByMinutes) {
121 return setAdjustEstimate(WorklogInput.AdjustEstimate.MANUAL, reduceEstimateByMinutes + ESTIMATE_UNIT_MINUTES);
122 }
123
124
125
126
127
128
129
130 @SuppressWarnings("UnusedDeclaration")
131 public WorklogInputBuilder setAdjustEstimateAuto() {
132 return setAdjustEstimate(WorklogInput.AdjustEstimate.AUTO, null);
133 }
134
135 public WorklogInputBuilder setSelf(URI self) {
136 this.self = self;
137 return this;
138 }
139
140 public WorklogInputBuilder setIssueUri(URI issueUri) {
141 this.issueUri = issueUri;
142 return this;
143 }
144
145 public WorklogInputBuilder setAuthor(BasicUser author) {
146 this.author = author;
147 return this;
148 }
149
150 public WorklogInputBuilder setUpdateAuthor(BasicUser updateAuthor) {
151 this.updateAuthor = updateAuthor;
152 return this;
153 }
154
155 public WorklogInputBuilder setComment(String comment) {
156 this.comment = comment;
157 return this;
158 }
159
160 public WorklogInputBuilder setStartDate(DateTime startDate) {
161 this.startDate = startDate;
162 return this;
163 }
164
165 public WorklogInputBuilder setMinutesSpent(int minutesSpent) {
166 this.minutesSpent = minutesSpent;
167 return this;
168 }
169
170 public WorklogInputBuilder setVisibility(Visibility visibility) {
171 this.visibility = visibility;
172 return this;
173 }
174
175 public WorklogInput build() {
176 return new WorklogInput(self, issueUri, author, updateAuthor, comment, startDate, minutesSpent, visibility, adjustEstimate, adjustEstimateValue);
177 }
178 }