soc.server.database
Class SOCDBHelper

java.lang.Object
  extended bysoc.server.database.SOCDBHelper

public class SOCDBHelper
extends java.lang.Object

This code assumes that you're using mySQL as your database. It uses a database created with the following commands: CREATE DATABASE socdata; USE socdata; CREATE TABLE users (nickname VARCHAR(20), host VARCHAR(50), password VARCHAR(20), email VARCHAR(50), lastlogin DATE); CREATE TABLE logins (nickname VARCHAR(20), host VARCHAR(50), lastlogin DATE); CREATE TABLE games (gamename VARCHAR(20), player1 VARCHAR(20), player2 VARCHAR(20), player3 VARCHAR(20), player4 VARCHAR(20), score1 TINYINT, score2 TINYINT, score3 TINYINT, score4 TINYINT, starttime TIMESTAMP); CREATE TABLE robotparams (robotname VARCHAR(20), maxgamelength INT, maxeta INT, etabonusfactor FLOAT, adversarialfactor FLOAT, leaderadversarialfactor FLOAT, devcardmultiplier FLOAT, threatmultiplier FLOAT, strategytype INT, starttime TIMESTAMP, endtime TIMESTAMP, gameswon INT, gameslost INT, tradeFlag BOOL);


Field Summary
private static java.sql.Connection connection
           
private static java.lang.String CREATE_ACCOUNT_COMMAND
           
private static java.sql.PreparedStatement createAccountCommand
           
private static boolean errorCondition
          This flag indicates that the connection should be valid, yet the last operation failed.
private static java.lang.String HOST_QUERY
           
private static java.sql.PreparedStatement hostQuery
           
private static java.lang.String LASTLOGIN_UPDATE
           
private static java.sql.PreparedStatement lastloginUpdate
           
private static java.lang.String password
          Cached password used when reconnecting on error
private static java.lang.String RECORD_LOGIN_COMMAND
           
private static java.sql.PreparedStatement recordLoginCommand
           
private static java.lang.String ROBOT_PARAMS_QUERY
           
private static java.sql.PreparedStatement robotParamsQuery
           
private static java.lang.String SAVE_GAME_COMMAND
           
private static java.sql.PreparedStatement saveGameCommand
           
private static java.lang.String USER_PASSWORD_QUERY
           
private static java.lang.String userName
          Cached username used when reconnecting on error
private static java.sql.PreparedStatement userPasswordQuery
           
 
Constructor Summary
SOCDBHelper()
           
 
Method Summary
private static boolean checkConnection()
          Checks if connection is supposed to be present and attempts to reconnect if there was previously an error.
static void cleanup()
          DOCUMENT ME!
private static boolean connect(java.lang.String user, java.lang.String pswd)
          initialize and checkConnection use this to get ready.
static boolean createAccount(java.lang.String userName, java.lang.String host, java.lang.String password, java.lang.String email, long time)
          DOCUMENT ME!
private static void dispResultSet(java.sql.ResultSet rs)
           
static java.lang.String getUserFromHost(java.lang.String host)
          DOCUMENT ME!
static java.lang.String getUserPassword(java.lang.String sUserName)
          DOCUMENT ME!
static void initialize(java.lang.String user, java.lang.String pswd)
          This makes a connection to the database and initializes the prepared statements.
static boolean recordLogin(java.lang.String userName, java.lang.String host, long time)
          DOCUMENT ME!
static SOCRobotParameters retrieveRobotParams(java.lang.String robotName)
          DOCUMENT ME!
static boolean saveGameScores(java.lang.String gameName, java.lang.String player1, java.lang.String player2, java.lang.String player3, java.lang.String player4, short score1, short score2, short score3, short score4, java.util.Date startTime)
          DOCUMENT ME!
static boolean updateLastlogin(java.lang.String userName, long time)
          DOCUMENT ME!
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

connection

private static java.sql.Connection connection

errorCondition

private static boolean errorCondition
This flag indicates that the connection should be valid, yet the last operation failed. Methods will attempt to reconnect prior to their operation if this is set.


userName

private static java.lang.String userName
Cached username used when reconnecting on error


password

private static java.lang.String password
Cached password used when reconnecting on error


CREATE_ACCOUNT_COMMAND

private static java.lang.String CREATE_ACCOUNT_COMMAND

RECORD_LOGIN_COMMAND

private static java.lang.String RECORD_LOGIN_COMMAND

USER_PASSWORD_QUERY

private static java.lang.String USER_PASSWORD_QUERY

HOST_QUERY

private static java.lang.String HOST_QUERY

LASTLOGIN_UPDATE

private static java.lang.String LASTLOGIN_UPDATE

SAVE_GAME_COMMAND

private static java.lang.String SAVE_GAME_COMMAND

ROBOT_PARAMS_QUERY

private static java.lang.String ROBOT_PARAMS_QUERY

createAccountCommand

private static java.sql.PreparedStatement createAccountCommand

recordLoginCommand

private static java.sql.PreparedStatement recordLoginCommand

userPasswordQuery

private static java.sql.PreparedStatement userPasswordQuery

hostQuery

private static java.sql.PreparedStatement hostQuery

lastloginUpdate

private static java.sql.PreparedStatement lastloginUpdate

saveGameCommand

private static java.sql.PreparedStatement saveGameCommand

robotParamsQuery

private static java.sql.PreparedStatement robotParamsQuery
Constructor Detail

SOCDBHelper

public SOCDBHelper()
Method Detail

initialize

public static void initialize(java.lang.String user,
                              java.lang.String pswd)
                       throws java.sql.SQLException
This makes a connection to the database and initializes the prepared statements.

Parameters:
user - the user name for accessing the database
pswd - the password for the user
Returns:
true if the database was initialized
Throws:
java.sql.SQLException - if an SQL command fails, or the db couldn't be initialied

checkConnection

private static boolean checkConnection()
                                throws java.sql.SQLException
Checks if connection is supposed to be present and attempts to reconnect if there was previously an error. Reconnecting closes the current conection, opens a new one, and re-initializes the prepared statements.

Returns:
true if the connection is established upon return
Throws:
java.sql.SQLException

connect

private static boolean connect(java.lang.String user,
                               java.lang.String pswd)
                        throws java.sql.SQLException
initialize and checkConnection use this to get ready.

Throws:
java.sql.SQLException

getUserPassword

public static java.lang.String getUserPassword(java.lang.String sUserName)
                                        throws java.sql.SQLException
DOCUMENT ME!

Parameters:
sUserName - DOCUMENT ME!
Returns:
null if user account doesn't exist
Throws:
java.sql.SQLException - DOCUMENT ME!

getUserFromHost

public static java.lang.String getUserFromHost(java.lang.String host)
                                        throws java.sql.SQLException
DOCUMENT ME!

Parameters:
host - DOCUMENT ME!
Returns:
null if user is not authenticated
Throws:
java.sql.SQLException - DOCUMENT ME!

createAccount

public static boolean createAccount(java.lang.String userName,
                                    java.lang.String host,
                                    java.lang.String password,
                                    java.lang.String email,
                                    long time)
                             throws java.sql.SQLException
DOCUMENT ME!

Parameters:
userName - DOCUMENT ME!
host - DOCUMENT ME!
password - DOCUMENT ME!
email - DOCUMENT ME!
time - DOCUMENT ME!
Returns:
true if the account was created
Throws:
java.sql.SQLException - DOCUMENT ME!

recordLogin

public static boolean recordLogin(java.lang.String userName,
                                  java.lang.String host,
                                  long time)
                           throws java.sql.SQLException
DOCUMENT ME!

Parameters:
userName - DOCUMENT ME!
host - DOCUMENT ME!
time - DOCUMENT ME!
Returns:
true if the login was recorded
Throws:
java.sql.SQLException - DOCUMENT ME!

updateLastlogin

public static boolean updateLastlogin(java.lang.String userName,
                                      long time)
                               throws java.sql.SQLException
DOCUMENT ME!

Parameters:
userName - DOCUMENT ME!
time - DOCUMENT ME!
Returns:
true if the save succeeded
Throws:
java.sql.SQLException - DOCUMENT ME!

saveGameScores

public static boolean saveGameScores(java.lang.String gameName,
                                     java.lang.String player1,
                                     java.lang.String player2,
                                     java.lang.String player3,
                                     java.lang.String player4,
                                     short score1,
                                     short score2,
                                     short score3,
                                     short score4,
                                     java.util.Date startTime)
                              throws java.sql.SQLException
DOCUMENT ME!

Parameters:
gameName - DOCUMENT ME!
player1 - DOCUMENT ME!
player2 - DOCUMENT ME!
player3 - DOCUMENT ME!
player4 - DOCUMENT ME!
score1 - DOCUMENT ME!
score2 - DOCUMENT ME!
score3 - DOCUMENT ME!
score4 - DOCUMENT ME!
startTime - DOCUMENT ME!
Returns:
true if the save succeeded
Throws:
java.sql.SQLException - DOCUMENT ME!

retrieveRobotParams

public static SOCRobotParameters retrieveRobotParams(java.lang.String robotName)
                                              throws java.sql.SQLException
DOCUMENT ME!

Parameters:
robotName - DOCUMENT ME!
Returns:
null if robotName not in database
Throws:
java.sql.SQLException - DOCUMENT ME!

cleanup

public static void cleanup()
                    throws java.sql.SQLException
DOCUMENT ME!

Throws:
java.sql.SQLException

dispResultSet

private static void dispResultSet(java.sql.ResultSet rs)
                           throws java.sql.SQLException
Throws:
java.sql.SQLException