package de.tud.kom.socom.web.server.database.social; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import de.tud.kom.socom.web.client.sharedmodels.LoginResult; import de.tud.kom.socom.web.server.database.HSQLAccess; public class HSQLSocialDatabaseAccess implements SocialDatabaseAccess { private static SocialDatabaseAccess instance = new HSQLSocialDatabaseAccess(); private static HSQLAccess db; private HSQLSocialDatabaseAccess() { db = HSQLAccess.getInstance(); } public static SocialDatabaseAccess getInstance() { return instance; } @Override public LoginResult getLoginInformationUsingNetworkId(String network, String snuid) throws SQLException { String query = "SELECT " + "uid, name, isadmin, password " + "FROM ((users INNER JOIN usersnaccounts ON usersnaccounts.uid = users.uid) " + "INNER JOIN socialnetworks ON socialnetworks.id = usersnaccounts.snid) " + "WHERE " + "(deleted = 0 OR isadmin) " + "AND UPPER(socialnetworks.name) = UPPER('" + network + "') " + "AND usersnaccounts.username = '" + snuid + "';"; ResultSet rs = db.execQueryWithResult(query); if(!rs.next()) return new LoginResult(false); LoginResult result = new LoginResult(true, rs.getBoolean("isadmin"), rs.getString("name"), rs.getLong("uid"), 0); return result; } @Override public long getAppId(String network, String game) throws SQLException { PreparedStatement statement = db.getPreparedStatement("SELECT appid FROM socialnetworkapps WHERE " + "gameid = (SELECT gameid FROM games WHERE UPPER(name) = UPPER(?)) " + "AND " + "sn = (SELECT id FROM socialnetworks WHERE UPPER(name) = UPPER(?));"); statement.setString(1, game); statement.setString(2, network); System.out.println(statement); ResultSet rs = statement.executeQuery(); rs.next(); //FIXME if false? return rs.getLong(1); } @Override public String getGeneralRedirectUrl(String network, String game) throws SQLException { PreparedStatement statement = db.getPreparedStatement("SELECT general_redirect_url FROM socialnetworkapps WHERE " + "gameid = (SELECT gameid FROM games WHERE UPPER(name) = UPPER(?)) " + "AND " + "sn = (SELECT id FROM socialnetworks WHERE UPPER(name) = UPPER(?));"); statement.setString(1, game); statement.setString(2, network); ResultSet rs = statement.executeQuery(); rs.next(); return rs.getString(1); } @Override public String getAppSecret(String network, String game) throws SQLException { PreparedStatement statement = db.getPreparedStatement("SELECT appsecret FROM socialnetworkapps WHERE " + "gameid = (SELECT gameid FROM games WHERE UPPER(name) = UPPER(?)) " + "AND " + "sn = (SELECT id FROM socialnetworks WHERE UPPER(name) = UPPER(?));"); statement.setString(1, game); statement.setString(2, network); ResultSet rs = statement.executeQuery(); rs.next(); return rs.getString(1); } }