001/* 002 * SonarQube 003 * Copyright (C) 2009-2016 SonarSource SA 004 * mailto:contact AT sonarsource DOT com 005 * 006 * This program 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 * This program 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 */ 020package org.sonar.api.measures; 021 022import org.apache.commons.lang.builder.EqualsBuilder; 023import org.apache.commons.lang.builder.HashCodeBuilder; 024import org.apache.commons.lang.builder.ToStringBuilder; 025import org.sonar.api.rule.RuleKey; 026import org.sonar.api.rules.Rule; 027import org.sonar.api.rules.RulePriority; 028 029import javax.annotation.CheckForNull; 030import javax.annotation.Nullable; 031 032/** 033 * @since 1.10 034 * @deprecated since 5.2. Ignored by design because of Compute Engine. 035 */ 036@Deprecated 037public class RuleMeasure extends Measure { 038 039 private RuleKey ruleKey; 040 private RulePriority rulePriority; 041 042 /** 043 * This constructor is for internal use only. Please use static methods createForXXX(). 044 * @deprecated since 4.4 use {@link #RuleMeasure(Metric, RuleKey, RulePriority, Integer)} 045 */ 046 @Deprecated 047 public RuleMeasure(Metric metric, @Nullable Rule rule, @Nullable RulePriority rulePriority, @Nullable Integer ruleCategory) { 048 this(metric, rule != null ? rule.ruleKey() : null, rulePriority, ruleCategory); 049 } 050 051 /** 052 * This constructor is for internal use only. Please use static methods createForXXX(). 053 */ 054 public RuleMeasure(Metric metric, @Nullable RuleKey ruleKey, @Nullable RulePriority rulePriority, @Nullable Integer ruleCategory) { 055 super(metric); 056 this.ruleKey = ruleKey; 057 this.rulePriority = rulePriority; 058 } 059 060 @CheckForNull 061 public RuleKey ruleKey() { 062 return ruleKey; 063 } 064 065 public RuleMeasure setRuleKey(RuleKey ruleKey) { 066 this.ruleKey = ruleKey; 067 return this; 068 } 069 070 /** 071 * @deprecated since 4.4 use {@link #ruleKey()} 072 */ 073 @Deprecated 074 public Rule getRule() { 075 return Rule.create(ruleKey.repository(), ruleKey.rule()); 076 } 077 078 /** 079 * @deprecated since 4.4 use {@link #setRuleKey(org.sonar.api.rule.RuleKey)} 080 */ 081 @Deprecated 082 public RuleMeasure setRule(Rule rule) { 083 this.ruleKey = rule.ruleKey(); 084 return this; 085 } 086 087 /** 088 * @deprecated since 2.14 use {@link #getSeverity()} instead. See SONAR-1829. 089 */ 090 @Deprecated 091 @CheckForNull 092 public RulePriority getRulePriority() { 093 return rulePriority; 094 } 095 096 /** 097 * @since 2.14 098 */ 099 @CheckForNull 100 public RulePriority getSeverity() { 101 return rulePriority; 102 } 103 104 /** 105 * @deprecated since 2.14 use {@link #setSeverity(org.sonar.api.rules.RulePriority)} instead. See SONAR-1829. 106 */ 107 @Deprecated 108 public RuleMeasure setRulePriority(RulePriority rulePriority) { 109 this.rulePriority = rulePriority; 110 return this; 111 } 112 113 /** 114 * @since 2.14 115 */ 116 public RuleMeasure setSeverity(RulePriority severity) { 117 this.rulePriority = severity; 118 return this; 119 } 120 121 @Override 122 public boolean equals(Object obj) { 123 if (obj == null) { 124 return false; 125 } 126 if (!(obj.getClass().equals(RuleMeasure.class))) { 127 // for the moment. 128 return false; 129 } 130 if (this == obj) { 131 return true; 132 } 133 RuleMeasure other = (RuleMeasure) obj; 134 return new EqualsBuilder() 135 .append(getMetric(), other.getMetric()) 136 .append(personId, other.personId) 137 .append(ruleKey, other.ruleKey) 138 .isEquals(); 139 } 140 141 @Override 142 public RuleMeasure setValue(@Nullable Double v) { 143 return (RuleMeasure) super.setValue(v); 144 } 145 146 @Override 147 public int hashCode() { 148 return new HashCodeBuilder(17, 37) 149 .append(getMetric()) 150 .append(personId) 151 .append(ruleKey) 152 .toHashCode(); 153 } 154 155 @Override 156 public String toString() { 157 return new ToStringBuilder(this) 158 .append("metric", metric) 159 .append("personId", personId) 160 .append("ruleKey", ruleKey) 161 .append("value", value) 162 .append("data", data) 163 .append("description", description) 164 .append("alertStatus", alertStatus) 165 .append("alertText", alertText) 166 .append("severity", rulePriority) 167 .toString(); 168 } 169 170 /** 171 * @deprecated since 4.4 use {@link #createForRule(Metric, RuleKey, Double)} 172 */ 173 @Deprecated 174 public static RuleMeasure createForRule(Metric metric, Rule rule, @Nullable Double value) { 175 return new RuleMeasure(metric, rule, null, null).setValue(value); 176 } 177 178 public static RuleMeasure createForRule(Metric metric, RuleKey ruleKey, @Nullable Double value) { 179 return new RuleMeasure(metric, ruleKey, null, null).setValue(value); 180 } 181 182 public static RuleMeasure createForPriority(Metric metric, RulePriority priority, @Nullable Double value) { 183 return new RuleMeasure(metric, (RuleKey) null, priority, null).setValue(value); 184 } 185 186 /** 187 * @deprecated since 2.5. See SONAR-2007. 188 */ 189 @Deprecated 190 public static RuleMeasure createForCategory(Metric metric, Integer category, @Nullable Double value) { 191 return new RuleMeasure(metric, (RuleKey) null, null, category).setValue(value); 192 } 193}