001/**
002 * Copyright 2005-2017 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.krms.impl.repository;
017
018import org.kuali.rice.krad.data.jpa.PortableSequenceGenerator;
019import org.kuali.rice.krms.api.repository.language.NaturalLanguageTemplateAttribute;
020import org.kuali.rice.krms.api.repository.language.NaturalLanguageTemplateAttributeContract;
021import org.kuali.rice.krms.api.repository.type.KrmsAttributeDefinitionContract;
022
023import javax.persistence.CascadeType;
024import javax.persistence.Column;
025import javax.persistence.Entity;
026import javax.persistence.GeneratedValue;
027import javax.persistence.Id;
028import javax.persistence.JoinColumn;
029import javax.persistence.ManyToOne;
030import javax.persistence.Table;
031import javax.persistence.Version;
032import java.io.Serializable;
033
034/**
035 * The mutable implementation of the @{link NaturalLanguageTemplateAttributeContract} interface, the counterpart to the immutable implementation {@link NaturalLanguageTemplateAttribute}.
036 * @author Kuali Rice Team (rice.collab@kuali.org)
037 * 
038 */
039@Entity
040@Table(name = "KRMS_NL_TMPL_ATTR_T")
041public class NaturalLanguageTemplateAttributeBo implements NaturalLanguageTemplateAttributeContract, Serializable {
042
043    private static final long serialVersionUID = 1l;
044
045    @Column(name = "NL_TMPL_ID")
046    private String naturalLanguageTemplateId;
047
048    @Column(name = "VER_NBR")
049    @Version
050    private Long versionNumber;
051
052    @Column(name = "ATTR_VAL")
053    private String value;
054
055    @Column(name = "ATTR_DEFN_ID")
056    private String attributeDefinitionId;
057
058    @ManyToOne(targetEntity = KrmsAttributeDefinitionBo.class, cascade = { CascadeType.REFRESH })
059    @JoinColumn(name = "ATTR_DEFN_ID", referencedColumnName = "ATTR_DEFN_ID", insertable = false, updatable = false)
060    private KrmsAttributeDefinitionContract attributeDefinition;
061
062    @PortableSequenceGenerator(name = "KRMS_NL_TMPL_ATTR_S")
063    @GeneratedValue(generator = "KRMS_NL_TMPL_ATTR_S")
064    @Id
065    @Column(name = "NL_TMPL_ATTR_ID")
066    private String id;
067
068    /**
069     * Default Constructor
070     * 
071     */
072    public NaturalLanguageTemplateAttributeBo() {
073    }
074
075    @Override
076    public String getNaturalLanguageTemplateId() {
077        return this.naturalLanguageTemplateId;
078    }
079
080    @Override
081    public Long getVersionNumber() {
082        return this.versionNumber;
083    }
084
085    @Override
086    public String getValue() {
087        return this.value;
088    }
089
090    @Override
091    public String getAttributeDefinitionId() {
092        return this.attributeDefinitionId;
093    }
094
095    @Override
096    public KrmsAttributeDefinitionContract getAttributeDefinition() {
097        return this.attributeDefinition;
098    }
099
100    @Override
101    public String getId() {
102        return this.id;
103    }
104
105    /**
106     * Sets the value of naturalLanguageTemplateId on this builder to the given value.
107     * 
108     * @param naturalLanguageTemplateId the naturalLanguageTemplateId value to set.
109     * 
110     */
111    public void setNaturalLanguageTemplateId(String naturalLanguageTemplateId) {
112        this.naturalLanguageTemplateId = naturalLanguageTemplateId;
113    }
114
115    /**
116     * Sets the value of versionNumber on this builder to the given value.
117     * 
118     * @param versionNumber the versionNumber value to set.
119     * 
120     */
121    public void setVersionNumber(Long versionNumber) {
122        this.versionNumber = versionNumber;
123    }
124
125    /**
126     * Sets the value of value on this builder to the given value.
127     * 
128     * @param value the value value to set.
129     * 
130     */
131    public void setValue(String value) {
132        this.value = value;
133    }
134
135    /**
136     * Sets the value of attributeDefinitionId on this builder to the given value.
137     * 
138     * @param attributeDefinitionId the attributeDefinitionId value to set.
139     * 
140     */
141    public void setAttributeDefinitionId(String attributeDefinitionId) {
142        this.attributeDefinitionId = attributeDefinitionId;
143    }
144
145    /**
146     * Sets the value of attributeDefinition on this builder to the given value.
147     * 
148     * @param attributeDefinition the attributeDefinition value to set.
149     * 
150     */
151    public void setAttributeDefinition(KrmsAttributeDefinitionContract attributeDefinition) {
152        this.attributeDefinition = attributeDefinition;
153    }
154
155    /**
156     * Sets the value of id on this builder to the given value.
157     * 
158     * @param id the id value to set.
159     * 
160     */
161    public void setId(String id) {
162        this.id = id;
163    }
164
165    /**
166     * Converts a mutable {@link NaturalLanguageTemplateAttributeBo} to its immutable counterpart, {@link NaturalLanguageTemplateAttribute}.
167     * @param naturalLanguageTemplateAttributeBo the mutable business object.
168     * @return a {@link NaturalLanguageTemplateAttribute} the immutable object.
169     * 
170     */
171    public static NaturalLanguageTemplateAttribute to(NaturalLanguageTemplateAttributeBo naturalLanguageTemplateAttributeBo) {
172        if (naturalLanguageTemplateAttributeBo == null) {
173            return null;
174        }
175
176        return NaturalLanguageTemplateAttribute.Builder.create(naturalLanguageTemplateAttributeBo).build();
177    }
178
179    /**
180     * Converts a immutable {@link NaturalLanguageTemplateAttribute} to its mutable {@link NaturalLanguageTemplateAttributeBo} counterpart.
181     * @param naturalLanguageTemplateAttribute the immutable object.
182     * @return a {@link NaturalLanguageTemplateAttributeBo} the mutable NaturalLanguageTemplateAttributeBo.
183     * 
184     */
185    public static org.kuali.rice.krms.impl.repository.NaturalLanguageTemplateAttributeBo from(NaturalLanguageTemplateAttribute naturalLanguageTemplateAttribute) {
186        if (naturalLanguageTemplateAttribute == null) {
187            return null;
188        }
189
190        NaturalLanguageTemplateAttributeBo naturalLanguageTemplateAttributeBo = new NaturalLanguageTemplateAttributeBo();
191        naturalLanguageTemplateAttributeBo.setNaturalLanguageTemplateId(naturalLanguageTemplateAttribute.getNaturalLanguageTemplateId());
192        naturalLanguageTemplateAttributeBo.setVersionNumber(naturalLanguageTemplateAttribute.getVersionNumber());
193        naturalLanguageTemplateAttributeBo.setValue(naturalLanguageTemplateAttribute.getValue());
194        naturalLanguageTemplateAttributeBo.setAttributeDefinitionId(naturalLanguageTemplateAttribute.getAttributeDefinitionId());
195        naturalLanguageTemplateAttributeBo.setAttributeDefinition(naturalLanguageTemplateAttribute.getAttributeDefinition());
196        naturalLanguageTemplateAttributeBo.setId(naturalLanguageTemplateAttribute.getId());
197
198        // TODO collections, etc. 
199        return naturalLanguageTemplateAttributeBo;
200    }
201}