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}