001 /*
002 * SonarQube, open source software quality management tool.
003 * Copyright (C) 2008-2014 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 import java.util.LinkedHashMap;
025 import java.util.Map;
026
027 public class Measure extends Model {
028
029 private String metricKey;
030 private String metricName;
031 private Double value;
032 private String formattedValue;
033 private String alertStatus;
034 private String alertText;
035 private String data;
036 private String characteristicKey;
037 private String characteristicName;
038
039 private Integer trend;
040 private Integer var;
041
042 private String ruleKey;
043 private String ruleName;
044 private String ruleSeverity;
045
046 /**
047 * @deprecated since 2.5 See http://jira.codehaus.org/browse/SONAR-2007
048 */
049 @Deprecated
050 private String ruleCategory;
051
052 private Double variation1, variation2, variation3, variation4, variation5;
053
054 @CheckForNull
055 public String getMetricKey() {
056 return metricKey;
057 }
058
059 public Measure setMetricKey(@Nullable String metricKey) {
060 this.metricKey = metricKey;
061 return this;
062 }
063
064 @CheckForNull
065 public String getMetricName() {
066 return metricName;
067 }
068
069 public Measure setMetricName(@Nullable String metricName) {
070 this.metricName = metricName;
071 return this;
072 }
073
074 @CheckForNull
075 public Double getValue() {
076 return value;
077 }
078
079 @CheckForNull
080 public Integer getIntValue() {
081 if (value == null) {
082 return null;
083 }
084 return value.intValue();
085 }
086
087 @CheckForNull
088 public Long getLongValue() {
089 if (value == null) {
090 return null;
091 }
092 return value.longValue();
093 }
094
095 public Measure setValue(@Nullable Double value) {
096 this.value = value;
097 return this;
098 }
099
100 @CheckForNull
101 public String getFormattedValue() {
102 return formattedValue;
103 }
104
105 @CheckForNull
106 public String getFormattedValue(@Nullable String defaultValue) {
107 if (formattedValue == null) {
108 return defaultValue;
109 }
110 return formattedValue;
111 }
112
113 public Measure setFormattedValue(@Nullable String formattedValue) {
114 this.formattedValue = formattedValue;
115 return this;
116 }
117
118 @CheckForNull
119 public String getAlertStatus() {
120 return alertStatus;
121 }
122
123 public Measure setAlertStatus(@Nullable String alertStatus) {
124 this.alertStatus = alertStatus;
125 return this;
126 }
127
128 @CheckForNull
129 public String getAlertText() {
130 return alertText;
131 }
132
133 public Measure setAlertText(@Nullable String alertText) {
134 this.alertText = alertText;
135 return this;
136 }
137
138 @CheckForNull
139 public String getData() {
140 return data;
141 }
142
143 @CheckForNull
144 public Map<String, String> getDataAsMap() {
145 return getDataAsMap(",");
146 }
147
148 @CheckForNull
149 public Map<String, String> getDataAsMap(String separator) {
150 if (data == null) {
151 return null;
152 }
153 Map<String, String> map = new LinkedHashMap<String, String>();
154 String[] parts = data.split(separator);
155 for (String part : parts) {
156 String[] kv = part.split("=");
157 map.put(kv[0], kv[1]);
158 }
159 return map;
160 }
161
162 public Measure setData(@Nullable String data) {
163 this.data = data;
164 return this;
165 }
166
167 @CheckForNull
168 public Integer getTrend() {
169 return trend;
170 }
171
172 public Measure setTrend(@Nullable Integer trend) {
173 this.trend = trend;
174 return this;
175 }
176
177 @CheckForNull
178 public Integer getVar() {
179 return var;
180 }
181
182 public Measure setVar(@Nullable Integer var) {
183 this.var = var;
184 return this;
185 }
186
187 @CheckForNull
188 public String getRuleKey() {
189 return ruleKey;
190 }
191
192 public Measure setRuleKey(@Nullable String ruleKey) {
193 this.ruleKey = ruleKey;
194 return this;
195 }
196
197 @CheckForNull
198 public String getRuleName() {
199 return ruleName;
200 }
201
202 public Measure setRuleName(@Nullable String ruleName) {
203 this.ruleName = ruleName;
204 return this;
205 }
206
207 /**
208 * @deprecated since 2.5 See http://jira.codehaus.org/browse/SONAR-2007
209 */
210 @Deprecated
211 @CheckForNull
212 public String getRuleCategory() {
213 return ruleCategory;
214 }
215
216 /**
217 * @deprecated since 2.5 See http://jira.codehaus.org/browse/SONAR-2007
218 */
219 @Deprecated
220 public Measure setRuleCategory(@Nullable String ruleCategory) {
221 this.ruleCategory = ruleCategory;
222 return this;
223 }
224
225 /**
226 * @since 2.5
227 */
228 public Measure setRuleSeverity(@Nullable String ruleSeverity) {
229 this.ruleSeverity = ruleSeverity;
230 return this;
231 }
232
233 /**
234 * @since 2.5
235 */
236 @CheckForNull
237 public String getRuleSeverity() {
238 return ruleSeverity;
239 }
240
241 /**
242 * @deprecated since 2.5 use {@link #getRuleSeverity()} instead. See http://jira.codehaus.org/browse/SONAR-1829
243 */
244 @Deprecated
245 @CheckForNull
246 public String getRulePriority() {
247 return ruleSeverity;
248 }
249
250 /**
251 * @deprecated since 2.5 use {@link #setRuleSeverity(String)} instead. See http://jira.codehaus.org/browse/SONAR-1829
252 */
253 @Deprecated
254 public Measure setRulePriority(@Nullable String rulePriority) {
255 this.ruleSeverity = rulePriority;
256 return this;
257 }
258
259 @CheckForNull
260 public String getCharacteristicKey() {
261 return characteristicKey;
262 }
263
264 @CheckForNull
265 public String getCharacteristicName() {
266 return characteristicName;
267 }
268
269 public Measure setCharacteristicKey(@Nullable String s) {
270 this.characteristicKey = s;
271 return this;
272 }
273
274 public Measure setCharacteristicName(@Nullable String s) {
275 this.characteristicName = s;
276 return this;
277 }
278
279 /**
280 * Variation value on period 1. The value is loaded if ResourceQuery#setIncludeTrends() is set to true.
281 * @since 2.5
282 */
283 @CheckForNull
284 public Double getVariation1() {
285 return variation1;
286 }
287
288 /**
289 * @since 2.5
290 */
291 public Measure setVariation1(@Nullable Double variation1) {
292 this.variation1 = variation1;
293 return this;
294 }
295
296 /**
297 * Variation value on period 2. The value is loaded if ResourceQuery#setIncludeTrends() is set to true.
298 * @since 2.5
299 */
300 @CheckForNull
301 public Double getVariation2() {
302 return variation2;
303 }
304
305 /**
306 * @since 2.5
307 */
308 public Measure setVariation2(@Nullable Double variation2) {
309 this.variation2 = variation2;
310 return this;
311 }
312
313 /**
314 * Variation value on period 3. The value is loaded if ResourceQuery#setIncludeTrends() is set to true.
315 * @since 2.5
316 */
317 @CheckForNull
318 public Double getVariation3() {
319 return variation3;
320 }
321
322 /**
323 * @since 2.5
324 */
325 public Measure setVariation3(@Nullable Double variation3) {
326 this.variation3 = variation3;
327 return this;
328 }
329
330 /**
331 * Variation value on period 4. The value is loaded if ResourceQuery#setIncludeTrends() is set to true.
332 * @since 2.5
333 */
334 @CheckForNull
335 public Double getVariation4() {
336 return variation4;
337 }
338
339 /**
340 * @since 2.5
341 */
342 public Measure setVariation4(@Nullable Double variation4) {
343 this.variation4 = variation4;
344 return this;
345 }
346
347 /**
348 * Variation value on period 5. The value is loaded if ResourceQuery#setIncludeTrends() is set to true.
349 * @since 2.5
350 */
351 @CheckForNull
352 public Double getVariation5() {
353 return variation5;
354 }
355
356 /**
357 * @since 2.5
358 */
359 public Measure setVariation5(@Nullable Double variation5) {
360 this.variation5 = variation5;
361 return this;
362 }
363
364 @Override
365 public String toString() {
366 return new StringBuilder().append("Measure{")
367 .append("metricKey='").append(metricKey).append('\'')
368 .append(", metricName='").append(metricName).append('\'')
369 .append(", value=").append(value)
370 .append(", formattedValue='").append(formattedValue).append('\'')
371 .append(", data='").append(data).append('\'')
372 .append(", characteristicKey='").append(characteristicKey).append('\'')
373 .append(", characteristicName='").append(characteristicName).append('\'')
374 .append(", trend=").append(trend).append(", var=").append(var)
375 .append(", ruleKey='").append(ruleKey).append('\'')
376 .append(", ruleName='").append(ruleName).append('\'')
377 .append(", ruleCategory='").append(ruleCategory).append('\'')
378 .append(", rulePriority='").append(ruleSeverity).append('\'')
379 .append('}').toString();
380 }
381 }