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