Description
DOCUMENT ME!
License
Open Source License
Parameter
Parameter | Description |
---|
host | DOCUMENT ME! |
Exception
Parameter | Description |
---|
SQLException | DOCUMENT ME! |
Return
null if user is not authenticated
Declaration
public static String getUserFromHost(String host) throws SQLException
Method Source Code
//package com.java2s;
/**// w ww .j a va 2 s. c o m
* Java Settlers - An online multiplayer version of the game Settlers of Catan
* Copyright (C) 2003 Robert S. Thomas
* Portions of this file Copyright (C) 2009-2010,2012 Jeremy D Monin <jeremy@nand.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* The author of this program can be reached at thomas@infolab.northwestern.edu
**/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Main {
private static Connection connection = null;
/**
* Retain the URL (default, or passed via props to {@link #initialize(String, String, Properties)}).
* @since 1.1.09
*/
private static String dbURL = null;
/**
* 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.
*/
private static boolean errorCondition = false;
/** Cached username used when reconnecting on error */
private static String userName;
/** Cached password used when reconnecting on error */
private static String password;
private static String CREATE_ACCOUNT_COMMAND = "INSERT INTO users VALUES (?,?,?,?,?);";
private static String RECORD_LOGIN_COMMAND = "INSERT INTO logins VALUES (?,?,?);";
private static String USER_PASSWORD_QUERY = "SELECT password FROM users WHERE ( users.nickname = ? );";
private static String HOST_QUERY = "SELECT nickname FROM users WHERE ( users.host = ? );";
private static String LASTLOGIN_UPDATE = "UPDATE users SET lastlogin = ? WHERE nickname = ? ;";
private static String SAVE_GAME_COMMAND = "INSERT INTO games VALUES (?,?,?,?,?,?,?,?,?,?);";
private static String ROBOT_PARAMS_QUERY = "SELECT * FROM robotparams WHERE robotname = ?;";
private static PreparedStatement createAccountCommand = null;
private static PreparedStatement recordLoginCommand = null;
private static PreparedStatement userPasswordQuery = null;
private static PreparedStatement hostQuery = null;
private static PreparedStatement lastloginUpdate = null;
private static PreparedStatement saveGameCommand = null;
private static PreparedStatement robotParamsQuery = null;
/**
* DOCUMENT ME!
*
* @param host DOCUMENT ME!
*
* @return null if user is not authenticated
*
* @throws SQLException DOCUMENT ME!
*/
public static String getUserFromHost(String host) throws SQLException {
String nickname = null;
// ensure that the JDBC connection is still valid
if (checkConnection()) {
try {
// fill in the data values to the Prepared statement
hostQuery.setString(1, host);
// execute the Query
ResultSet resultSet = hostQuery.executeQuery();
// if no results, user is not authenticated
if (resultSet.next()) {
nickname = resultSet.getString(1);
}
resultSet.close();
} catch (SQLException sqlE) {
errorCondition = true;
sqlE.printStackTrace();
throw sqlE;
}
}
return nickname;
}
/**
* 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.
*
* @return true if the connection is established upon return
*/
private static boolean checkConnection() throws SQLException {
if (connection != null) {
return (!errorCondition) || connect(userName, password);
}
return false;
}
/**
* initialize and checkConnection use this to get ready.
*/
private static boolean connect(String user, String pswd)
throws SQLException {
connection = DriverManager.getConnection(dbURL, user, pswd);
errorCondition = false;
userName = user;
password = pswd;
// prepare PreparedStatements for queries
createAccountCommand = connection
.prepareStatement(CREATE_ACCOUNT_COMMAND);
recordLoginCommand = connection
.prepareStatement(RECORD_LOGIN_COMMAND);
userPasswordQuery = connection
.prepareStatement(USER_PASSWORD_QUERY);
hostQuery = connection.prepareStatement(HOST_QUERY);
lastloginUpdate = connection.prepareStatement(LASTLOGIN_UPDATE);
saveGameCommand = connection.prepareStatement(SAVE_GAME_COMMAND);
robotParamsQuery = connection.prepareStatement(ROBOT_PARAMS_QUERY);
return true;
}
}
Related
- createRedshiftTable(String redshiftURL, Properties loginProperties, String tableName, List fields)
- checkConnection()
- checkConnection()
- getRow(String username, String password, String url, String driver, String query, String[] params)
- getUserFace(String sUserName)
- query(String sql, Object... args)
- queryForList(String sql, Object... args)