package codeine;
import java.util.List;
import org.apache.log4j.Logger;
import codeine.db.mysql.MysqlDatabaseSchemaManagement;
import codeine.db.mysql.MysqlHostSelector;
import codeine.db.mysql.MysqlProcessControlService;
import codeine.executer.PeriodicExecuter;
import codeine.jsons.global.GlobalConfigurationJsonStore;
import codeine.jsons.global.MysqlConfigurationJson;
import codeine.jsons.peer_status.PeersProjectsStatus;
import codeine.jsons.peer_status.PeersProjectsStatusInDirectory;
import codeine.peers_status.OldPeersRemove;
import codeine.servlets.CodeineDirectoryServletModule;
import com.google.common.collect.Lists;
import com.google.inject.Injector;
import com.google.inject.Module;
public class CodeineDirectoryBootstrap extends AbstractCodeineBootstrap
{
private static final Logger log = Logger.getLogger(CodeineDirectoryBootstrap.class);
public CodeineDirectoryBootstrap(Injector injector) {
super(injector);
}
public CodeineDirectoryBootstrap() {
}
public static void main(String[] args)
{
boot(Component.DIRECTORY, CodeineDirectoryBootstrap.class);
}
@Override
protected List<Module> getGuiceModules() {
return Lists.<Module>newArrayList(new CodeineDirectoryModule(), new CodeineDirectoryServletModule());
}
@Override
protected void execute() throws Exception {
log.info("starting mysql");
MysqlConfigurationJson conf = injector().getInstance(MysqlHostSelector.class).mysql();
if (conf.managed_by_codeine()) {
injector().getInstance(MysqlProcessControlService.class).execute();
}
injector().getInstance(MysqlDatabaseSchemaManagement.class).initDatabase();
new PeriodicExecuter(OldPeersRemove.INTERVAL ,injector().getInstance(OldPeersRemove.class)).runInThread();
//new PeriodicExecuter(PeersProjectsStatusInDirectory.SLEEP_TIME ,injector().getInstance(PeersProjectsStatus.class)).runInThread();
}
@Override
public int getHttpPort() {
return injector().getInstance(GlobalConfigurationJsonStore.class).get().directory_port();
}
}