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 021 package org.sonar.api.technicaldebt.batch.internal; 022 023 import org.apache.commons.lang.builder.ToStringBuilder; 024 import org.apache.commons.lang.builder.ToStringStyle; 025 import org.picocontainer.annotations.Nullable; 026 import org.sonar.api.rule.RuleKey; 027 import org.sonar.api.technicaldebt.batch.Requirement; 028 import org.sonar.api.utils.WorkUnit; 029 import org.sonar.api.utils.internal.WorkDuration; 030 031 import javax.annotation.CheckForNull; 032 033 import java.util.Date; 034 035 /** 036 * @deprecated since 4.3 037 */ 038 @Deprecated 039 public class DefaultRequirement implements Requirement { 040 041 public static final String FUNCTION_LINEAR = "linear"; 042 public static final String FUNCTION_LINEAR_WITH_OFFSET = "linear_offset"; 043 public static final String CONSTANT_ISSUE = "constant_issue"; 044 045 private Integer id; 046 private RuleKey ruleKey; 047 private DefaultCharacteristic characteristic; 048 private DefaultCharacteristic rootCharacteristic; 049 050 private String function; 051 private int factorValue; 052 private WorkDuration.UNIT factorUnit; 053 private int offsetValue; 054 private WorkDuration.UNIT offsetUnit; 055 056 private Date createdAt; 057 private Date updatedAt; 058 059 public Integer id() { 060 return id; 061 } 062 063 public DefaultRequirement setId(Integer id) { 064 this.id = id; 065 return this; 066 } 067 068 public RuleKey ruleKey() { 069 return ruleKey; 070 } 071 072 public DefaultRequirement setRuleKey(RuleKey ruleKey) { 073 this.ruleKey = ruleKey; 074 return this; 075 } 076 077 public DefaultCharacteristic characteristic() { 078 return characteristic; 079 } 080 081 public DefaultRequirement setCharacteristic(DefaultCharacteristic characteristic) { 082 this.characteristic = characteristic; 083 this.characteristic.addRequirement(this); 084 return this; 085 } 086 087 public DefaultCharacteristic rootCharacteristic() { 088 return rootCharacteristic; 089 } 090 091 public DefaultRequirement setRootCharacteristic(DefaultCharacteristic rootCharacteristic) { 092 this.rootCharacteristic = rootCharacteristic; 093 return this; 094 } 095 096 public String function() { 097 return function; 098 } 099 100 public DefaultRequirement setFunction(String function) { 101 this.function = function; 102 return this; 103 } 104 105 /** 106 * @deprecated since 4.2 107 */ 108 @Deprecated 109 public WorkUnit factor() { 110 return WorkUnit.create((double) factorValue, fromUnit(factorUnit)); 111 } 112 113 /** 114 * @deprecated since 4.2 115 */ 116 @Deprecated 117 public DefaultRequirement setFactor(WorkUnit factor) { 118 this.factorValue = (int) factor.getValue(); 119 this.factorUnit = toUnit(factor.getUnit()); 120 return this; 121 } 122 123 public int factorValue() { 124 return factorValue; 125 } 126 127 public DefaultRequirement setFactorValue(int factorValue) { 128 this.factorValue = factorValue; 129 return this; 130 } 131 132 @CheckForNull 133 public WorkDuration.UNIT factorUnit() { 134 return factorUnit; 135 } 136 137 public DefaultRequirement setFactorUnit(@Nullable WorkDuration.UNIT factorUnit) { 138 this.factorUnit = factorUnit; 139 return this; 140 } 141 142 /** 143 * @deprecated since 4.2 144 */ 145 @Deprecated 146 public WorkUnit offset() { 147 return WorkUnit.create((double) offsetValue, fromUnit(offsetUnit)); 148 } 149 150 /** 151 * @deprecated since 4.2 152 */ 153 @Deprecated 154 public DefaultRequirement setOffset(WorkUnit offset) { 155 this.offsetValue = (int) offset.getValue(); 156 this.offsetUnit = toUnit(offset.getUnit()); 157 return this; 158 } 159 160 public int offsetValue() { 161 return offsetValue; 162 } 163 164 public DefaultRequirement setOffsetValue(int offsetValue) { 165 this.offsetValue = offsetValue; 166 return this; 167 } 168 169 @CheckForNull 170 public WorkDuration.UNIT offsetUnit() { 171 return offsetUnit; 172 } 173 174 public DefaultRequirement setOffsetUnit(@Nullable WorkDuration.UNIT offsetUnit) { 175 this.offsetUnit = offsetUnit; 176 return this; 177 } 178 179 public Date createdAt() { 180 return createdAt; 181 } 182 183 public DefaultRequirement setCreatedAt(Date createdAt) { 184 this.createdAt = createdAt; 185 return this; 186 } 187 188 public Date updatedAt() { 189 return updatedAt; 190 } 191 192 public DefaultRequirement setUpdatedAt(Date updatedAt) { 193 this.updatedAt = updatedAt; 194 return this; 195 } 196 197 public static WorkDuration.UNIT toUnit(String requirementUnit){ 198 if (WorkUnit.DAYS.equals(requirementUnit)) { 199 return WorkDuration.UNIT.DAYS; 200 } else if (WorkUnit.HOURS.equals(requirementUnit)) { 201 return WorkDuration.UNIT.HOURS; 202 } else if (WorkUnit.MINUTES.equals(requirementUnit)) { 203 return WorkDuration.UNIT.MINUTES; 204 } 205 throw new IllegalStateException("Invalid unit : " + requirementUnit); 206 } 207 208 private static String fromUnit(WorkDuration.UNIT unit){ 209 if (WorkDuration.UNIT.DAYS.equals(unit)) { 210 return WorkUnit.DAYS; 211 } else if (WorkDuration.UNIT.HOURS.equals(unit)) { 212 return WorkUnit.HOURS; 213 } else if (WorkDuration.UNIT.MINUTES.equals(unit)) { 214 return WorkUnit.MINUTES; 215 } 216 throw new IllegalStateException("Invalid unit : " + unit); 217 } 218 219 @Override 220 public String toString() { 221 return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE); 222 } 223 224 @Override 225 public boolean equals(Object o) { 226 if (this == o) { 227 return true; 228 } 229 if (o == null || getClass() != o.getClass()) { 230 return false; 231 } 232 233 DefaultRequirement that = (DefaultRequirement) o; 234 235 if (!characteristic.equals(that.characteristic)) { 236 return false; 237 } 238 if (!ruleKey.equals(that.ruleKey)) { 239 return false; 240 } 241 242 return true; 243 } 244 245 @Override 246 public int hashCode() { 247 int result = ruleKey.hashCode(); 248 result = 31 * result + characteristic.hashCode(); 249 return result; 250 } 251 }