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 javax.persistence.*;
023
024@Entity
025@Table(name = "active_rule_parameters")
026public class ActiveRuleParam implements Cloneable {
027
028  @Id
029  @Column(name = "id")
030  @GeneratedValue
031  private Integer id;
032
033  @ManyToOne(fetch = FetchType.LAZY)
034  @JoinColumn(name = "active_rule_id")
035  private ActiveRule activeRule;
036
037  @ManyToOne(fetch = FetchType.LAZY, optional = true)
038  @JoinColumn(name = "rules_parameter_id")
039  private RuleParam ruleParam;
040
041  @Column(name = "rules_parameter_key", updatable = false, nullable = false, length = 128)
042  private String paramKey;
043
044  @Column(name = "value", updatable = false, nullable = true, length = 4000)
045  private String value;
046
047  public Integer getId() {
048    return id;
049  }
050
051  /**
052   * @deprecated visibility should be decreased to protected or package
053   */
054  @Deprecated
055  void setId(Integer id) {
056    this.id = id;
057  }
058
059  /**
060   * @deprecated visibility should be decreased to protected or package
061   */
062  @Deprecated
063  public ActiveRuleParam() {
064  }
065
066  /**
067   * @deprecated visibility should be decreased to protected or package
068   */
069  @Deprecated
070  public ActiveRuleParam(ActiveRule activeRule, RuleParam ruleParam, String value) {
071    this.activeRule = activeRule;
072    this.ruleParam = ruleParam;
073    this.value = value;
074    this.paramKey = ruleParam.getKey();
075  }
076
077  public ActiveRule getActiveRule() {
078    return activeRule;
079  }
080
081  /**
082   * @deprecated visibility should be decreased to protected or package
083   */
084  @Deprecated
085  public void setActiveRule(ActiveRule activeRule) {
086    this.activeRule = activeRule;
087  }
088
089  public RuleParam getRuleParam() {
090    return ruleParam;
091  }
092
093  /**
094   * @deprecated visibility should be decreased to protected or package
095   */
096  @Deprecated
097  public void setRuleParam(RuleParam ruleParam) {
098    this.ruleParam = ruleParam;
099  }
100
101  public String getValue() {
102    return value;
103  }
104
105  public void setValue(String value) {
106    this.value = value;
107  }
108
109  public String getParamKey() {
110    return paramKey;
111  }
112
113  public void setParamKey(String paramKey) {
114    this.paramKey = paramKey;
115  }
116
117
118  public String getKey() {
119    return ruleParam.getKey();
120  }
121
122  @Override
123  public boolean equals(Object obj) {
124    if (!(obj instanceof ActiveRuleParam)) {
125      return false;
126    }
127    if (this == obj) {
128      return true;
129    }
130    ActiveRuleParam other = (ActiveRuleParam) obj;
131    return other.getKey().equals(getKey());
132  }
133
134  @Override
135  public int hashCode() {
136    return getKey().hashCode();
137  }
138
139  @Override
140  public Object clone() {
141    return new ActiveRuleParam(getActiveRule(), getRuleParam(), getValue());
142  }
143
144}