package com.revolsys.jdbc.io; import java.util.LinkedHashMap; import java.util.Map; import javax.sql.DataSource; import org.springframework.beans.factory.config.AbstractFactoryBean; public class JdbcRecordStoreFactoryBean extends AbstractFactoryBean<JdbcRecordStore> { private Map<String, Object> config = new LinkedHashMap<>(); private DataSource dataSource; private Map<String, Object> properties = new LinkedHashMap<>(); @Override protected JdbcRecordStore createInstance() throws Exception { JdbcRecordStore recordStore; if (this.dataSource == null) { final JdbcDatabaseFactory databaseFactory = JdbcDatabaseFactory.databaseFactory(this.config); recordStore = databaseFactory.newRecordStore(this.config); } else { final JdbcDatabaseFactory databaseFactory = JdbcDatabaseFactory .databaseFactory(this.dataSource); recordStore = databaseFactory.newRecordStore(this.dataSource); } recordStore.setProperties(this.properties); recordStore.initialize(); return recordStore; } @Override protected void destroyInstance(final JdbcRecordStore recordStore) throws Exception { recordStore.close(); this.config = null; this.dataSource = null; this.properties = null; } public Map<String, Object> getConfig() { return this.config; } public DataSource getDataSource() { return this.dataSource; } @Override public Class<?> getObjectType() { return JdbcRecordStore.class; } public Map<String, Object> getProperties() { return this.properties; } public void setConfig(final Map<String, Object> config) { this.config = config; } public void setDataSource(final DataSource dataSource) { this.dataSource = dataSource; } public void setProperties(final Map<String, Object> properties) { this.properties = properties; } }