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 021package org.sonar.api.technicaldebt.server.internal; 022 023import org.apache.commons.lang.builder.ToStringBuilder; 024import org.apache.commons.lang.builder.ToStringStyle; 025import org.sonar.api.rule.RuleKey; 026import org.sonar.api.technicaldebt.server.Characteristic; 027import org.sonar.api.utils.WorkUnit; 028import org.sonar.api.utils.internal.WorkDuration; 029 030import javax.annotation.CheckForNull; 031import javax.annotation.Nullable; 032 033/** 034 * @since 4.1 035 * @deprecated since 4.3. 036 */ 037@Deprecated 038public class DefaultCharacteristic implements Characteristic { 039 040 private Integer id; 041 private String key; 042 private String name; 043 private Integer order; 044 private Integer parentId; 045 private Integer rootId; 046 private RuleKey ruleKey; 047 private String function; 048 private Integer factorValue; 049 private WorkDuration.UNIT factorUnit; 050 private Integer offsetValue; 051 private WorkDuration.UNIT offsetUnit; 052 053 @Override 054 public Integer id() { 055 return id; 056 } 057 058 public DefaultCharacteristic setId(Integer id) { 059 this.id = id; 060 return this; 061 } 062 063 @Override 064 @CheckForNull 065 public String key() { 066 return key; 067 } 068 069 public DefaultCharacteristic setKey(@Nullable String key) { 070 this.key = key; 071 return this; 072 } 073 074 @Override 075 @CheckForNull 076 public String name() { 077 return name; 078 } 079 080 public DefaultCharacteristic setName(@Nullable String name) { 081 this.name = name; 082 return this; 083 } 084 085 @Override 086 @CheckForNull 087 public Integer order() { 088 return order; 089 } 090 091 public DefaultCharacteristic setOrder(@Nullable Integer order) { 092 this.order = order; 093 return this; 094 } 095 096 @Override 097 @CheckForNull 098 public Integer parentId() { 099 return parentId; 100 } 101 102 public DefaultCharacteristic setParentId(@Nullable Integer parentId) { 103 this.parentId = parentId; 104 return this; 105 } 106 107 @Override 108 @CheckForNull 109 public Integer rootId() { 110 return rootId; 111 } 112 113 public DefaultCharacteristic setRootId(@Nullable Integer rootId) { 114 this.rootId = rootId; 115 return this; 116 } 117 118 /** 119 * @deprecated since 4.2 120 */ 121 @Override 122 @Deprecated 123 @CheckForNull 124 public RuleKey ruleKey() { 125 return ruleKey; 126 } 127 128 /** 129 * @deprecated since 4.2 130 */ 131 @Deprecated 132 public DefaultCharacteristic setRuleKey(@Nullable RuleKey ruleKey) { 133 this.ruleKey = ruleKey; 134 return this; 135 } 136 137 /** 138 * @deprecated since 4.2 139 */ 140 @Override 141 @Deprecated 142 @CheckForNull 143 public String function() { 144 return function; 145 } 146 147 /** 148 * @deprecated since 4.2 149 */ 150 @Deprecated 151 public DefaultCharacteristic setFunction(@Nullable String function) { 152 this.function = function; 153 return this; 154 } 155 156 /** 157 * @deprecated since 4.2 158 */ 159 @Override 160 @Deprecated 161 @CheckForNull 162 public WorkUnit factor() { 163 if (factorValue != null && factorUnit != null) { 164 return WorkUnit.create((double) factorValue, fromUnit(factorUnit)); 165 } 166 return null; 167 } 168 169 /** 170 * @deprecated since 4.2 171 */ 172 @Deprecated 173 public DefaultCharacteristic setFactor(@Nullable WorkUnit factor) { 174 if (factor != null) { 175 this.factorValue = (int) factor.getValue(); 176 this.factorUnit = toUnit(factor.getUnit()); 177 } 178 return this; 179 } 180 181 /** 182 * @deprecated since 4.3 183 */ 184 @Override 185 @Deprecated 186 @CheckForNull 187 public Integer factorValue() { 188 return factorValue; 189 } 190 191 /** 192 * @deprecated since 4.3 193 */ 194 @Deprecated 195 public DefaultCharacteristic setFactorValue(@Nullable Integer factorValue) { 196 this.factorValue = factorValue; 197 return this; 198 } 199 200 @Override 201 @CheckForNull 202 public WorkDuration.UNIT factorUnit() { 203 return factorUnit; 204 } 205 206 /** 207 * @deprecated since 4.3 208 */ 209 @Deprecated 210 public DefaultCharacteristic setFactorUnit(@Nullable WorkDuration.UNIT factorUnit) { 211 this.factorUnit = factorUnit; 212 return this; 213 } 214 215 /** 216 * @deprecated since 4.2 217 */ 218 @Override 219 @Deprecated 220 public WorkUnit offset() { 221 if (offsetValue != null && offsetUnit != null) { 222 return WorkUnit.create((double) offsetValue, fromUnit(offsetUnit)); 223 } 224 return null; 225 } 226 227 /** 228 * @deprecated since 4.2 229 */ 230 @Deprecated 231 public DefaultCharacteristic setOffset(@Nullable WorkUnit offset) { 232 if (offset != null) { 233 this.offsetValue = (int) offset.getValue(); 234 this.offsetUnit = toUnit(offset.getUnit()); 235 } 236 return this; 237 } 238 239 /** 240 * @deprecated since 4.3 241 */ 242 @Override 243 @Deprecated 244 @CheckForNull 245 public Integer offsetValue() { 246 return offsetValue; 247 } 248 249 /** 250 * @deprecated since 4.3 251 */ 252 @Deprecated 253 public DefaultCharacteristic setOffsetValue(@Nullable Integer offsetValue) { 254 this.offsetValue = offsetValue; 255 return this; 256 } 257 258 /** 259 * @deprecated since 4.3 260 */ 261 @Override 262 @Deprecated 263 @CheckForNull 264 public WorkDuration.UNIT offsetUnit() { 265 return offsetUnit; 266 } 267 268 /** 269 * @deprecated since 4.3 270 */ 271 @Deprecated 272 public DefaultCharacteristic setOffsetUnit(@Nullable WorkDuration.UNIT offsetUnit) { 273 this.offsetUnit = offsetUnit; 274 return this; 275 } 276 277 /** 278 * @deprecated since 4.3 279 */ 280 @Deprecated 281 public static WorkDuration.UNIT toUnit(@Nullable String requirementUnit) { 282 if (requirementUnit != null) { 283 if (WorkUnit.DAYS.equals(requirementUnit)) { 284 return WorkDuration.UNIT.DAYS; 285 } else if (WorkUnit.HOURS.equals(requirementUnit)) { 286 return WorkDuration.UNIT.HOURS; 287 } else if (WorkUnit.MINUTES.equals(requirementUnit)) { 288 return WorkDuration.UNIT.MINUTES; 289 } 290 throw new IllegalStateException("Invalid unit : " + requirementUnit); 291 } 292 return null; 293 } 294 295 private static String fromUnit(WorkDuration.UNIT unit) { 296 if (WorkDuration.UNIT.DAYS.equals(unit)) { 297 return WorkUnit.DAYS; 298 } else if (WorkDuration.UNIT.HOURS.equals(unit)) { 299 return WorkUnit.HOURS; 300 } else if (WorkDuration.UNIT.MINUTES.equals(unit)) { 301 return WorkUnit.MINUTES; 302 } 303 throw new IllegalStateException("Invalid unit : " + unit); 304 } 305 306 @Override 307 public boolean isRoot() { 308 return parentId == null; 309 } 310 311 /** 312 * @deprecated since 4.3 313 */ 314 @Override 315 @Deprecated 316 public boolean isRequirement() { 317 return ruleKey != null; 318 } 319 320 @Override 321 public boolean equals(Object o) { 322 if (this == o) { 323 return true; 324 } 325 if (o == null || getClass() != o.getClass()) { 326 return false; 327 } 328 329 DefaultCharacteristic that = (DefaultCharacteristic) o; 330 331 if (key != null ? !key.equals(that.key) : that.key != null) { 332 return false; 333 } 334 if (ruleKey != null ? !ruleKey.equals(that.ruleKey) : that.ruleKey != null) { 335 return false; 336 } 337 338 return true; 339 } 340 341 @Override 342 public int hashCode() { 343 int result = key != null ? key.hashCode() : 0; 344 result = 31 * result + (ruleKey != null ? ruleKey.hashCode() : 0); 345 return result; 346 } 347 348 @Override 349 public String toString() { 350 return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE); 351 } 352 353}