summaryrefslogtreecommitdiff
path: root/src/main/java/design/persistence/JSONLeagueDatabase.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/design/persistence/JSONLeagueDatabase.java63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/main/java/design/persistence/JSONLeagueDatabase.java b/src/main/java/design/persistence/JSONLeagueDatabase.java
new file mode 100644
index 0000000..01f4fc3
--- /dev/null
+++ b/src/main/java/design/persistence/JSONLeagueDatabase.java
@@ -0,0 +1,63 @@
+package design.persistence;
+
+import design.model.League;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+public class JSONLeagueDatabase implements LeagueDatabase {
+
+ private static JSONLeagueDatabase INSTANCE;
+
+ public static JSONLeagueDatabase instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new JSONLeagueDatabase("data/leaguedb.json");
+ }
+ return INSTANCE;
+ }
+
+ private final Map<Integer, League> cache;
+ private final File file;
+
+ public JSONLeagueDatabase(String filename) {
+ this.file = new File(filename);
+ this.cache = new HashMap<>();
+ }
+
+ private void load() {
+ //TODO impl
+ }
+
+ private void save() {
+ //TODO impl
+ }
+
+ @Override
+ public League getLeague(int id) {
+ return cache.get(id);
+ }
+
+ @Override
+ public League[] getLeagues() {
+ return cache.values().toArray(League[]::new);
+ }
+
+ @Override
+ public void addLeague(League league) {
+ cache.putIfAbsent(league.getId(), league);
+ save();
+ }
+
+ @Override
+ public void removeLeague(League league) {
+ cache.remove(league.getId());
+ save();
+ }
+
+ @Override
+ public void updateLeague(League league) {
+ cache.put(league.getId(), league);
+ save();
+ }
+}