Commit 5cca4c3f authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

move datastore provider to module

parent dacaaf6c
package com.telephoners.krakyournet.ctf.modules; package com.telephoners.krakyournet.ctf.modules;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.name.Named;
import com.telephoners.krakyournet.ctf.core.ApplicationConfiguration; import com.telephoners.krakyournet.ctf.core.ApplicationConfiguration;
import com.telephoners.krakyournet.ctf.providers.DatastoreProvider; import org.ektorp.CouchDbConnector;
import org.mongodb.morphia.Datastore; import org.ektorp.CouchDbInstance;
import org.ektorp.http.HttpClient;
import org.ektorp.http.StdHttpClient;
import org.ektorp.impl.StdCouchDbConnector;
import org.ektorp.impl.StdCouchDbInstance;
import java.net.MalformedURLException;
public class ApplicationModule extends AbstractModule public class ApplicationModule extends AbstractModule
{ {
...@@ -18,6 +26,31 @@ public class ApplicationModule extends AbstractModule ...@@ -18,6 +26,31 @@ public class ApplicationModule extends AbstractModule
protected void configure() protected void configure()
{ {
bind(ApplicationConfiguration.class).toInstance(applicationConfiguration); bind(ApplicationConfiguration.class).toInstance(applicationConfiguration);
bind(Datastore.class).toInstance(new DatastoreProvider(applicationConfiguration).getDatastore());
} }
@Provides
public CouchDbConnector provideDatastore(@Named("database.instance") CouchDbInstance databaseInstance)
{
final StdCouchDbConnector database = new StdCouchDbConnector("database", databaseInstance); //todo: to configuration
database.createDatabaseIfNotExists();
//todo: as task while application start (configurable)
return database;
}
@Provides
@Named("database.instance")
public CouchDbInstance provideDatabaseInstance(@Named("database.http.client") final HttpClient httpClient)
{
return new StdCouchDbInstance(httpClient);
}
@Provides
@Named("database.http.client")
public HttpClient provideDatabaseHttpClient() throws MalformedURLException
{
return new StdHttpClient.Builder()
.url("http://localhost:5984") //todo: to configuration
.build();
}
} }
package com.telephoners.krakyournet.ctf.providers;
import com.telephoners.krakyournet.ctf.core.ApplicationConfiguration;
import org.ektorp.CouchDbConnector;
import org.ektorp.CouchDbInstance;
import org.ektorp.http.HttpClient;
import org.ektorp.http.StdHttpClient;
import org.ektorp.impl.StdCouchDbConnector;
import org.ektorp.impl.StdCouchDbInstance;
import javax.inject.Inject;
import java.net.MalformedURLException;
//todo: move to module @Provides
public class DatastoreProvider
{
private final ApplicationConfiguration applicationConfiguration;
@Inject
public DatastoreProvider(ApplicationConfiguration applicationConfiguration)
{
this.applicationConfiguration = applicationConfiguration;
}
public CouchDbConnector getDatastore() throws MalformedURLException
{
final HttpClient httpClient = new StdHttpClient.Builder()
.url("http://localhost:5984") //todo: to configuartion
.build();
final CouchDbInstance dbInstance = new StdCouchDbInstance(httpClient);
CouchDbConnector datastore = new StdCouchDbConnector("mydatabase", dbInstance); //todo: to configuration
//todo: if setup enabled
datastore.createDatabaseIfNotExists();
return datastore;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment