001/**
002 * Copyright 2005-2015 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.kew.rule;
017
018import org.apache.commons.lang.ObjectUtils;
019import org.kuali.rice.krad.data.jpa.PortableSequenceGenerator;
020
021import javax.persistence.Column;
022import javax.persistence.Entity;
023import javax.persistence.FetchType;
024import javax.persistence.GeneratedValue;
025import javax.persistence.Id;
026import javax.persistence.JoinColumn;
027import javax.persistence.ManyToOne;
028import javax.persistence.Table;
029import javax.persistence.Version;
030import java.io.Serializable;
031
032
033/**
034 * The value of an extension to a rule.  Essentially contains a
035 * key-value pair containing the key of the extension data and
036 * it's value.
037 * 
038 * @see RuleBaseValues
039 * @see RuleExtensionBo
040 *
041 * @author Kuali Rice Team (rice.collab@kuali.org)
042 */
043@Entity
044@Table(name="KREW_RULE_EXT_VAL_T")
045public class RuleExtensionValue implements Serializable {
046
047        private static final long serialVersionUID = 8909789087052290261L;
048        @Id
049    @PortableSequenceGenerator(name="KREW_RTE_TMPL_S")
050        @GeneratedValue(generator="KREW_RTE_TMPL_S")
051        @Column(name="RULE_EXT_VAL_ID")
052        private String ruleExtensionValueId;
053
054    @Column(name="VAL")
055        private String value;
056    @Column(name="KEY_CD")
057        private String key;
058    @Version
059        @Column(name="VER_NBR")
060        private Integer lockVerNbr;
061    
062    @ManyToOne(fetch=FetchType.EAGER)
063        @JoinColumn(name="RULE_EXT_ID", nullable = false)
064        private RuleExtensionBo extension;
065    
066    public RuleExtensionValue() {
067    }
068    
069    public RuleExtensionValue(String key, String value) {
070        this.key = key;
071        this.value = value;
072    }
073
074    public RuleExtensionBo getExtension() {
075        return extension;
076    }
077    public void setExtension(RuleExtensionBo extension) {
078        this.extension = extension;
079    }
080    public Integer getLockVerNbr() {
081        return lockVerNbr;
082    }
083    public void setLockVerNbr(Integer lockVerNbr) {
084        this.lockVerNbr = lockVerNbr;
085    }
086    public String getKey() {
087        return key;
088    }
089    public void setKey(String key) {
090        this.key = key;
091    }
092    public String getRuleExtensionValueId() {
093        return ruleExtensionValueId;
094    }
095    public void setRuleExtensionValueId(String ruleExtensionValueId) {
096        this.ruleExtensionValueId = ruleExtensionValueId;
097    }
098    public String getValue() {
099        return value;
100    }
101    public void setValue(String value) {
102        this.value = value;
103    }
104
105    public boolean equals(Object o) {
106        if (o == null) return false;
107        if (!(o instanceof RuleExtensionValue)) return false;
108        RuleExtensionValue pred = (RuleExtensionValue) o;
109        return ObjectUtils.equals(key, pred.key) && ObjectUtils.equals(value, pred.value);
110    }
111
112    public String toString() {
113        return "[RuleExtensionValue:"
114               +  " ruleExtensionValueId=" + ruleExtensionValueId
115               + ", value=" + value
116               + ", key=" + key
117               + ", lockVerNbr=" + lockVerNbr
118               + "]";
119            
120    }
121}