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 }