Browse Source

Cleaned up SQLDriver to actually use tryConnect()

pull/8/head
Gregory Rudolph 4 years ago
parent
commit
2b0393909d
Signed by: rudi
GPG Key ID: EF64F3CBD1A1EBDD
  1. 88
      src/main/java/MTGClone/SQLDriver.java

88
src/main/java/MTGClone/SQLDriver.java

@ -11,55 +11,62 @@ public class SQLDriver {
try { try {
Class.forName("org.sqlite.JDBC"); Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:cards.db"); c = DriverManager.getConnection("jdbc:sqlite:cards.db");
c.setAutoCommit(false);
} catch (Exception e) { } catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage()); System.err.println(e.getClass().getName() + ": " + e.getMessage());
return false; return false;
} }
return true; return true;
} }
public boolean authenticateUser(String username, String password) { public boolean authenticateUser(String username, String password) {
try { if (!tryConnect()) {
c = DriverManager.getConnection("jdbc:sqlite:cards.db"); return false;
c.setAutoCommit(false); }
String query = "SELECT sha256_pass FROM USERS WHERE email = ?"; try {
PreparedStatement stmt = c.prepareStatement(query);
stmt.setString(1, username); String query = "SELECT sha256_pass FROM USERS WHERE email = ?";
ResultSet rs = stmt.executeQuery(); PreparedStatement stmt = c.prepareStatement(query);
while (rs.next()) { stmt.setString(1, username);
if (rs.getString("sha256_pass").equalsIgnoreCase(sha256(password))) { ResultSet rs = stmt.executeQuery();
return true; while (rs.next()) {
} else { if (rs.getString("sha256_pass").equalsIgnoreCase(sha256(password))) {
System.out.println(rs.getString("sha256_pass") + " not equal to " + sha256(password)); return true;
} } else {
} System.out.println(rs.getString("sha256_pass") + " not equal to " + sha256(password));
} catch (Exception e) { }
System.err.println(e.getClass().getName() + ": " + e.getMessage()); }
} catch (Exception e) {
} System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
return sha256(password).equalsIgnoreCase("c109e7af71c435d32afb75e334e417ddeba82dbde609d4c47f2e3c717057e458"); return sha256(password).equalsIgnoreCase("c109e7af71c435d32afb75e334e417ddeba82dbde609d4c47f2e3c717057e458");
} }
public static String sha256(String base) { public static String sha256(String base) {
try{ try {
MessageDigest digest = MessageDigest.getInstance("SHA-256"); MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(base.getBytes("UTF-8")); byte[] hash = digest.digest(base.getBytes("UTF-8"));
StringBuffer hexString = new StringBuffer(); StringBuffer hexString = new StringBuffer();
for (int i = 0; i < hash.length; i++) { for (int i = 0; i < hash.length; i++) {
String hex = Integer.toHexString(0xff & hash[i]); String hex = Integer.toHexString(0xff & hash[i]);
if(hex.length() == 1) hexString.append('0'); if (hex.length() == 1)
hexString.append('0');
hexString.append(hex); hexString.append(hex);
} }
return hexString.toString(); return hexString.toString();
} catch(Exception ex){ } catch (Exception ex) {
throw new RuntimeException(ex); throw new RuntimeException(ex);
} }
} }
public Card getRandomCard() { public Card getRandomCard() {
if (!tryConnect()) {
return null;
}
try { try {
c = DriverManager.getConnection("jdbc:sqlite:cards.db");
c.setAutoCommit(false);
Statement stmt = c.createStatement(); Statement stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM CARDS ORDER BY RANDOM() LIMIT 1;"); ResultSet rs = stmt.executeQuery("SELECT * FROM CARDS ORDER BY RANDOM() LIMIT 1;");
String cardName = ""; String cardName = "";
@ -95,10 +102,10 @@ public class SQLDriver {
public ArrayList<Card> getAllCards() { public ArrayList<Card> getAllCards() {
ArrayList<Card> topdeck = new ArrayList<Card>(); ArrayList<Card> topdeck = new ArrayList<Card>();
if (!tryConnect()) {
return null;
}
try { try {
c = DriverManager.getConnection("jdbc:sqlite:cards.db");
c.setAutoCommit(false);
Statement stmt = c.createStatement(); Statement stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM CARDS;"); ResultSet rs = stmt.executeQuery("SELECT * FROM CARDS;");
String cardName = ""; String cardName = "";
@ -108,7 +115,7 @@ public class SQLDriver {
String description = ""; String description = "";
String image = ""; String image = "";
String creatureType = ""; String creatureType = "";
while (rs.next()) { while (rs.next()) {
cardName = rs.getString("CARDNAME"); cardName = rs.getString("CARDNAME");
manaCost = rs.getInt("MANACOST"); manaCost = rs.getInt("MANACOST");
@ -123,7 +130,7 @@ public class SQLDriver {
rs.close(); rs.close();
stmt.close(); stmt.close();
c.close(); c.close();
return topdeck; return topdeck;
} catch (Exception e) { } catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage()); System.err.println(e.getClass().getName() + ": " + e.getMessage());
@ -135,14 +142,15 @@ public class SQLDriver {
public boolean insertCard(Card card) { public boolean insertCard(Card card) {
Statement stmt = null; Statement stmt = null;
if (!tryConnect()) {
return false;
}
try { try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:cards.db");
c.setAutoCommit(false); c.setAutoCommit(false);
String baseStmt = "INSERT INTO CARDS (CARDNAME,MANACOST,POWER,TOUGHNESS,DESCRIPTION,IMAGE,CREATURETYPE) VALUES "; String baseStmt = "INSERT INTO CARDS (CARDNAME,MANACOST,POWER,TOUGHNESS,DESCRIPTION,IMAGE,CREATURETYPE) VALUES ";
stmt = c.createStatement(); stmt = c.createStatement();
String sql = "(\'" + card.cardName + "\'," + card.manaCost + "," + card.power + "," + card.toughness + ", \'" String sql = "(\'" + card.cardName + "\'," + card.manaCost + "," + card.power + "," + card.toughness
+ card.description + "\',\'" + card.image + "\',\'" + card.creatureType + "\');"; + ", \'" + card.description + "\',\'" + card.image + "\',\'" + card.creatureType + "\');";
stmt.executeUpdate(baseStmt + sql); stmt.executeUpdate(baseStmt + sql);
stmt.close(); stmt.close();
c.commit(); c.commit();
@ -156,6 +164,9 @@ public class SQLDriver {
} }
public boolean setupCards() { public boolean setupCards() {
if (!tryConnect()) {
return false;
}
ArrayList<Card> topdeck = new ArrayList<Card>(); ArrayList<Card> topdeck = new ArrayList<Card>();
topdeck.add(new Card("Devouring Dragon", 5, 5, 6, "He does to people what Greg does to booty.", "", "Dragon")); topdeck.add(new Card("Devouring Dragon", 5, 5, 6, "He does to people what Greg does to booty.", "", "Dragon"));
topdeck.add(new Card("Dragon Worshipper", 1, 1, 1, "He spends his days praying to dragons.", "", "Human")); topdeck.add(new Card("Dragon Worshipper", 1, 1, 1, "He spends his days praying to dragons.", "", "Human"));
@ -178,9 +189,10 @@ public class SQLDriver {
public boolean setupTable() { public boolean setupTable() {
Statement stmt = null; Statement stmt = null;
if (!tryConnect()) {
return false;
}
try { try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:cards.db");
stmt = c.createStatement(); stmt = c.createStatement();
String sql = "CREATE TABLE CARDS " + "(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," String sql = "CREATE TABLE CARDS " + "(ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
+ " CARDNAME TEXT NOT NULL, " + " MANACOST INT NOT NULL, " + " CARDNAME TEXT NOT NULL, " + " MANACOST INT NOT NULL, "

Loading…
Cancel
Save