001 /** 002 * Copyright 2005-2014 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.krad.data.platform; 017 018 import org.apache.commons.lang.StringUtils; 019 import org.springframework.beans.factory.FactoryBean; 020 import org.springframework.beans.factory.InitializingBean; 021 import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer; 022 023 import javax.sql.DataSource; 024 025 /** 026 * A factory bean for putting a {@link DataFieldMaxValueIncrementer} in the Spring context. 027 * 028 * @author Kuali Rice Team (rice.collab@kuali.org) 029 */ 030 public class MaxValueIncrementerFactoryBean implements FactoryBean<DataFieldMaxValueIncrementer>, InitializingBean { 031 032 private DataSource dataSource; 033 private String incrementerName; 034 035 /** 036 * {@inheritDoc} 037 */ 038 @Override 039 public DataFieldMaxValueIncrementer getObject() throws Exception { 040 return MaxValueIncrementerFactory.getIncrementer(dataSource, incrementerName); 041 } 042 043 /** 044 * {@inheritDoc} 045 */ 046 @Override 047 public Class<DataFieldMaxValueIncrementer> getObjectType() { 048 return DataFieldMaxValueIncrementer.class; 049 } 050 051 /** 052 * {@inheritDoc} 053 */ 054 @Override 055 public boolean isSingleton() { 056 return false; 057 } 058 059 /** 060 * {@inheritDoc} 061 */ 062 @Override 063 public void afterPropertiesSet() throws Exception { 064 if (dataSource == null) { 065 throw new IllegalStateException("Property 'dataSource' is required"); 066 } 067 068 if (StringUtils.isBlank(incrementerName)) { 069 throw new IllegalStateException("Property 'incrementerName' is required"); 070 } 071 } 072 073 /** 074 * Gets the {@link DataSource} for which to retrieve the incrementer. 075 * 076 * @return the {@link DataSource} for which to retrieve the incrementer. 077 */ 078 public DataSource getDataSource() { 079 return dataSource; 080 } 081 082 /** 083 * Setter for the {@link DataSource}. 084 * 085 * @param dataSource the {@link DataSource} for which to retrieve the incrementer. 086 */ 087 public void setDataSource(DataSource dataSource) { 088 this.dataSource = dataSource; 089 } 090 091 /** 092 * Gets the name of the incrementer. 093 * 094 * @return the name of the incrementer. 095 */ 096 public String getIncrementerName() { 097 return incrementerName; 098 } 099 100 /** 101 * Setter for the incrementer name. 102 * 103 * @param incrementerName the name of the incrementer. 104 */ 105 public void setIncrementerName(String incrementerName) { 106 this.incrementerName = incrementerName; 107 } 108 }