package me.gnat008.perworldinventory.data; import ch.jalu.injector.Injector; import me.gnat008.perworldinventory.ConsoleLogger; import javax.inject.Inject; import javax.inject.Provider; /** * Creates the data source */ public class DataSourceProvider implements Provider<DataSource> { @Inject private Injector injector; DataSourceProvider() {} @Override public DataSource get() { try { return createDataSource(); } catch (Exception ex) { ConsoleLogger.severe("Unable to create data source:", ex); throw new IllegalStateException("Error during initialization of data source", ex); } } private DataSource createDataSource() { DataSourceType type = DataSourceType.FLATFILE; DataSource dataSource; switch(type) { case FLATFILE: dataSource = injector.getSingleton(FlatFile.class); break; default: throw new UnsupportedOperationException("Unknown data source type '" + type + "'"); } return dataSource; } }