001/* 002 * SonarQube 003 * Copyright (C) 2009-2018 SonarSource SA 004 * mailto:info 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(ruleKey, other.ruleKey) 137 .isEquals(); 138 } 139 140 @Override 141 public RuleMeasure setValue(@Nullable Double v) { 142 return (RuleMeasure) super.setValue(v); 143 } 144 145 @Override 146 public int hashCode() { 147 return new HashCodeBuilder(17, 37) 148 .append(getMetric()) 149 .append(ruleKey) 150 .toHashCode(); 151 } 152 153 @Override 154 public String toString() { 155 return new ToStringBuilder(this) 156 .append("metric", metric) 157 .append("ruleKey", ruleKey) 158 .append("value", value) 159 .append("data", data) 160 .append("description", description) 161 .append("alertStatus", alertStatus) 162 .append("alertText", alertText) 163 .append("severity", rulePriority) 164 .toString(); 165 } 166 167 /** 168 * @deprecated since 4.4 use {@link #createForRule(Metric, RuleKey, Double)} 169 */ 170 @Deprecated 171 public static RuleMeasure createForRule(Metric metric, Rule rule, @Nullable Double value) { 172 return new RuleMeasure(metric, rule, null, null).setValue(value); 173 } 174 175 public static RuleMeasure createForRule(Metric metric, RuleKey ruleKey, @Nullable Double value) { 176 return new RuleMeasure(metric, ruleKey, null, null).setValue(value); 177 } 178 179 public static RuleMeasure createForPriority(Metric metric, RulePriority priority, @Nullable Double value) { 180 return new RuleMeasure(metric, (RuleKey) null, priority, null).setValue(value); 181 } 182 183 /** 184 * @deprecated since 2.5. See SONAR-2007. 185 */ 186 @Deprecated 187 public static RuleMeasure createForCategory(Metric metric, Integer category, @Nullable Double value) { 188 return new RuleMeasure(metric, (RuleKey) null, null, category).setValue(value); 189 } 190}