package com.shaneisrael.st.utilities.database;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import com.shaneisrael.st.prefs.Preferences;
public class DBUniqueKey
{
private static PreparedStatement statement;
private static Connection connect;
private static ResultSet resultSet;
/**
*
* @param key1
* @param key2
* @return valid
*
* Checks whether or not the currently set keyset is a valid keyset.
*/
public static boolean validate(String key1, String key2)
{
if(key1.equals("") || key2.equals(""))
return true;
connect = DBConnection.getConnection();
boolean valid = true;
try
{
statement = connect.prepareStatement("SELECT key_1, key_2 FROM registered_keys WHERE key_1=? AND key_2=?");
statement.setString(1, key1);
statement.setString(2, key2);
resultSet = statement.executeQuery();
/*If we get a row back, then we know the key already exists.*/
if(resultSet.next())
{
System.out.println("Key Set is valid...");
valid = true;
}
else
{
valid = false;
}
statement.close();
connect.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return valid;
}
/**
*
* @param key1
* @param key2
* @return A keyID unique to that keyset
*
*
*/
public static String getUniqueKeyID(String key1, String key2)
{
try
{
connect = DBConnection.getConnection();
statement = connect.prepareStatement("SELECT id FROM registered_keys WHERE"
+ " key_1=? AND key_2=?");
statement.setString(1, key1);
statement.setString(2, key2);
resultSet = statement.executeQuery();
String id = "0";
/* Get the key id that is linked to their Keyset */
while(resultSet.next())
id = resultSet.getString("id");
connect.close();
statement.close();
resultSet.close();
return id;
} catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return "0";
}
public static boolean isKeysetValid()
{
String key1 = Preferences.getInstance().getUniqueKey1();
String key2 = Preferences.getInstance().getUniqueKey2();
if(validate(key1,key2))
return true;
else
{
Thread t = new Thread(new Runnable(){
@Override
public void run(){
JOptionPane.showMessageDialog(null, "Your Key Set is invalid, please 'validate' your Key Set\n"
+ "in the preferences!", "Invalid Key Set", JOptionPane.WARNING_MESSAGE);
}
});
t.start();
return false;
}
}
/**
*
* @return reserved
*
* A reserved keyset can not be used to return data back to the
* user. These keysets are reserved for other purposes.
*/
public static boolean isKeysetReserved()
{
boolean reserved = false;
String key1 = Preferences.getInstance().getUniqueKey1();
String key2 = Preferences.getInstance().getUniqueKey2();
if(key1.equals("") || key2.equals(""))
return true;
connect = DBConnection.getConnection();
try
{
statement = connect.prepareStatement("SELECT reserved FROM registered_keys WHERE"
+ " key_1=? AND key_2=?");
statement.setString(1, key1);
statement.setString(2, key2);
resultSet = statement.executeQuery();
resultSet.next();
reserved = resultSet.getBoolean("reserved");
connect.close();
statement.close();
resultSet.close();
} catch (SQLException e)
{
e.printStackTrace();
}
return reserved;
}
}