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 */
020package org.sonar.api.rules;
021
022import org.sonar.api.database.BaseIdentifiable;
023
024import org.apache.commons.lang.builder.EqualsBuilder;
025import org.apache.commons.lang.builder.HashCodeBuilder;
026
027import javax.persistence.*;
028
029/**
030 * @since 2.9
031 */
032@Entity
033@Table(name = "active_rule_param_changes")
034public class ActiveRuleParamChange extends BaseIdentifiable {
035
036  @ManyToOne(fetch = FetchType.LAZY)
037  @JoinColumn(name = "active_rule_change_id")
038  private ActiveRuleChange activeRuleChange;
039
040  @ManyToOne(fetch = FetchType.LAZY, optional = true)
041  @JoinColumn(name = "rules_parameter_id")
042  private RuleParam ruleParam;
043
044  @Column(name = "old_value", updatable = false, nullable = true, length = 4000)
045  private String oldValue;
046
047  @Column(name = "new_value", updatable = false, nullable = true, length = 4000)
048  private String newValue;
049
050  ActiveRuleParamChange(ActiveRuleChange activeRuleChange, RuleParam ruleParam, String oldValue, String newValue) {
051    this.activeRuleChange = activeRuleChange;
052    this.ruleParam = ruleParam;
053    this.oldValue = oldValue;
054    this.newValue = newValue;
055  }
056
057  public ActiveRuleChange getActiveRuleChange() {
058    return activeRuleChange;
059  }
060
061  public RuleParam getRuleParam() {
062    return ruleParam;
063  }
064
065  public String getOldValue() {
066    return oldValue;
067  }
068
069  public String getNewValue() {
070    return newValue;
071  }
072
073  public String getKey() {
074    return ruleParam.getKey();
075  }
076
077  @Override
078  public boolean equals(Object obj) {
079    if (!(obj instanceof ActiveRuleParamChange)) {
080      return false;
081    }
082    if (this == obj) {
083      return true;
084    }
085    ActiveRuleParamChange other = (ActiveRuleParamChange) obj;
086    return new EqualsBuilder()
087        .append(getId(), other.getId()).isEquals();
088  }
089
090  @Override
091  public int hashCode() {
092    return new HashCodeBuilder(17, 57)
093        .append(getId())
094        .toHashCode();
095  }
096
097}