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 package org.sonar.api.measures; 021 022 import org.apache.commons.lang.builder.EqualsBuilder; 023 import org.apache.commons.lang.builder.HashCodeBuilder; 024 import org.apache.commons.lang.builder.ToStringBuilder; 025 import org.sonar.api.rules.Rule; 026 import org.sonar.api.rules.RulePriority; 027 028 import javax.annotation.Nullable; 029 030 /** 031 * @since 1.10 032 */ 033 public class RuleMeasure extends Measure { 034 035 private Rule rule; 036 private RulePriority rulePriority; 037 038 /** 039 * This constructor is for internal use only. Please use static methods createForXXX(). 040 */ 041 public RuleMeasure(Metric metric, @Nullable Rule rule, @Nullable RulePriority rulePriority, @Nullable Integer ruleCategory) { 042 super(metric); 043 this.rule = rule; 044 this.rulePriority = rulePriority; 045 } 046 047 public Rule getRule() { 048 return rule; 049 } 050 051 public RuleMeasure setRule(Rule rule) { 052 this.rule = rule; 053 return this; 054 } 055 056 /** 057 * @deprecated since 2.14 use {@link #getSeverity()} instead. See SONAR-1829. 058 */ 059 @Deprecated 060 public RulePriority getRulePriority() { 061 return rulePriority; 062 } 063 064 /** 065 * @since 2.14 066 */ 067 public RulePriority getSeverity() { 068 return rulePriority; 069 } 070 071 /** 072 * @deprecated since 2.14 use {@link #setSeverity(org.sonar.api.rules.RulePriority)} instead. See SONAR-1829. 073 */ 074 @Deprecated 075 public RuleMeasure setRulePriority(RulePriority rulePriority) { 076 this.rulePriority = rulePriority; 077 return this; 078 } 079 080 /** 081 * @since 2.14 082 */ 083 public RuleMeasure setSeverity(RulePriority severity) { 084 this.rulePriority = severity; 085 return this; 086 } 087 088 /** 089 * @deprecated since 2.5. See SONAR-2007. 090 */ 091 @Deprecated 092 public Integer getRuleCategory() { 093 return null; 094 } 095 096 /** 097 * @deprecated since 2.5. See SONAR-2007. 098 */ 099 @Deprecated 100 public void setRuleCategory(Integer ruleCategory) { 101 } 102 103 @Override 104 public boolean equals(Object obj) { 105 if (obj == null) { 106 return false; 107 } 108 if (!(obj.getClass().equals(RuleMeasure.class))) {// NOSONAR should be refactored but kept in the current state 109 // for the moment. 110 return false; 111 } 112 if (this == obj) { 113 return true; 114 } 115 RuleMeasure other = (RuleMeasure) obj; 116 return new EqualsBuilder() 117 .append(getMetric(), other.getMetric()) 118 .append(personId, other.personId) 119 .append(rule, other.rule) 120 .isEquals(); 121 } 122 123 @Override 124 public RuleMeasure setValue(@Nullable Double v) { 125 return (RuleMeasure) super.setValue(v); 126 } 127 128 @Override 129 public int hashCode() { 130 return new HashCodeBuilder(17, 37) 131 .append(getMetric()) 132 .append(personId) 133 .append(rule) 134 .toHashCode(); 135 } 136 137 @Override 138 public String toString() { 139 return new ToStringBuilder(this) 140 .append("id", getId()) 141 .append("metric", metric) 142 .append("personId", personId) 143 .append("rule", rule) 144 .append("value", value) 145 .append("data", data) 146 .append("description", description) 147 .append("alertStatus", alertStatus) 148 .append("alertText", alertText) 149 .append("tendency", tendency) 150 .append("severity", rulePriority) 151 .toString(); 152 } 153 154 public static RuleMeasure createForRule(Metric metric, Rule rule, @Nullable Double value) { 155 return new RuleMeasure(metric, rule, null, null).setValue(value); 156 } 157 158 public static RuleMeasure createForPriority(Metric metric, RulePriority priority, @Nullable Double value) { 159 return new RuleMeasure(metric, null, priority, null).setValue(value); 160 } 161 162 /** 163 * @deprecated since 2.5. See SONAR-2007. 164 */ 165 @Deprecated 166 public static RuleMeasure createForCategory(Metric metric, Integer category, @Nullable Double value) { 167 return new RuleMeasure(metric, null, null, category).setValue(value); 168 } 169 }