package edu.harvard.econcs.turkserver.config;
import com.google.inject.AbstractModule;
import com.google.inject.Scopes;
import edu.harvard.econcs.turkserver.api.ExperimentLog;
import edu.harvard.econcs.turkserver.logging.ExperimentLogImpl;
import edu.harvard.econcs.turkserver.logging.LogController;
import edu.harvard.econcs.turkserver.mturk.HITController;
import edu.harvard.econcs.turkserver.mturk.TurkHITController;
import edu.harvard.econcs.turkserver.server.GroupServer;
import edu.harvard.econcs.turkserver.server.SimpleExperimentServer;
import edu.harvard.econcs.turkserver.server.mysql.ExperimentDataTracker;
import edu.harvard.econcs.turkserver.server.mysql.MySQLDataTracker;
public class ConfigModules {
public static final AbstractModule SINGLE_EXPERIMENTS = new AbstractModule() {
@Override
protected void configure() {
bind(SimpleExperimentServer.class).in(Scopes.SINGLETON);
}
};
public static final AbstractModule GROUP_EXPERIMENTS = new AbstractModule() {
@Override
protected void configure() {
bind(GroupServer.class).in(Scopes.SINGLETON);
}
};
public static final AbstractModule MYSQL_DATABASE = new AbstractModule() {
@Override
protected void configure() {
bind(ExperimentDataTracker.class).to(MySQLDataTracker.class);
}
};
public static final AbstractModule PERSIST_LOGGING = new AbstractModule() {
@Override
protected void configure() {
bind(ExperimentLog.class).to(ExperimentLogImpl.class);
bind(LogController.class).to(ExperimentLogImpl.class);
}
};
public static final AbstractModule CREATE_HITS = new AbstractModule() {
@Override
protected void configure() {
bind(HITController.class).to(TurkHITController.class).in(Scopes.SINGLETON);
}
};
}