summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/database/Database.java72
1 files changed, 49 insertions, 23 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java b/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java
index 8f8286f..ce06244 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java
@@ -23,6 +23,7 @@ import com.google.common.io.ByteStreams;
import net.tylermurphy.hideAndSeek.Main;
import org.sqlite.SQLiteConfig;
+import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -34,46 +35,71 @@ import java.util.UUID;
public class Database {
- private static final File databaseFile = new File(Main.data, "database.db");
+ private final File databaseFile = new File(Main.getInstance().getDataFolder(), "database.db");
+ private final PlayerInfoTable playerInfo;
+ private final SQLiteConfig config;
- public static PlayerInfoTable playerInfo;
- private static SQLiteConfig config;
+ public Database(){
+ try {
+ Class.forName("org.sqlite.JDBC");
+ } catch (ClassNotFoundException e) {
+ Main.getInstance().getLogger().severe(e.getMessage());
+ throw new RuntimeException(e.getMessage());
+ }
- protected static Connection connect() {
+ config = new SQLiteConfig();
+ config.setSynchronous(SQLiteConfig.SynchronousMode.NORMAL);
+ config.setTempStore(SQLiteConfig.TempStore.MEMORY);
+
+ playerInfo = new PlayerInfoTable(this);
+ }
+
+ public PlayerInfoTable getGameData(){
+ return playerInfo;
+ }
+
+ protected Connection connect() {
Connection conn = null;
try {
String url = "jdbc:sqlite:"+databaseFile;
conn = DriverManager.getConnection(url, config.toProperties());
} catch (SQLException e) {
- Main.plugin.getLogger().severe(e.getMessage());
+ Main.getInstance().getLogger().severe(e.getMessage());
e.printStackTrace();
}
return conn;
}
- protected static UUID convertBinaryStream(InputStream stream) {
- ByteBuffer buffer = ByteBuffer.allocate(16);
+ protected byte[] encodeUUID(UUID uuid) {
try {
- buffer.put(ByteStreams.toByteArray(stream));
- buffer.flip();
- return new UUID(buffer.getLong(), buffer.getLong());
- } catch (IOException ignored) {}
- return null;
+ byte[] bytes = new byte[16];
+ ByteBuffer.wrap(bytes)
+ .putLong(uuid.getMostSignificantBits())
+ .putLong(uuid.getLeastSignificantBits());
+ InputStream is = new ByteArrayInputStream(bytes);
+ byte[] result = new byte[is.available()];
+ if (is.read(result) == -1) {
+ Main.getInstance().getLogger().severe("IO Error: Failed to read bytes from input stream");
+ return new byte[0];
+ }
+ return result;
+ } catch (IOException e) {
+ Main.getInstance().getLogger().severe("IO Error: " + e.getMessage());
+ return new byte[0];
+ }
}
- public static void init() {
+ protected UUID decodeUUID(byte[] bytes) {
+ InputStream is = new ByteArrayInputStream(bytes);
+ ByteBuffer buffer = ByteBuffer.allocate(16);
try {
- Class.forName("org.sqlite.JDBC");
- } catch (ClassNotFoundException e) {
- Main.plugin.getLogger().severe(e.getMessage());
- throw new RuntimeException(e.getMessage());
+ buffer.put(ByteStreams.toByteArray(is));
+ buffer.flip();
+ return new UUID(buffer.getLong(), buffer.getLong());
+ } catch (IOException e) {
+ Main.getInstance().getLogger().severe("IO Error: " + e.getMessage());
}
-
- config = new SQLiteConfig();
- config.setSynchronous(SQLiteConfig.SynchronousMode.NORMAL);
- config.setTempStore(SQLiteConfig.TempStore.MEMORY);
-
- playerInfo = new PlayerInfoTable();
+ return null;
}
}