diff options
Diffstat (limited to '')
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/database/Database.java | 72 |
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; } } |