001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2009 SonarSource SA 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 private Integer ruleCategory; 036 037 /** 038 * This constructor is for internal use only. Please use static methods createForXXX(). 039 */ 040 public RuleMeasure(Metric metric, Rule rule, RulePriority rulePriority, Integer ruleCategory) { 041 super(metric); 042 this.rule = rule; 043 this.rulePriority = rulePriority; 044 this.ruleCategory = ruleCategory; 045 } 046 047 public Rule getRule() { 048 return rule; 049 } 050 051 public void setRule(Rule rule) { 052 this.rule = rule; 053 } 054 055 public RulePriority getRulePriority() { 056 return rulePriority; 057 } 058 059 public void setRulePriority(RulePriority rulePriority) { 060 this.rulePriority = rulePriority; 061 } 062 063 public Integer getRuleCategory() { 064 return ruleCategory; 065 } 066 067 public void setRuleCategory(Integer ruleCategory) { 068 this.ruleCategory = ruleCategory; 069 } 070 071 @Override 072 public boolean equals(Object obj) { 073 if (!(obj.getClass().equals(RuleMeasure.class))) { 074 return false; 075 } 076 if (this == obj) { 077 return true; 078 } 079 RuleMeasure other = (RuleMeasure) obj; 080 return new EqualsBuilder() 081 .append(getMetric(), other.getMetric()) 082 .append(rule, other.rule) 083 .append(rulePriority, other.rulePriority) 084 .append(ruleCategory, other.ruleCategory) 085 .isEquals(); 086 } 087 088 @Override 089 public RuleMeasure setValue(Double v) { 090 return (RuleMeasure) super.setValue(v); 091 } 092 093 @Override 094 public int hashCode() { 095 return new HashCodeBuilder(17, 37). 096 append(getMetric()). 097 append(rule). 098 append(rulePriority). 099 append(ruleCategory). 100 toHashCode(); 101 102 } 103 104 @Override 105 public String toString() { 106 return new ToStringBuilder(this). 107 append("id", getId()). 108 append("metric", metric). 109 append("value", value). 110 append("data", data). 111 append("description", description). 112 append("alertStatus", alertStatus). 113 append("alertText", alertText). 114 append("tendency", tendency). 115 append("rule", rule). 116 append("category", ruleCategory). 117 append("priority", rulePriority). 118 toString(); 119 } 120 121 public static RuleMeasure createForRule(Metric metric, Rule rule, Double value) { 122 return (RuleMeasure) new RuleMeasure(metric, rule, null, null).setValue(value); 123 } 124 125 public static RuleMeasure createForPriority(Metric metric, RulePriority priority, Double value) { 126 return (RuleMeasure) new RuleMeasure(metric, null, priority, null).setValue(value); 127 } 128 129 public static RuleMeasure createForCategory(Metric metric, Integer category, Double value) { 130 return (RuleMeasure) new RuleMeasure(metric, null, null, category).setValue(value); 131 } 132 }