package com.codecademy.eventhub; import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.google.inject.name.Names; import com.codecademy.eventhub.index.DatedEventIndex; import com.codecademy.eventhub.index.PropertiesIndex; import com.codecademy.eventhub.index.ShardedEventIndex; import com.codecademy.eventhub.index.UserEventIndex; import com.codecademy.eventhub.storage.BloomFilteredEventStorage; import com.codecademy.eventhub.storage.BloomFilteredUserStorage; import javax.inject.Named; import java.io.File; import java.util.Properties; public class EventHubModule extends AbstractModule { private final Properties properties; public EventHubModule(Properties properties) { this.properties = properties; } @Override protected void configure() { Names.bindProperties(super.binder(), properties); new File(properties.getProperty("eventhub.directory")).mkdirs(); } @Provides public EventHub getEventHub( @Named("eventhub.directory") String directory, ShardedEventIndex shardedEventIndex, DatedEventIndex datedEventIndex, PropertiesIndex propertiesIndex, UserEventIndex userEventIndex, BloomFilteredEventStorage eventStorage, BloomFilteredUserStorage userStorage) { return new EventHub(directory, shardedEventIndex, datedEventIndex, propertiesIndex, userEventIndex, eventStorage, userStorage); } }