001/**
002 * Copyright 2005-2016 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.kuali.rice.kew.api.rule.RuleTemplateOptionContract;
019import org.kuali.rice.kew.rule.bo.RuleTemplateBo;
020import org.kuali.rice.krad.bo.BusinessObjectBase;
021import org.kuali.rice.krad.data.jpa.PortableSequenceGenerator;
022import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
023
024import javax.persistence.Column;
025import javax.persistence.Entity;
026import javax.persistence.FetchType;
027import javax.persistence.GeneratedValue;
028import javax.persistence.Id;
029import javax.persistence.JoinColumn;
030import javax.persistence.ManyToOne;
031import javax.persistence.Table;
032import javax.persistence.Transient;
033import javax.persistence.Version;
034
035/**
036 * Defines default values and other preset information for a {@link RuleBaseValues} 
037 * which is based off of the associated {@link org.kuali.rice.kew.rule.bo.RuleTemplateBo}.
038 * 
039 * @see RuleBaseValues
040 * @see org.kuali.rice.kew.rule.bo.RuleTemplateBo
041 *
042 * @author Kuali Rice Team (rice.collab@kuali.org)
043 */
044@Entity
045@Table(name="KREW_RULE_TMPL_OPTN_T")
046//@Sequence(name="KREW_RULE_TMPL_OPTN_S", property="id")
047public class RuleTemplateOptionBo extends BusinessObjectBase implements RuleTemplateOptionContract {
048
049        private static final long serialVersionUID = 8913119135197149224L;
050        @Id
051    @PortableSequenceGenerator(name="KREW_RULE_TMPL_OPTN_S")
052        @GeneratedValue(generator="KREW_RULE_TMPL_OPTN_S")
053        @Column(name="RULE_TMPL_OPTN_ID")
054        private String id;
055    @Column(name="KEY_CD")
056        private String code;
057    @Column(name="VAL")
058        private String value;
059    @Version
060        @Column(name="VER_NBR")
061        private Long versionNumber;
062
063    @Transient
064    private String ruleTemplateId;
065
066    @ManyToOne(fetch=FetchType.EAGER)
067        @JoinColumn(name="RULE_TMPL_ID",nullable = false)
068        private RuleTemplateBo ruleTemplate;
069    
070    public RuleTemplateOptionBo(){}
071    
072    public RuleTemplateOptionBo(String key, String value){
073        this.code = key;
074        this.value = value;
075    }
076
077    @Override
078    public String getCode() {
079        return code;
080    }
081
082    public void setCode(String code) {
083        this.code = code;
084    }
085    @Override
086    public Long getVersionNumber() {
087        return versionNumber;
088    }
089
090    public void setVersionNumber(Long versionNumber) {
091        this.versionNumber = versionNumber;
092    }
093
094    public RuleTemplateBo getRuleTemplate() {
095        return ruleTemplate;
096    }
097
098    public void setRuleTemplate(RuleTemplateBo ruleTemplate) {
099        this.ruleTemplate = ruleTemplate;
100    }
101    @Override
102    public String getRuleTemplateId() {
103        return getRuleTemplate() != null ? getRuleTemplate().getId() : ruleTemplateId;
104    }
105
106    @Override
107    public String getId() {
108        return id;
109    }
110
111    public void setId(String id) {
112        this.id = id;
113    }
114
115    @Override
116    public String getValue() {
117        return value;
118    }
119
120    public void setValue(String value) {
121        this.value = value;
122    }
123
124    @Override
125    public void refresh() {
126        KRADServiceLocatorWeb.getLegacyDataAdapter().retrieveNonKeyFields(this);
127    }
128
129    public void setRuleTemplateId(String ruleTemplateId) {
130        this.ruleTemplateId = ruleTemplateId;
131    }
132
133}
134