From 2bf41d6d126e730e08d3458b661de2838ef389b0 Mon Sep 17 00:00:00 2001 From: Gregory Rudolph Date: Thu, 15 Oct 2020 09:09:50 -0400 Subject: [PATCH] Add handle to SQL for server or SQLite for client. --- .gitignore | 3 ++- src/main/java/MTGClone/SQLDriver.java | 37 ++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 63da651..e327033 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ manifest.txt *.jar target/ .DS_Store -cards.db \ No newline at end of file +cards.db +database.properties diff --git a/src/main/java/MTGClone/SQLDriver.java b/src/main/java/MTGClone/SQLDriver.java index ecb280a..7a951f3 100644 --- a/src/main/java/MTGClone/SQLDriver.java +++ b/src/main/java/MTGClone/SQLDriver.java @@ -1,5 +1,6 @@ package MTGClone; +import java.io.FileInputStream; import java.security.MessageDigest; import java.sql.*; import java.util.*; @@ -8,13 +9,36 @@ public class SQLDriver { protected Connection c = null; public boolean tryConnect() { - try { - Class.forName("org.sqlite.JDBC"); - c = DriverManager.getConnection("jdbc:sqlite:cards.db"); - c.setAutoCommit(false); - } catch (Exception e) { - System.err.println(e.getClass().getName() + ": " + e.getMessage()); + // Get the current stacktrace + StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace(); + // Get the caller of that called Deck, not SQLDriver + StackTraceElement ste = stacktrace[3]; + // If it's a controller, we're running in servlet + boolean isServer = ste.getClassName().contains("MTGClone.controller"); + if (isServer) { + System.out.println("Server detected!"); + try { + Class.forName("com.mysql.jdbc.Driver"); + FileInputStream input = new FileInputStream("database.properties"); + Properties props = new Properties(); + props.load(input ); + c = DriverManager.getConnection(props.getProperty("DB_URL"),props.getProperty("DB_USERNAME"),props.getProperty("DB_PASSWORD")); + c.setAutoCommit(false); + } catch (Exception e) { + System.err.println(e.getClass().getName() + ": " + e.getMessage()); + return false; + } + return false; + } else { + try { + Class.forName("org.sqlite.JDBC"); + c = DriverManager.getConnection("jdbc:sqlite:cards.db"); + c.setAutoCommit(false); + } catch (Exception e) { + System.err.println(e.getClass().getName() + ": " + e.getMessage()); + return false; + } } return true; } @@ -201,6 +225,7 @@ public class SQLDriver { + " CREATURETYPE TEXT NOT NULL)"; stmt.executeUpdate(sql); stmt.close(); + c.commit(); c.close(); if (!setupCards()) { System.exit(-1);