]> source.dussan.org Git - sonarqube.git/blob
e5de8f01f4a9e6dd3eae7c17d23adc3b8c37384f
[sonarqube.git] /
1 /*
2  * SonarQube, open source software quality management tool.
3  * Copyright (C) 2008-2014 SonarSource
4  * mailto:contact AT sonarsource DOT com
5  *
6  * SonarQube is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 3 of the License, or (at your option) any later version.
10  *
11  * SonarQube is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19  */
20
21 package org.sonar.api.technicaldebt.batch.internal;
22
23 import org.apache.commons.lang.StringUtils;
24 import org.apache.commons.lang.builder.ToStringBuilder;
25 import org.apache.commons.lang.builder.ToStringStyle;
26 import org.sonar.api.technicaldebt.batch.Characteristic;
27
28 import javax.annotation.CheckForNull;
29 import javax.annotation.Nullable;
30
31 import java.util.Date;
32 import java.util.List;
33
34 import static com.google.common.collect.Lists.newArrayList;
35
36 /**
37  * @deprecated since 4.3
38  */
39 @Deprecated
40 public class DefaultCharacteristic implements Characteristic {
41
42   private Integer id;
43   private String key;
44   private String name;
45   private Integer order;
46   private DefaultCharacteristic parent;
47   private DefaultCharacteristic root;
48   private List<DefaultCharacteristic> children;
49   private List<DefaultRequirement> requirements;
50
51   private Date createdAt;
52   private Date updatedAt;
53
54   public DefaultCharacteristic() {
55     this.children = newArrayList();
56     this.requirements = newArrayList();
57   }
58
59   public Integer id() {
60     return id;
61   }
62
63   public DefaultCharacteristic setId(Integer id) {
64     this.id = id;
65     return this;
66   }
67
68   public String key() {
69     return key;
70   }
71
72   public DefaultCharacteristic setKey(String key) {
73     this.key = StringUtils.trimToNull(key);
74     return this;
75   }
76
77   public String name() {
78     return name;
79   }
80
81   public DefaultCharacteristic setName(String name) {
82     this.name = name;
83     return this;
84   }
85
86   // TODO Replace this is a TechnicalDebtFactory class
87   public DefaultCharacteristic setName(String s, boolean asKey) {
88     this.name = StringUtils.trimToNull(s);
89     if (asKey) {
90       this.key = StringUtils.upperCase(this.name);
91       this.key = StringUtils.replaceChars(this.key, ' ', '_');
92     }
93     return this;
94   }
95
96   @CheckForNull
97   public Integer order() {
98     return order;
99   }
100
101   public DefaultCharacteristic setOrder(@Nullable Integer order) {
102     this.order = order;
103     return this;
104   }
105
106   @CheckForNull
107   public DefaultCharacteristic parent() {
108     return parent;
109   }
110
111   public DefaultCharacteristic setParent(@Nullable DefaultCharacteristic parent) {
112     if (parent != null) {
113       this.parent = parent;
114       parent.addChild(this);
115     }
116     return this;
117   }
118
119   @CheckForNull
120   public DefaultCharacteristic root() {
121     return root;
122   }
123
124   public DefaultCharacteristic setRoot(@Nullable DefaultCharacteristic root) {
125     this.root = root;
126     return this;
127   }
128
129   public List<DefaultCharacteristic> children() {
130     return children;
131   }
132
133   private DefaultCharacteristic addChild(DefaultCharacteristic child) {
134     this.children.add(child);
135     return this;
136   }
137
138   public List<DefaultRequirement> requirements() {
139     return requirements;
140   }
141
142   public DefaultCharacteristic addRequirement(DefaultRequirement requirement) {
143     this.requirements.add(requirement);
144     return this;
145   }
146
147   public boolean isRoot() {
148     return parent == null;
149   }
150
151   public Date createdAt() {
152     return createdAt;
153   }
154
155   public DefaultCharacteristic setCreatedAt(Date createdAt) {
156     this.createdAt = createdAt;
157     return this;
158   }
159
160   public Date updatedAt() {
161     return updatedAt;
162   }
163
164   public DefaultCharacteristic setUpdatedAt(Date updatedAt) {
165     this.updatedAt = updatedAt;
166     return this;
167   }
168
169   @Override
170   public String toString() {
171     return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
172   }
173
174   @Override
175   public boolean equals(Object o) {
176     if (this == o) {
177       return true;
178     }
179     if (o == null || getClass() != o.getClass()) {
180       return false;
181     }
182     DefaultCharacteristic that = (DefaultCharacteristic) o;
183     return key.equals(that.key);
184   }
185
186   @Override
187   public int hashCode() {
188     return key.hashCode();
189   }
190 }