001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2008-2011 SonarSource 004 * mailto:contact AT sonarsource DOT com 005 * 006 * Sonar 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 * Sonar 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 017 * License along with Sonar; if not, write to the Free Software 018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 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 /** 029 * @since 1.10 030 */ 031 public class RuleMeasure extends Measure { 032 033 private Rule rule; 034 private RulePriority rulePriority; 035 036 /** 037 * This constructor is for internal use only. Please use static methods createForXXX(). 038 */ 039 public RuleMeasure(Metric metric, Rule rule, RulePriority rulePriority, Integer ruleCategory) { 040 super(metric); 041 this.rule = rule; 042 this.rulePriority = rulePriority; 043 } 044 045 public Rule getRule() { 046 return rule; 047 } 048 049 public void setRule(Rule rule) { 050 this.rule = rule; 051 } 052 053 public RulePriority getRulePriority() { 054 return rulePriority; 055 } 056 057 public void setRulePriority(RulePriority rulePriority) { 058 this.rulePriority = rulePriority; 059 } 060 061 /** 062 * @deprecated since 2.5 See http://jira.codehaus.org/browse/SONAR-2007 063 */ 064 @Deprecated 065 public Integer getRuleCategory() { 066 return null; 067 } 068 069 /** 070 * @deprecated since 2.5 See http://jira.codehaus.org/browse/SONAR-2007 071 */ 072 @Deprecated 073 public void setRuleCategory(Integer ruleCategory) { 074 075 } 076 077 @Override 078 public boolean equals(Object obj) { 079 if (obj == null) { 080 return false; 081 } 082 if (!(obj.getClass().equals(RuleMeasure.class))) {//NOSONAR should be refactored but kept in the current state 083 // for the moment. 084 return false; 085 } 086 if (this == obj) { 087 return true; 088 } 089 RuleMeasure other = (RuleMeasure) obj; 090 return new EqualsBuilder() 091 .append(getMetric(), other.getMetric()) 092 .append(rule, other.rule) 093 .append(rulePriority, other.rulePriority) 094 .isEquals(); 095 } 096 097 @Override 098 public RuleMeasure setValue(Double v) { 099 return (RuleMeasure) super.setValue(v); 100 } 101 102 @Override 103 public int hashCode() { 104 return new HashCodeBuilder(17, 37). 105 append(getMetric()). 106 append(rule). 107 append(rulePriority). 108 toHashCode(); 109 } 110 111 @Override 112 public String toString() { 113 return new ToStringBuilder(this). 114 append("id", getId()). 115 append("metric", metric). 116 append("value", value). 117 append("data", data). 118 append("description", description). 119 append("alertStatus", alertStatus). 120 append("alertText", alertText). 121 append("tendency", tendency). 122 append("rule", rule). 123 append("priority", rulePriority). 124 toString(); 125 } 126 127 public static RuleMeasure createForRule(Metric metric, Rule rule, Double value) { 128 return (RuleMeasure) new RuleMeasure(metric, rule, null, null).setValue(value); 129 } 130 131 public static RuleMeasure createForPriority(Metric metric, RulePriority priority, Double value) { 132 return (RuleMeasure) new RuleMeasure(metric, null, priority, null).setValue(value); 133 } 134 135 /** 136 * @deprecated since 2.5 See http://jira.codehaus.org/browse/SONAR-2007 137 */ 138 @Deprecated 139 public static RuleMeasure createForCategory(Metric metric, Integer category, Double value) { 140 return (RuleMeasure) new RuleMeasure(metric, null, null, category).setValue(value); 141 } 142 }