package org.cryptocoinpartners.module; import org.cryptocoinpartners.schema.Currency; import org.cryptocoinpartners.schema.Exchange; import org.cryptocoinpartners.schema.Listing; import org.cryptocoinpartners.schema.Market; import org.cryptocoinpartners.schema.Prompt; import org.cryptocoinpartners.util.EM; import org.cryptocoinpartners.util.IoUtil; import com.google.inject.AbstractModule; public class StaticInjectionModule extends AbstractModule { //private static final ThreadLocal<EntityManager> ENTITY_MANAGER_CACHE = new ThreadLocal<EntityManager>(); @Override public void configure() { // @Override //public void configure(Binder binder) { // int retryCount = ConfigUtil.combined().getInt("db.persist.retry"); // Properties properties = new Properties(); // //Map<String, String> properties = new HashMap<String, String>(); // // retryCount = ConfigUtil.combined().getInt("db.persist.retry"); // // properties.put("hibernate.hbm2ddl.auto", "update"); // properties.put("hibernate.connection.driver_class", ConfigUtil.combined().getString("db.driver")); // properties.put("hibernate.dialect", ConfigUtil.combined().getString("db.dialect")); // properties.put("hibernate.connection.url", ConfigUtil.combined().getString("db.url")); // properties.put("hibernate.connection.username", ConfigUtil.combined().getString("db.username")); // properties.put("hibernate.connection.password", ConfigUtil.combined().getString("db.password")); // properties.put("hibernate.ejb.naming_strategy", "org.hibernate.cfg.ImprovedNamingStrategy"); // properties.put("hibernate.connection.autocommit", "true"); // properties.put("hibernate.connection.autocommit", "true"); // properties.put("hibernate.connection.release_mode", "auto"); // properties.put("hibernate.connection.provider_class", "org.hibernate.connection.C3P0ConnectionProvider"); // properties.put("hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory"); // properties.put("hibernate.cache.use_second_level_cache", "true"); // properties.put("hibernate.cache.use_query_cache", "true"); // properties.put("hibernate.c3p0.min_size", "10"); // properties.put("hibernate.c3p0.max_size", ConfigUtil.combined().getString("db.pool.size")); // properties.put("hibernate.c3p0.acquire_increment", ConfigUtil.combined().getString("db.pool.growth")); // properties.put("show_sql", "true"); // properties.put("format_sql", "true"); // properties.put("use_sql_comments", "true"); // // properties.put("hibernate.c3p0.debugUnreturnedConnectionStackTraces", "true"); // // properties.put("hibernate.c3p0.unreturnedConnectionTimeout", "120"); // // properties.put("hibernate.c3p0.idle_test_period", ConfigUtil.combined().getString("db.idle.test.period")); // // properties.put("hibernate.c3p0.max_statements", "0"); // // properties.put("hibernate.c3p0.maxIdleTimeExcessConnections", "2"); // // properties.put("hibernate.c3p0.timeout", "300"); // //properties.put("hibernate.c3p0.checkoutTimeout", "500"); // properties.put("hibernate.c3p0.preferredTestQuery", "SELECT 1 from exchange"); // // properties.put("hibernate.c3p0.maxConnectionAge", ConfigUtil.combined().getString("db.max.connection.age")); // final String testConnection = ConfigUtil.combined().getString("db.test.connection"); // properties.put("hibernate.c3p0.testConnectionOnCheckin", testConnection); // properties.put("hibernate.c3p0.acquireRetryDelay", "1000"); // properties.put("hibernate.c3p0.acquireRetryAttempts", "0"); // properties.put("hibernate.c3p0.breakAfterAcquireFailure", "false"); // properties.put("hibernate.c3p0.checkoutTimeout", "10000"); // properties.put("hibernate.c3p0.idleConnectionTestPeriod", "100"); // // properties.put("javax.persistence.sharedCache.mode", "ENABLE_SELECTIVE"); // // JpaPersistModule jpa = new JpaPersistModule("org.cryptocoinpartners.schema"); // jpa.properties(properties); // jpa.configure(binder()); requestStaticInjection(Market.class); requestStaticInjection(Exchange.class); requestStaticInjection(Listing.class); requestStaticInjection(Prompt.class); requestStaticInjection(Currency.class); // requestStaticInjection(FeesUtil.class); // requestStaticInjection(Portfolio.class); //requestStaticInjection(Transaction.class); //requestStaticInjection(Fill.class); //requestStaticInjection(OrderUpdate.class); requestStaticInjection(EM.class); // requestStaticInjection(Market.class); // requestStaticInjection(Exchange.class); //requestStaticInjection(Listing.class); // requestStaticInjection(Prompt.class); // requestStaticInjection(Currency.class); // requestStaticInjection(Replay.class); // requestStaticInjection(Book.class); //requestStaticInjection(Trade.class); // requestStaticInjection(Bar.class); // requestStaticInjection(SaveMarketData.class); requestStaticInjection(IoUtil.class); // requestStaticInjection(Portfolio.class); //requestStaticInjection(Transaction.class); // requestStaticInjection(Fill.class); //requestStaticInjection(OrderUpdate.class); // install(new FactoryModuleBuilder().build(GeneralOrderFactory.class)); //install(new FactoryModuleBuilder().build(SpecificOrderFactory.class)); // bind(SpecificOrderFactory.class).to(SpecificOrderFactory.class); // .build(SpecificOrderFactory.class)); // install(new FactoryModuleBuilder().implement(Serializable.class, GeneralOrder.class).build(GeneralOrderFactory.class)); } // @Provides // @Singleton // public EntityManagerFactory provideEntityManagerFactory() { // // // createMode = "update"; // return Persistence.createEntityManagerFactory("org.cryptocoinpartners.schema", properties); // } // @Provides // public EntityManager provideEntityManager(EntityManagerFactory entityManagerFactory) { // // EntityManager entityManager = ENTITY_MANAGER_CACHE.get(); // //if (entityManager == null) { // // ENTITY_MANAGER_CACHE.set(entityManager = entityManagerFactory.createEntityManager()); // // } // // return entityManager; // } }