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.krms.impl.repository; 017 018import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; 019import org.kuali.rice.krad.service.KRADServiceLocator; 020import org.kuali.rice.krad.service.SequenceAccessorService; 021import org.kuali.rice.krms.api.repository.reference.ReferenceObjectBinding; 022import org.kuali.rice.krms.api.repository.reference.ReferenceObjectBindingContract; 023 024/** 025 * The mutable implementation of the @{link ReferenceObjectBindingContract} interface, the counterpart to the immutable implementation {@link ReferenceObjectBinding}. 026 * @author Kuali Rice Team (rice.collab@kuali.org) 027 * 028 */ 029public class ReferenceObjectBindingBo 030 extends PersistableBusinessObjectBase 031 implements ReferenceObjectBindingContract 032{ 033 034 private String collectionName; 035 private String krmsDiscriminatorType; 036 private String krmsObjectId; 037 private String namespace; 038 private String referenceDiscriminatorType; 039 private String referenceObjectId; 040 private String id; 041 private boolean active; 042 private Long versionNumber; 043 private SequenceAccessorService sequenceAccessorService; 044 045 /** 046 * Default Constructor 047 * 048 */ 049 public ReferenceObjectBindingBo() { 050 } 051 052 @Override 053 public String getCollectionName() { 054 return this.collectionName; 055 } 056 057 @Override 058 public String getKrmsDiscriminatorType() { 059 return this.krmsDiscriminatorType; 060 } 061 062 @Override 063 public String getKrmsObjectId() { 064 return this.krmsObjectId; 065 } 066 067 @Override 068 public String getNamespace() { 069 return this.namespace; 070 } 071 072 @Override 073 public String getReferenceDiscriminatorType() { 074 return this.referenceDiscriminatorType; 075 } 076 077 @Override 078 public String getReferenceObjectId() { 079 return this.referenceObjectId; 080 } 081 082 @Override 083 public String getId() { 084 return this.id; 085 } 086 087 @Override 088 public boolean isActive() { 089 return this.active; 090 } 091 092 @Override 093 public Long getVersionNumber() { 094 return this.versionNumber; 095 } 096 097 /** 098 * Sets the value of collectionName on this builder to the given value. 099 * 100 * @param collectionName the collectionName value to set. 101 * 102 */ 103 public void setCollectionName(String collectionName) { 104 this.collectionName = collectionName; 105 } 106 107 /** 108 * Sets the value of krmsDiscriminatorType on this builder to the given value. 109 * 110 * @param krmsDiscriminatorType the krmsDiscriminatorType value to set. 111 * 112 */ 113 public void setKrmsDiscriminatorType(String krmsDiscriminatorType) { 114 this.krmsDiscriminatorType = krmsDiscriminatorType; 115 } 116 117 /** 118 * Sets the value of krmsObjectId on this builder to the given value. 119 * 120 * @param krmsObjectId the krmsObjectId value to set. 121 * 122 */ 123 public void setKrmsObjectId(String krmsObjectId) { 124 this.krmsObjectId = krmsObjectId; 125 } 126 127 /** 128 * Sets the value of namespace on this builder to the given value. 129 * 130 * @param namespace the namespace value to set. 131 * 132 */ 133 public void setNamespace(String namespace) { 134 this.namespace = namespace; 135 } 136 137 /** 138 * Sets the value of referenceDiscriminatorType on this builder to the given value. 139 * 140 * @param referenceDiscriminatorType the referenceDiscriminatorType value to set. 141 * 142 */ 143 public void setReferenceDiscriminatorType(String referenceDiscriminatorType) { 144 this.referenceDiscriminatorType = referenceDiscriminatorType; 145 } 146 147 /** 148 * Sets the value of referenceObjectId on this builder to the given value. 149 * 150 * @param referenceObjectId the referenceObjectId value to set. 151 * 152 */ 153 public void setReferenceObjectId(String referenceObjectId) { 154 this.referenceObjectId = referenceObjectId; 155 } 156 157 /** 158 * Sets the value of id on this builder to the given value. 159 * 160 * @param id the id value to set. 161 * 162 */ 163 public void setId(String id) { 164 this.id = id; 165 } 166 167 /** 168 * Sets the value of active on this builder to the given value. 169 * 170 * @param active the active value to set. 171 * 172 */ 173 public void setActive(boolean active) { 174 this.active = active; 175 } 176 177 /** 178 * Sets the value of versionNumber on this builder to the given value. 179 * 180 * @param versionNumber the versionNumber value to set. 181 * 182 */ 183 public void setVersionNumber(Long versionNumber) { 184 this.versionNumber = versionNumber; 185 } 186 187 /** 188 * Converts a mutable {@link ReferenceObjectBindingBo} to its immutable counterpart, {@link ReferenceObjectBinding}. 189 * @param referenceObjectBindingBo the mutable business object. 190 * @return a {@link ReferenceObjectBinding} the immutable object. 191 * 192 */ 193 public static ReferenceObjectBinding to(ReferenceObjectBindingBo referenceObjectBindingBo) { 194 if (referenceObjectBindingBo == null) { return null; } 195 return ReferenceObjectBinding.Builder.create(referenceObjectBindingBo).build(); 196 } 197 198 /** 199 * Converts a immutable {@link ReferenceObjectBinding} to its mutable {@link ReferenceObjectBindingBo} counterpart. 200 * @param referenceObjectBinding the immutable object. 201 * @return a {@link ReferenceObjectBindingBo} the mutable ReferenceObjectBindingBo. 202 * 203 */ 204 public static org.kuali.rice.krms.impl.repository.ReferenceObjectBindingBo from(ReferenceObjectBinding referenceObjectBinding) { 205 if (referenceObjectBinding == null) return null; 206 ReferenceObjectBindingBo referenceObjectBindingBo = new ReferenceObjectBindingBo(); 207 referenceObjectBindingBo.setCollectionName(referenceObjectBinding.getCollectionName()); 208 referenceObjectBindingBo.setKrmsDiscriminatorType(referenceObjectBinding.getKrmsDiscriminatorType()); 209 referenceObjectBindingBo.setKrmsObjectId(referenceObjectBinding.getKrmsObjectId()); 210 referenceObjectBindingBo.setNamespace(referenceObjectBinding.getNamespace()); 211 referenceObjectBindingBo.setReferenceDiscriminatorType(referenceObjectBinding.getReferenceDiscriminatorType()); 212 referenceObjectBindingBo.setReferenceObjectId(referenceObjectBinding.getReferenceObjectId()); 213 referenceObjectBindingBo.setId(referenceObjectBinding.getId()); 214 referenceObjectBindingBo.setActive(referenceObjectBinding.isActive()); 215 referenceObjectBindingBo.setVersionNumber(referenceObjectBinding.getVersionNumber()); 216 // TODO collections, etc. 217 return referenceObjectBindingBo; 218 } 219 220 /** 221 * Returns the next available id for the given table and class. 222 * @return String the next available id for the given table and class. 223 * 224 */ 225 private String getNewId(String table, Class clazz) { 226 if (sequenceAccessorService == null) { 227 sequenceAccessorService = KRADServiceLocator.getSequenceAccessorService(); 228 } 229 Long id = sequenceAccessorService.getNextAvailableSequenceNumber(table, clazz); 230 return id.toString(); 231 } 232 233 /** 234 * Set the SequenceAccessorService, useful for testing. 235 * @param sas SequenceAccessorService to use for getNewId. 236 * 237 */ 238 public void setSequenceAccessorService(SequenceAccessorService sas) { 239 sequenceAccessorService = sas; 240 } 241 242 public SequenceAccessorService getSequenceAccessorService() { 243 return sequenceAccessorService; 244 } 245 246}