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    }