001 /**
002 * Copyright 2005-2013 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 */
016 package org.kuali.rice.krms.impl.repository;
017
018 import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
019 import org.kuali.rice.krad.service.KRADServiceLocator;
020 import org.kuali.rice.krad.service.SequenceAccessorService;
021 import org.kuali.rice.krms.api.repository.language.NaturalLanguageTemplateAttribute;
022 import org.kuali.rice.krms.api.repository.language.NaturalLanguageTemplateAttributeContract;
023 import org.kuali.rice.krms.api.repository.type.KrmsAttributeDefinitionContract;
024
025 /**
026 * The mutable implementation of the @{link NaturalLanguageTemplateAttributeContract} interface, the counterpart to the immutable implementation {@link NaturalLanguageTemplateAttribute}.
027 * @author Kuali Rice Team (rice.collab@kuali.org)
028 *
029 */
030 public class NaturalLanguageTemplateAttributeBo
031 extends PersistableBusinessObjectBase
032 implements NaturalLanguageTemplateAttributeContract
033 {
034
035 private String naturalLanguageTemplateId;
036 private Long versionNumber;
037 private String value;
038 private String attributeDefinitionId;
039 private KrmsAttributeDefinitionContract attributeDefinition;
040 private String id;
041 private SequenceAccessorService sequenceAccessorService;
042
043 /**
044 * Default Constructor
045 *
046 */
047 public NaturalLanguageTemplateAttributeBo() {
048 }
049
050 @Override
051 public String getNaturalLanguageTemplateId() {
052 return this.naturalLanguageTemplateId;
053 }
054
055 @Override
056 public Long getVersionNumber() {
057 return this.versionNumber;
058 }
059
060 @Override
061 public String getValue() {
062 return this.value;
063 }
064
065 @Override
066 public String getAttributeDefinitionId() {
067 return this.attributeDefinitionId;
068 }
069
070 @Override
071 public KrmsAttributeDefinitionContract getAttributeDefinition() {
072 return this.attributeDefinition;
073 }
074
075 @Override
076 public String getId() {
077 return this.id;
078 }
079
080 /**
081 * Sets the value of naturalLanguageTemplateId on this builder to the given value.
082 *
083 * @param naturalLanguageTemplateId the naturalLanguageTemplateId value to set.
084 *
085 */
086 public void setNaturalLanguageTemplateId(String naturalLanguageTemplateId) {
087 this.naturalLanguageTemplateId = naturalLanguageTemplateId;
088 }
089
090 /**
091 * Sets the value of versionNumber on this builder to the given value.
092 *
093 * @param versionNumber the versionNumber value to set.
094 *
095 */
096 public void setVersionNumber(Long versionNumber) {
097 this.versionNumber = versionNumber;
098 }
099
100 /**
101 * Sets the value of value on this builder to the given value.
102 *
103 * @param value the value value to set.
104 *
105 */
106 public void setValue(String value) {
107 this.value = value;
108 }
109
110 /**
111 * Sets the value of attributeDefinitionId on this builder to the given value.
112 *
113 * @param attributeDefinitionId the attributeDefinitionId value to set.
114 *
115 */
116 public void setAttributeDefinitionId(String attributeDefinitionId) {
117 this.attributeDefinitionId = attributeDefinitionId;
118 }
119
120 /**
121 * Sets the value of attributeDefinition on this builder to the given value.
122 *
123 * @param attributeDefinition the attributeDefinition value to set.
124 *
125 */
126 public void setAttributeDefinition(KrmsAttributeDefinitionContract attributeDefinition) {
127 this.attributeDefinition = attributeDefinition;
128 }
129
130 /**
131 * Sets the value of id on this builder to the given value.
132 *
133 * @param id the id value to set.
134 *
135 */
136 public void setId(String id) {
137 this.id = id;
138 }
139
140 /**
141 * Converts a mutable {@link NaturalLanguageTemplateAttributeBo} to its immutable counterpart, {@link NaturalLanguageTemplateAttribute}.
142 * @param naturalLanguageTemplateAttributeBo the mutable business object.
143 * @return a {@link NaturalLanguageTemplateAttribute} the immutable object.
144 *
145 */
146 public static NaturalLanguageTemplateAttribute to(NaturalLanguageTemplateAttributeBo naturalLanguageTemplateAttributeBo) {
147 if (naturalLanguageTemplateAttributeBo == null) { return null; }
148 return NaturalLanguageTemplateAttribute.Builder.create(naturalLanguageTemplateAttributeBo).build();
149 }
150
151 /**
152 * Converts a immutable {@link NaturalLanguageTemplateAttribute} to its mutable {@link NaturalLanguageTemplateAttributeBo} counterpart.
153 * @param naturalLanguageTemplateAttribute the immutable object.
154 * @return a {@link NaturalLanguageTemplateAttributeBo} the mutable NaturalLanguageTemplateAttributeBo.
155 *
156 */
157 public static org.kuali.rice.krms.impl.repository.NaturalLanguageTemplateAttributeBo from(NaturalLanguageTemplateAttribute naturalLanguageTemplateAttribute) {
158 if (naturalLanguageTemplateAttribute == null) return null;
159 NaturalLanguageTemplateAttributeBo naturalLanguageTemplateAttributeBo = new NaturalLanguageTemplateAttributeBo();
160 naturalLanguageTemplateAttributeBo.setNaturalLanguageTemplateId(naturalLanguageTemplateAttribute.getNaturalLanguageTemplateId());
161 naturalLanguageTemplateAttributeBo.setVersionNumber(naturalLanguageTemplateAttribute.getVersionNumber());
162 naturalLanguageTemplateAttributeBo.setValue(naturalLanguageTemplateAttribute.getValue());
163 naturalLanguageTemplateAttributeBo.setAttributeDefinitionId(naturalLanguageTemplateAttribute.getAttributeDefinitionId());
164 naturalLanguageTemplateAttributeBo.setAttributeDefinition(naturalLanguageTemplateAttribute.getAttributeDefinition());
165 naturalLanguageTemplateAttributeBo.setId(naturalLanguageTemplateAttribute.getId());
166 // TODO collections, etc.
167 return naturalLanguageTemplateAttributeBo;
168 }
169
170 /**
171 * Returns the next available id for the given table and class.
172 * @return String the next available id for the given table and class.
173 *
174 */
175 private String getNewId(String table, Class clazz) {
176 if (sequenceAccessorService == null) {
177 sequenceAccessorService = KRADServiceLocator.getSequenceAccessorService();
178 }
179 Long id = sequenceAccessorService.getNextAvailableSequenceNumber(table, clazz);
180 return id.toString();
181 }
182
183 /**
184 * Set the SequenceAccessorService, useful for testing.
185 * @param sas SequenceAccessorService to use for getNewId.
186 *
187 */
188 public void setSequenceAccessorService(SequenceAccessorService sas) {
189 sequenceAccessorService = sas;
190 }
191
192 public SequenceAccessorService getSequenceAccessorService() {
193 return sequenceAccessorService;
194 }
195
196 }