package com.jenjinstudios.demo.server;
import com.jenjinstudios.server.net.ServerInit;
import com.jenjinstudios.world.server.WorldClientHandler;
import com.jenjinstudios.world.server.WorldServer;
import com.jenjinstudios.world.server.sql.WorldAuthenticator;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Scanner;
/**
* @author Caleb Brinkman
*/
public class Main
{
public static void main(String[] args) throws Exception {
Scanner input = new Scanner(System.in);
WorldServer demoServer;
demoServer = createWorldServer();
demoServer.start();
String readLine = input.nextLine();
while (readLine != null && !"quit".equals(readLine))
{
Thread.sleep(100);
readLine = input.nextLine();
}
demoServer.shutdown();
}
private static WorldServer createWorldServer() throws Exception {
ServerInit serverInit = new ServerInit();
serverInit.setHandlerClass(WorldClientHandler.class);
Connection sqlConnection = createDemoConnection();
WorldAuthenticator worldAuthenticator = new WorldAuthenticator(sqlConnection);
return new WorldServer(serverInit, worldAuthenticator, null);
}
private static Connection createDemoConnection() throws Exception {
Class.forName("org.h2.Driver");
String connectionUrl = "jdbc:h2:mem:jenjin_test";
Connection testConnection = DriverManager.getConnection(connectionUrl, "sa", "");
Statement statement = testConnection.createStatement();
statement.executeUpdate("CREATE TABLE jenjin_users (" +
" `username` VARCHAR(16) NOT NULL," +
" `password` CHAR(64) NOT NULL," +
" `salt` CHAR(48) NOT NULL," +
" `loggedin` TINYINT NOT NULL DEFAULT '0'," +
" PRIMARY KEY (username)" +
")");
statement.executeUpdate("CREATE TABLE jenjin_user_properties (" +
" `username` VARCHAR(64) NOT NULL," +
" `propertyName` VARCHAR(64) NOT NULL," +
" `propertyValue` VARCHAR(64)," +
" PRIMARY KEY (`username`, `propertyName`))");
for (int i = 1; i < 100; i++)
{
statement.executeUpdate(
"INSERT INTO jenjin_users " +
"(`username`, `password`, `salt`, `loggedin`)" +
" VALUES " +
"('TestAccount" + i + "', " +
"'650f00f552d4df0147d236e240ccfc490444f4b358c4ff1d79f5fd90f57243bd', " +
"'e3c42b85a183d3f654a3d2bb3bc5ea607d0fb529d9b890d3', " +
"'0')");
statement.executeUpdate("INSERT INTO jenjin_user_properties (`username`, `propertyName`, " +
"`propertyValue`) " +
"VALUES " +
"('TestAccount" + i + "', 'xCoord', '0'), " +
"('TestAccount" + i + "', 'yCoord', '0'), " +
"('TestAccount" + i + "', 'zoneID', '0') ");
}
return testConnection;
}
}