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.Collections;
023    import java.util.Date;
024    import java.util.List;
025    
026    public class Resource extends Model {
027    
028      /* SCOPES */
029      public static final String SCOPE_SET = "PRJ";
030      public static final String SCOPE_SPACE = "DIR";
031      public static final String SCOPE_ENTITY = "FIL";
032    
033      /* QUALIFIERS */
034      public static final String QUALIFIER_VIEW = "VW";
035      public static final String QUALIFIER_SUBVIEW = "SVW";
036      public static final String QUALIFIER_LIB = "LIB";
037      public static final String QUALIFIER_PROJECT = "TRK";
038      public static final String QUALIFIER_MODULE = "BRC";
039      public static final String QUALIFIER_PACKAGE = "PAC";
040      public static final String QUALIFIER_DIRECTORY = "DIR";
041      public static final String QUALIFIER_FILE = "FIL";
042      public static final String QUALIFIER_CLASS = "CLA";
043      public static final String QUALIFIER_UNIT_TEST_CLASS = "UTS";
044    
045      /* LANGUAGES */
046      public static final String LANGUAGE_JAVA = "java";
047    
048      private Integer id;
049      private String key;
050      private String name;
051      private String longName;
052      private String scope;
053      private String qualifier;
054      private String language;
055      private String version;
056      private Integer copy;
057      private String description;
058      private Date date;
059      private List<Measure> measures;
060    
061      // periods used for variations and tracking of violations
062      private String period1Mode, period2Mode, period3Mode, period4Mode, period5Mode;
063      private String period1Param, period2Param, period3Param, period4Param, period5Param;
064      private Date period1Date, period2Date, period3Date, period4Date, period5Date;
065    
066      public Integer getId() {
067        return id;
068      }
069    
070      public Resource setId(Integer id) {
071        this.id = id;
072        return this;
073      }
074    
075      public String getKey() {
076        return key;
077      }
078    
079      public Resource setKey(String key) {
080        this.key = key;
081        return this;
082      }
083    
084      public String getDescription() {
085        return description;
086      }
087    
088      public Resource setDescription(String description) {
089        this.description = description;
090        return this;
091      }
092    
093      public String getName() {
094        return name;
095      }
096    
097      public String getName(boolean longFormatIfDefined) {
098        if (longFormatIfDefined && longName != null && !"".equals(longName)) {
099          return longName;
100        }
101        return name;
102      }
103    
104      public String getLongName() {
105        return longName;
106      }
107    
108      public Resource setLongName(String longName) {
109        this.longName = longName;
110        return this;
111      }
112    
113      public Resource setName(String s) {
114        this.name = s;
115        return this;
116      }
117    
118      public String getScope() {
119        return scope;
120      }
121    
122      public Resource setScope(String scope) {
123        this.scope = scope;
124        return this;
125      }
126    
127      public String getQualifier() {
128        return qualifier;
129      }
130    
131      public Resource setQualifier(String qualifier) {
132        this.qualifier = qualifier;
133        return this;
134      }
135    
136      public String getLanguage() {
137        return language;
138      }
139    
140      public Resource setLanguage(String language) {
141        this.language = language;
142        return this;
143      }
144    
145      public String getVersion() {
146        return version;
147      }
148    
149      public Resource setVersion(String version) {
150        this.version = version;
151        return this;
152      }
153    
154      public Integer getCopy() {
155        return copy;
156      }
157    
158      public Resource setCopy(Integer copy) {
159        this.copy = copy;
160        return this;
161      }
162    
163      public Date getDate() {
164        return date;
165      }
166    
167      public Resource setDate(Date d) {
168        this.date = d;
169        return this;
170      }
171    
172      public List<Measure> getMeasures() {
173        if (measures == null) {
174          return Collections.emptyList();
175        }
176        return measures;
177      }
178    
179      public Measure getMeasure(String metricKey) {
180        for (Measure measure : getMeasures()) {
181          if (metricKey.equals(measure.getMetricKey())) {
182            return measure;
183          }
184        }
185        return null;
186      }
187    
188      public Double getMeasureValue(String metricKey) {
189        Measure measure = getMeasure(metricKey);
190        if (measure != null) {
191          return measure.getValue();
192        }
193        return null;
194      }
195    
196      public Integer getMeasureIntValue(String metricKey) {
197        Double d = getMeasureValue(metricKey);
198        if (d != null) {
199          return d.intValue();
200        }
201        return null;
202      }
203    
204      public String getMeasureFormattedValue(String metricKey, String defaultValue) {
205        Measure measure = getMeasure(metricKey);
206        if (measure != null) {
207          return measure.getFormattedValue(defaultValue);
208        }
209        return defaultValue;
210      }
211    
212      public void setMeasures(List<Measure> measures) {
213        this.measures = measures;
214      }
215    
216      /**
217       * @since 2.5 only on projects, else null
218       */
219      public String getPeriod1Mode() {
220        return period1Mode;
221      }
222    
223      /**
224       * @since 2.5
225       */
226      public Resource setPeriod1Mode(String period1Mode) {
227        this.period1Mode = period1Mode;
228        return this;
229      }
230    
231      /**
232       * @since 2.5 only on projects, else null
233       */
234      public String getPeriod2Mode() {
235        return period2Mode;
236      }
237    
238      /**
239       * @since 2.5
240       */
241      public Resource setPeriod2Mode(String period2Mode) {
242        this.period2Mode = period2Mode;
243        return this;
244      }
245    
246      /**
247       * @since 2.5 only on projects, else null
248       */
249      public String getPeriod3Mode() {
250        return period3Mode;
251      }
252    
253      /**
254       * @since 2.5
255       */
256      public Resource setPeriod3Mode(String period3Mode) {
257        this.period3Mode = period3Mode;
258        return this;
259      }
260    
261      /**
262       * @since 2.5 only on projects, else null
263       */
264      public String getPeriod4Mode() {
265        return period4Mode;
266      }
267    
268      /**
269       * @since 2.5
270       */
271      public Resource setPeriod4Mode(String period4Mode) {
272        this.period4Mode = period4Mode;
273        return this;
274      }
275    
276      /**
277       * @since 2.5 only on projects, else null
278       */
279      public String getPeriod5Mode() {
280        return period5Mode;
281      }
282    
283      /**
284       * @since 2.5
285       */
286      public Resource setPeriod5Mode(String period5Mode) {
287        this.period5Mode = period5Mode;
288        return this;
289      }
290    
291      /**
292       * @since 2.5 only on projects, else null
293       */
294      public String getPeriod1Param() {
295        return period1Param;
296      }
297    
298      /**
299       * @since 2.5
300       */
301      public Resource setPeriod1Param(String period1Param) {
302        this.period1Param = period1Param;
303        return this;
304      }
305    
306      /**
307       * @since 2.5 only on projects, else null
308       */
309      public String getPeriod2Param() {
310        return period2Param;
311      }
312    
313      /**
314       * @since 2.5
315       */
316      public Resource setPeriod2Param(String period2Param) {
317        this.period2Param = period2Param;
318        return this;
319      }
320    
321      /**
322       * @since 2.5 only on projects, else null
323       */
324      public String getPeriod3Param() {
325        return period3Param;
326      }
327    
328      /**
329       * @since 2.5
330       */
331      public Resource setPeriod3Param(String period3Param) {
332        this.period3Param = period3Param;
333        return this;
334      }
335    
336      /**
337       * @since 2.5 only on projects, else null
338       */
339      public String getPeriod4Param() {
340        return period4Param;
341      }
342    
343      /**
344       * @since 2.5
345       */
346      public Resource setPeriod4Param(String period4Param) {
347        this.period4Param = period4Param;
348        return this;
349      }
350    
351      /**
352       * @since 2.5 only on projects, else null
353       */
354      public String getPeriod5Param() {
355        return period5Param;
356      }
357    
358      /**
359       * @since 2.5
360       */
361      public Resource setPeriod5Param(String period5Param) {
362        this.period5Param = period5Param;
363        return this;
364      }
365    
366      /**
367       * @since 2.5 only on projects, else null
368       */
369      public Date getPeriod1Date() {
370        return period1Date;
371      }
372    
373      /**
374       * @since 2.5
375       */
376      public Resource setPeriod1Date(Date period1Date) {
377        this.period1Date = period1Date;
378        return this;
379      }
380    
381      /**
382       * @since 2.5 only on projects, else null
383       */
384      public Date getPeriod2Date() {
385        return period2Date;
386      }
387    
388      /**
389       * @since 2.5
390       */
391      public Resource setPeriod2Date(Date period2Date) {
392        this.period2Date = period2Date;
393        return this;
394      }
395    
396      /**
397       * @since 2.5 only on projects, else null
398       */
399      public Date getPeriod3Date() {
400        return period3Date;
401      }
402    
403      /**
404       * @since 2.5
405       */
406      public Resource setPeriod3Date(Date period3Date) {
407        this.period3Date = period3Date;
408        return this;
409      }
410    
411      /**
412       * @since 2.5 only on projects, else null
413       */
414      public Date getPeriod4Date() {
415        return period4Date;
416      }
417    
418      /**
419       * @since 2.5
420       */
421      public Resource setPeriod4Date(Date period4Date) {
422        this.period4Date = period4Date;
423        return this;
424      }
425    
426      /**
427       * @since 2.5 only on projects, else null
428       */
429      public Date getPeriod5Date() {
430        return period5Date;
431      }
432    
433      /**
434       * @since 2.5
435       */
436      public Resource setPeriod5Date(Date period5Date) {
437        this.period5Date = period5Date;
438        return this;
439      }
440    
441      @Override
442      public String toString() {
443        return new StringBuilder()
444            .append("[id=")
445            .append(id)
446            .append(",key=")
447            .append(key)
448            .append("]")
449            .toString();
450      }
451    }