1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.atlassian.jira.rest.client.api.domain.input;
18
19 import com.atlassian.jira.rest.client.api.domain.BasicProject;
20 import com.atlassian.jira.rest.client.api.domain.CustomFieldOption;
21 import com.atlassian.jira.rest.client.api.IdentifiableEntity;
22 import com.atlassian.jira.rest.client.api.NamedEntity;
23 import com.atlassian.jira.rest.client.api.domain.TimeTracking;
24 import com.google.common.collect.ImmutableMap;
25 import com.google.common.collect.Maps;
26
27 import java.util.Map;
28
29
30
31
32
33
34 public class BaseValueTransformer implements ValueTransformer {
35
36 public Object apply(Object rawValue) {
37 if (rawValue == null) {
38 return null;
39 } else if (rawValue instanceof String || rawValue instanceof Number || rawValue instanceof ComplexIssueInputFieldValue) {
40 return rawValue;
41 } else if (rawValue instanceof BasicProject) {
42 return new ComplexIssueInputFieldValue(ImmutableMap.<String, Object>of("key", ((BasicProject) rawValue).getKey()));
43 } else if (rawValue instanceof CustomFieldOption) {
44 return transformCustomFieldOption((CustomFieldOption) rawValue);
45 } else if (rawValue instanceof TimeTracking) {
46 return transformTimeTracking((TimeTracking) rawValue);
47 } else if (rawValue instanceof IdentifiableEntity) {
48 final IdentifiableEntity identifiableEntity = (IdentifiableEntity) rawValue;
49 return new ComplexIssueInputFieldValue(ImmutableMap.<String, Object>of("id", identifiableEntity.getId().toString()));
50 } else if (rawValue instanceof NamedEntity) {
51 final NamedEntity namedEntity = (NamedEntity) rawValue;
52 return new ComplexIssueInputFieldValue(ImmutableMap.<String, Object>of("name", namedEntity.getName()));
53 }
54
55 return CANNOT_HANDLE;
56 }
57
58 private ComplexIssueInputFieldValue transformCustomFieldOption(CustomFieldOption cfo) {
59 if (cfo.getChild() != null) {
60 return new ComplexIssueInputFieldValue(ImmutableMap.<String, Object>of(
61 "id", cfo.getId().toString(),
62 "value", cfo.getValue(),
63 "child", this.apply(cfo.getChild())));
64 } else {
65 return new ComplexIssueInputFieldValue(ImmutableMap.<String, Object>of("id", cfo.getId().toString(), "value", cfo
66 .getValue()));
67 }
68 }
69
70 private ComplexIssueInputFieldValue transformTimeTracking(TimeTracking timeTracking) {
71 final Map<String, Object> fields = Maps.newHashMap();
72
73 final Integer originalEstimateMinutes = timeTracking.getOriginalEstimateMinutes();
74 if (originalEstimateMinutes != null) {
75 fields.put("originalEstimate", originalEstimateMinutes + "m");
76 }
77
78 final Integer remainingEstimateMinutes = timeTracking.getRemainingEstimateMinutes();
79 if (remainingEstimateMinutes != null) {
80 fields.put("remainingEstimate", remainingEstimateMinutes + "m");
81 }
82
83
84
85 return new ComplexIssueInputFieldValue(fields);
86 }
87
88 }