001 /*
002 * SonarQube, open source software quality management tool.
003 * Copyright (C) 2008-2013 SonarSource
004 * mailto:contact AT sonarsource DOT com
005 *
006 * SonarQube is free software; you can redistribute it and/or
007 * modify it under the terms of the GNU Lesser General Public
008 * License as published by the Free Software Foundation; either
009 * version 3 of the License, or (at your option) any later version.
010 *
011 * SonarQube is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014 * Lesser General Public License for more details.
015 *
016 * You should have received a copy of the GNU Lesser General Public License
017 * along with this program; if not, write to the Free Software Foundation,
018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
019 */
020 package org.sonar.wsclient.services;
021
022 import javax.annotation.CheckForNull;
023 import javax.annotation.Nullable;
024
025 import java.util.LinkedHashMap;
026 import java.util.Map;
027
028 public class Measure extends Model {
029
030 private String metricKey;
031 private String metricName;
032 private Double value;
033 private String formattedValue;
034 private String data;
035 private String characteristicKey;
036 private String characteristicName;
037
038 private Integer trend;
039 private Integer var;
040
041 private String ruleKey;
042 private String ruleName;
043 private String ruleSeverity;
044
045 /**
046 * @deprecated since 2.5 See http://jira.codehaus.org/browse/SONAR-2007
047 */
048 @Deprecated
049 private String ruleCategory;
050
051 private Double variation1, variation2, variation3, variation4, variation5;
052
053 @CheckForNull
054 public String getMetricKey() {
055 return metricKey;
056 }
057
058 public Measure setMetricKey(@Nullable String metricKey) {
059 this.metricKey = metricKey;
060 return this;
061 }
062
063 @CheckForNull
064 public String getMetricName() {
065 return metricName;
066 }
067
068 public Measure setMetricName(@Nullable String metricName) {
069 this.metricName = metricName;
070 return this;
071 }
072
073 @CheckForNull
074 public Double getValue() {
075 return value;
076 }
077
078 @CheckForNull
079 public Integer getIntValue() {
080 if (value == null) {
081 return null;
082 }
083 return value.intValue();
084 }
085
086 public Measure setValue(@Nullable Double value) {
087 this.value = value;
088 return this;
089 }
090
091 @CheckForNull
092 public String getFormattedValue() {
093 return formattedValue;
094 }
095
096 @CheckForNull
097 public String getFormattedValue(@Nullable String defaultValue) {
098 if (formattedValue == null) {
099 return defaultValue;
100 }
101 return formattedValue;
102 }
103
104 public Measure setFormattedValue(@Nullable String formattedValue) {
105 this.formattedValue = formattedValue;
106 return this;
107 }
108
109 @CheckForNull
110 public String getData() {
111 return data;
112 }
113
114 @CheckForNull
115 public Map<String, String> getDataAsMap() {
116 return getDataAsMap(",");
117 }
118
119 @CheckForNull
120 public Map<String, String> getDataAsMap(String separator) {
121 if (data == null) {
122 return null;
123 }
124 Map<String, String> map = new LinkedHashMap<String, String>();
125 String[] parts = data.split(separator);
126 for (String part : parts) {
127 String[] kv = part.split("=");
128 map.put(kv[0], kv[1]);
129 }
130 return map;
131 }
132
133 public Measure setData(@Nullable String data) {
134 this.data = data;
135 return this;
136 }
137
138 @CheckForNull
139 public Integer getTrend() {
140 return trend;
141 }
142
143 public Measure setTrend(@Nullable Integer trend) {
144 this.trend = trend;
145 return this;
146 }
147
148 @CheckForNull
149 public Integer getVar() {
150 return var;
151 }
152
153 public Measure setVar(@Nullable Integer var) {
154 this.var = var;
155 return this;
156 }
157
158 @CheckForNull
159 public String getRuleKey() {
160 return ruleKey;
161 }
162
163 public Measure setRuleKey(@Nullable String ruleKey) {
164 this.ruleKey = ruleKey;
165 return this;
166 }
167
168 @CheckForNull
169 public String getRuleName() {
170 return ruleName;
171 }
172
173 public Measure setRuleName(@Nullable String ruleName) {
174 this.ruleName = ruleName;
175 return this;
176 }
177
178 /**
179 * @deprecated since 2.5 See http://jira.codehaus.org/browse/SONAR-2007
180 */
181 @Deprecated
182 @CheckForNull
183 public String getRuleCategory() {
184 return ruleCategory;
185 }
186
187 /**
188 * @deprecated since 2.5 See http://jira.codehaus.org/browse/SONAR-2007
189 */
190 @Deprecated
191 public Measure setRuleCategory(@Nullable String ruleCategory) {
192 this.ruleCategory = ruleCategory;
193 return this;
194 }
195
196 /**
197 * @since 2.5
198 */
199 public Measure setRuleSeverity(@Nullable String ruleSeverity) {
200 this.ruleSeverity = ruleSeverity;
201 return this;
202 }
203
204 /**
205 * @since 2.5
206 */
207 @CheckForNull
208 public String getRuleSeverity() {
209 return ruleSeverity;
210 }
211
212 /**
213 * @deprecated since 2.5 use {@link #getRuleSeverity()} instead. See http://jira.codehaus.org/browse/SONAR-1829
214 */
215 @Deprecated
216 @CheckForNull
217 public String getRulePriority() {
218 return ruleSeverity;
219 }
220
221 /**
222 * @deprecated since 2.5 use {@link #setRuleSeverity(String)} instead. See http://jira.codehaus.org/browse/SONAR-1829
223 */
224 @Deprecated
225 public Measure setRulePriority(@Nullable String rulePriority) {
226 this.ruleSeverity = rulePriority;
227 return this;
228 }
229
230 @CheckForNull
231 public String getCharacteristicKey() {
232 return characteristicKey;
233 }
234
235 @CheckForNull
236 public String getCharacteristicName() {
237 return characteristicName;
238 }
239
240 public Measure setCharacteristicKey(@Nullable String s) {
241 this.characteristicKey = s;
242 return this;
243 }
244
245 public Measure setCharacteristicName(@Nullable String s) {
246 this.characteristicName = s;
247 return this;
248 }
249
250 /**
251 * Variation value on period 1. The value is loaded if ResourceQuery#setIncludeTrends() is set to true.
252 * @since 2.5
253 */
254 @CheckForNull
255 public Double getVariation1() {
256 return variation1;
257 }
258
259 /**
260 * @since 2.5
261 */
262 public Measure setVariation1(@Nullable Double variation1) {
263 this.variation1 = variation1;
264 return this;
265 }
266
267 /**
268 * Variation value on period 2. The value is loaded if ResourceQuery#setIncludeTrends() is set to true.
269 * @since 2.5
270 */
271 @CheckForNull
272 public Double getVariation2() {
273 return variation2;
274 }
275
276 /**
277 * @since 2.5
278 */
279 public Measure setVariation2(@Nullable Double variation2) {
280 this.variation2 = variation2;
281 return this;
282 }
283
284 /**
285 * Variation value on period 3. The value is loaded if ResourceQuery#setIncludeTrends() is set to true.
286 * @since 2.5
287 */
288 @CheckForNull
289 public Double getVariation3() {
290 return variation3;
291 }
292
293 /**
294 * @since 2.5
295 */
296 public Measure setVariation3(@Nullable Double variation3) {
297 this.variation3 = variation3;
298 return this;
299 }
300
301 /**
302 * Variation value on period 4. The value is loaded if ResourceQuery#setIncludeTrends() is set to true.
303 * @since 2.5
304 */
305 @CheckForNull
306 public Double getVariation4() {
307 return variation4;
308 }
309
310 /**
311 * @since 2.5
312 */
313 public Measure setVariation4(@Nullable Double variation4) {
314 this.variation4 = variation4;
315 return this;
316 }
317
318 /**
319 * Variation value on period 5. The value is loaded if ResourceQuery#setIncludeTrends() is set to true.
320 * @since 2.5
321 */
322 @CheckForNull
323 public Double getVariation5() {
324 return variation5;
325 }
326
327 /**
328 * @since 2.5
329 */
330 public Measure setVariation5(@Nullable Double variation5) {
331 this.variation5 = variation5;
332 return this;
333 }
334
335 @Override
336 public String toString() {
337 return new StringBuilder().append("Measure{")
338 .append("metricKey='").append(metricKey).append('\'')
339 .append(", metricName='").append(metricName).append('\'')
340 .append(", value=").append(value)
341 .append(", formattedValue='").append(formattedValue).append('\'')
342 .append(", data='").append(data).append('\'')
343 .append(", characteristicKey='").append(characteristicKey).append('\'')
344 .append(", characteristicName='").append(characteristicName).append('\'')
345 .append(", trend=").append(trend).append(", var=").append(var)
346 .append(", ruleKey='").append(ruleKey).append('\'')
347 .append(", ruleName='").append(ruleName).append('\'')
348 .append(", ruleCategory='").append(ruleCategory).append('\'')
349 .append(", rulePriority='").append(ruleSeverity).append('\'')
350 .append('}').toString();
351 }
352 }