]> source.dussan.org Git - sonarqube.git/blob
06918b3b3a6f12667ace8572552e643e1d04dec2
[sonarqube.git] /
1 /*
2  * SonarQube, open source software quality management tool.
3  * Copyright (C) 2008-2013 SonarSource
4  * mailto:contact AT sonarsource DOT com
5  *
6  * SonarQube is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 3 of the License, or (at your option) any later version.
10  *
11  * SonarQube is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19  */
20
21 package org.sonar.api.technicaldebt.server.internal;
22
23 import org.apache.commons.lang.builder.ToStringBuilder;
24 import org.apache.commons.lang.builder.ToStringStyle;
25 import org.sonar.api.rule.RuleKey;
26 import org.sonar.api.technicaldebt.server.Characteristic;
27 import org.sonar.api.utils.WorkUnit;
28 import org.sonar.api.utils.internal.WorkDuration;
29
30 import javax.annotation.CheckForNull;
31 import javax.annotation.Nullable;
32
33 /**
34  * @since 4.1
35  */
36 public class DefaultCharacteristic implements Characteristic {
37
38   private Integer id;
39   private String key;
40   private String name;
41   private Integer order;
42   private Integer parentId;
43   private Integer rootId;
44   private RuleKey ruleKey;
45   private String function;
46   private Integer factorValue;
47   private WorkDuration.UNIT factorUnit;
48   private Integer offsetValue;
49   private WorkDuration.UNIT offsetUnit;
50
51   public Integer id() {
52     return id;
53   }
54
55   public DefaultCharacteristic setId(Integer id) {
56     this.id = id;
57     return this;
58   }
59
60   @CheckForNull
61   public String key() {
62     return key;
63   }
64
65   public DefaultCharacteristic setKey(@Nullable String key) {
66     this.key = key;
67     return this;
68   }
69
70   @CheckForNull
71   public String name() {
72     return name;
73   }
74
75   public DefaultCharacteristic setName(@Nullable String name) {
76     this.name = name;
77     return this;
78   }
79
80   @CheckForNull
81   public Integer order() {
82     return order;
83   }
84
85   public DefaultCharacteristic setOrder(@Nullable Integer order) {
86     this.order = order;
87     return this;
88   }
89
90   @CheckForNull
91   public Integer parentId() {
92     return parentId;
93   }
94
95   public DefaultCharacteristic setParentId(@Nullable Integer parentId) {
96     this.parentId = parentId;
97     return this;
98   }
99
100   @CheckForNull
101   public Integer rootId() {
102     return rootId;
103   }
104
105   public DefaultCharacteristic setRootId(@Nullable Integer rootId) {
106     this.rootId = rootId;
107     return this;
108   }
109
110   @CheckForNull
111   public RuleKey ruleKey() {
112     return ruleKey;
113   }
114
115   public DefaultCharacteristic setRuleKey(@Nullable RuleKey ruleKey) {
116     this.ruleKey = ruleKey;
117     return this;
118   }
119
120   @CheckForNull
121   public String function() {
122     return function;
123   }
124
125   public DefaultCharacteristic setFunction(@Nullable String function) {
126     this.function = function;
127     return this;
128   }
129
130   /**
131    * @deprecated since 4.2
132    */
133   @Deprecated
134   @CheckForNull
135   public WorkUnit factor() {
136     if (factorValue != null && factorUnit != null) {
137       return WorkUnit.create((double) factorValue, fromUnit(factorUnit));
138     }
139     return null;
140   }
141
142   /**
143    * @deprecated since 4.2
144    */
145   @Deprecated
146   public DefaultCharacteristic setFactor(@Nullable WorkUnit factor) {
147     if (factor != null) {
148       this.factorValue = (int) factor.getValue();
149       this.factorUnit = toUnit(factor.getUnit());
150     }
151     return this;
152   }
153
154   /**
155    * @deprecated since 4.3
156    */
157   @Deprecated
158   @CheckForNull
159   public Integer factorValue() {
160     return factorValue;
161   }
162
163   /**
164    * @deprecated since 4.3
165    */
166   @Deprecated
167   public DefaultCharacteristic setFactorValue(@Nullable Integer factorValue) {
168     this.factorValue = factorValue;
169     return this;
170   }
171
172   @CheckForNull
173   public WorkDuration.UNIT factorUnit() {
174     return factorUnit;
175   }
176
177   /**
178    * @deprecated since 4.3
179    */
180   @Deprecated
181   public DefaultCharacteristic setFactorUnit(@Nullable WorkDuration.UNIT factorUnit) {
182     this.factorUnit = factorUnit;
183     return this;
184   }
185
186   /**
187    * @deprecated since 4.2
188    */
189   @Deprecated
190   public WorkUnit offset() {
191     if (offsetValue != null && offsetUnit != null) {
192       return WorkUnit.create((double) offsetValue, fromUnit(offsetUnit));
193     }
194     return null;
195   }
196
197   /**
198    * @deprecated since 4.2
199    */
200   @Deprecated
201   public DefaultCharacteristic setOffset(@Nullable WorkUnit offset) {
202     if (offset != null) {
203       this.offsetValue = (int) offset.getValue();
204       this.offsetUnit = toUnit(offset.getUnit());
205     }
206     return this;
207   }
208
209   /**
210    * @deprecated since 4.3
211    */
212   @Deprecated
213   @CheckForNull
214   public Integer offsetValue() {
215     return offsetValue;
216   }
217
218   /**
219    * @deprecated since 4.3
220    */
221   @Deprecated
222   public DefaultCharacteristic setOffsetValue(@Nullable Integer offsetValue) {
223     this.offsetValue = offsetValue;
224     return this;
225   }
226
227   /**
228    * @deprecated since 4.3
229    */
230   @Deprecated
231   @CheckForNull
232   public WorkDuration.UNIT offsetUnit() {
233     return offsetUnit;
234   }
235
236   /**
237    * @deprecated since 4.3
238    */
239   @Deprecated
240   public DefaultCharacteristic setOffsetUnit(@Nullable WorkDuration.UNIT offsetUnit) {
241     this.offsetUnit = offsetUnit;
242     return this;
243   }
244
245   /**
246    * @deprecated since 4.3
247    */
248   @Deprecated
249   public static WorkDuration.UNIT toUnit(@Nullable String requirementUnit) {
250     if (requirementUnit != null) {
251       if (WorkUnit.DAYS.equals(requirementUnit)) {
252         return WorkDuration.UNIT.DAYS;
253       } else if (WorkUnit.HOURS.equals(requirementUnit)) {
254         return WorkDuration.UNIT.HOURS;
255       } else if (WorkUnit.MINUTES.equals(requirementUnit)) {
256         return WorkDuration.UNIT.MINUTES;
257       }
258       throw new IllegalStateException("Invalid unit : " + requirementUnit);
259     }
260     return null;
261   }
262
263   private static String fromUnit(WorkDuration.UNIT unit) {
264     if (WorkDuration.UNIT.DAYS.equals(unit)) {
265       return WorkUnit.DAYS;
266     } else if (WorkDuration.UNIT.HOURS.equals(unit)) {
267       return WorkUnit.HOURS;
268     } else if (WorkDuration.UNIT.MINUTES.equals(unit)) {
269       return WorkUnit.MINUTES;
270     }
271     throw new IllegalStateException("Invalid unit : " + unit);
272   }
273
274   public boolean isRoot() {
275     return parentId == null;
276   }
277
278   /**
279    * @deprecated since 4.3
280    */
281   @Deprecated
282   public boolean isRequirement() {
283     return ruleKey != null;
284   }
285
286   @Override
287   public boolean equals(Object o) {
288     if (this == o) {
289       return true;
290     }
291     if (o == null || getClass() != o.getClass()) {
292       return false;
293     }
294
295     DefaultCharacteristic that = (DefaultCharacteristic) o;
296
297     if (key != null ? !key.equals(that.key) : that.key != null) {
298       return false;
299     }
300     if (ruleKey != null ? !ruleKey.equals(that.ruleKey) : that.ruleKey != null) {
301       return false;
302     }
303
304     return true;
305   }
306
307   @Override
308   public int hashCode() {
309     int result = key != null ? key.hashCode() : 0;
310     result = 31 * result + (ruleKey != null ? ruleKey.hashCode() : 0);
311     return result;
312   }
313
314   @Override
315   public String toString() {
316     return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
317   }
318
319 }