001    /*
002     * SonarQube, open source software quality management tool.
003     * Copyright (C) 2008-2014 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.rules;
021    
022    import javax.persistence.*;
023    
024    @Entity
025    @Table(name = "active_rule_parameters")
026    public 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    }