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.rules;
021    
022    import org.apache.commons.lang.builder.EqualsBuilder;
023    import org.apache.commons.lang.builder.HashCodeBuilder;
024    
025    import javax.persistence.*;
026    
027    @Entity
028    @Table(name = "active_rule_parameters")
029    public class ActiveRuleParam implements Cloneable {
030    
031    
032      @Id
033      @Column(name = "id")
034      @GeneratedValue
035      private Integer id;
036    
037      @ManyToOne(fetch = FetchType.LAZY)
038      @JoinColumn(name = "active_rule_id")
039      private ActiveRule activeRule;
040    
041      @ManyToOne(fetch = FetchType.LAZY, optional = true)
042      @JoinColumn(name = "rules_parameter_id")
043      private RuleParam ruleParam;
044    
045      @Column(name = "value", updatable = false, nullable = true, length = 4000)
046      private String value;
047    
048      public Integer getId() {
049        return id;
050      }
051    
052      /**
053       * @deprecated visibility should be decreased to protected or package
054       */
055      @Deprecated
056      void setId(Integer id) {
057        this.id = id;
058      }
059    
060      /**
061       * @deprecated visibility should be decreased to protected or package
062       */
063      @Deprecated
064      public ActiveRuleParam() {
065      }
066    
067      /**
068       * @deprecated visibility should be decreased to protected or package
069       */
070      @Deprecated
071      public ActiveRuleParam(ActiveRule activeRule, RuleParam ruleParam, String value) {
072        this.activeRule = activeRule;
073        this.ruleParam = ruleParam;
074        this.value = value;
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 getKey() {
110        return ruleParam.getKey();
111      }
112    
113      @Override
114      public boolean equals(Object obj) {
115        if (!(obj instanceof RuleParam)) {
116          return false;
117        }
118        if (this == obj) {
119          return true;
120        }
121        RuleParam other = (RuleParam) obj;
122        return new EqualsBuilder()
123            .append(getId(), other.getKey()).isEquals();
124      }
125    
126      @Override
127      public int hashCode() {
128        return new HashCodeBuilder(17, 37)
129            .append(getId())
130            .toHashCode();
131      }
132    
133      @Override
134      public Object clone() {
135        return new ActiveRuleParam(getActiveRule(), getRuleParam(), getValue());
136      }
137    
138    }