001/* 002 * SonarQube, open source software quality management tool. 003 * Copyright (C) 2008-2013 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; 028 029import javax.annotation.CheckForNull; 030import javax.annotation.Nullable; 031 032/** 033 * @since 4.1 034 */ 035public class DefaultCharacteristic implements Characteristic { 036 037 private Integer id; 038 private String key; 039 private String name; 040 private Integer order; 041 private Integer parentId; 042 private Integer rootId; 043 private RuleKey ruleKey; 044 private String function; 045 private WorkUnit factor; 046 private WorkUnit offset; 047 048 public Integer id() { 049 return id; 050 } 051 052 public DefaultCharacteristic setId(Integer id) { 053 this.id = id; 054 return this; 055 } 056 057 @CheckForNull 058 public String key() { 059 return key; 060 } 061 062 public DefaultCharacteristic setKey(@Nullable String key) { 063 this.key = key; 064 return this; 065 } 066 067 @CheckForNull 068 public String name() { 069 return name; 070 } 071 072 public DefaultCharacteristic setName(@Nullable String name) { 073 this.name = name; 074 return this; 075 } 076 077 @CheckForNull 078 public Integer order() { 079 return order; 080 } 081 082 public DefaultCharacteristic setOrder(@Nullable Integer order) { 083 this.order = order; 084 return this; 085 } 086 087 @CheckForNull 088 public Integer parentId() { 089 return parentId; 090 } 091 092 public DefaultCharacteristic setParentId(@Nullable Integer parentId) { 093 this.parentId = parentId; 094 return this; 095 } 096 097 @CheckForNull 098 public Integer rootId() { 099 return rootId; 100 } 101 102 public DefaultCharacteristic setRootId(@Nullable Integer rootId) { 103 this.rootId = rootId; 104 return this; 105 } 106 107 @CheckForNull 108 public RuleKey ruleKey() { 109 return ruleKey; 110 } 111 112 public DefaultCharacteristic setRuleKey(@Nullable RuleKey ruleKey) { 113 this.ruleKey = ruleKey; 114 return this; 115 } 116 117 @CheckForNull 118 public String function() { 119 return function; 120 } 121 122 public DefaultCharacteristic setFunction(@Nullable String function) { 123 this.function = function; 124 return this; 125 } 126 127 @CheckForNull 128 public WorkUnit factor() { 129 return factor; 130 } 131 132 public DefaultCharacteristic setFactor(@Nullable WorkUnit factor) { 133 this.factor = factor; 134 return this; 135 } 136 137 @CheckForNull 138 public WorkUnit offset() { 139 return offset; 140 } 141 142 public DefaultCharacteristic setOffset(@Nullable WorkUnit offset) { 143 this.offset = offset; 144 return this; 145 } 146 147 public boolean isRoot() { 148 return parentId == null; 149 } 150 151 public boolean isRequirement() { 152 return ruleKey != null; 153 } 154 155 @Override 156 public boolean equals(Object o) { 157 if (this == o) { 158 return true; 159 } 160 if (o == null || getClass() != o.getClass()) { 161 return false; 162 } 163 164 DefaultCharacteristic that = (DefaultCharacteristic) o; 165 166 if (key != null ? !key.equals(that.key) : that.key != null) { 167 return false; 168 } 169 if (ruleKey != null ? !ruleKey.equals(that.ruleKey) : that.ruleKey != null) { 170 return false; 171 } 172 173 return true; 174 } 175 176 @Override 177 public int hashCode() { 178 int result = key != null ? key.hashCode() : 0; 179 result = 31 * result + (ruleKey != null ? ruleKey.hashCode() : 0); 180 return result; 181 } 182 183 @Override 184 public String toString() { 185 return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE); 186 } 187 188}