package tv.dyndns.kishibe.qmaclone.server.util;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.dbutils.QueryRunner;
import tv.dyndns.kishibe.qmaclone.client.packet.PacketProblem;
import tv.dyndns.kishibe.qmaclone.client.packet.PacketUserData;
import tv.dyndns.kishibe.qmaclone.server.QMACloneModule;
import tv.dyndns.kishibe.qmaclone.server.database.Database;
import tv.dyndns.kishibe.qmaclone.server.database.DatabaseException;
import tv.dyndns.kishibe.qmaclone.server.database.ProblemProcessable;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
public class CreationLogUpdater {
private static final Logger logger = Logger.getLogger(CreationLogUpdater.class.toString());
private final Database database;
private final QueryRunner runner;
@Inject
public CreationLogUpdater(Database database, QueryRunner queryRunner) {
this.database = Preconditions.checkNotNull(database);
this.runner = Preconditions.checkNotNull(queryRunner);
}
private void run() {
final PacketUserData userData = new PacketUserData();
userData.userCode = 123456789;
userData.playerName = "QMAClone";
try {
database.setUserData(userData);
final List<Object[]> params = Lists.newArrayList();
System.out.println("Parsing problems");
database.processProblems(new ProblemProcessable() {
@Override
public void process(PacketProblem problem) throws Exception {
params.add(new Object[] { problem.id, userData.userCode,
new Timestamp(System.currentTimeMillis()), "kishibe.dyndns.tv",
problem.toChangeSummary() });
}
});
System.out.println("Inserting creation logs");
runner
.batch(
"INSERT INTO creation_log (PROBLEM_ID, USER_CODE, DATE, MACHINE_IP, SUMMARY) VALUES (?, ?, ?, ?, ?)",
params.toArray(new Object[0][]));
} catch (DatabaseException | SQLException e) {
logger.log(Level.WARNING, "問題更新ログの更新に失敗しました", e);
}
}
public static void main(String[] args) {
Injector injector = Guice.createInjector(new QMACloneModule());
CreationLogUpdater updater = injector.getInstance(CreationLogUpdater.class);
updater.run();
}
}