summaryrefslogtreecommitdiff
path: root/src/main/java/design/persistence
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-10-26 14:42:40 -0400
committersowgro <tpoke.ferrari@gmail.com>2025-10-26 14:42:40 -0400
commitf793ece34e825f9e6e6d84146d0dfc533ae6816b (patch)
tree88d9af0789d14c6a87d0dd022773a95381378fa0 /src/main/java/design/persistence
parent69c58b592cb496cad95165d32ebf99aa52268e5c (diff)
downloaddesignproject-design-6-f793ece34e825f9e6e6d84146d0dfc533ae6816b.tar.gz
designproject-design-6-f793ece34e825f9e6e6d84146d0dfc533ae6816b.tar.bz2
designproject-design-6-f793ece34e825f9e6e6d84146d0dfc533ae6816b.zip
Convert DAOs to proper singleton format
Diffstat (limited to 'src/main/java/design/persistence')
-rw-r--r--src/main/java/design/persistence/CSVMasterDatabase.java24
-rw-r--r--src/main/java/design/persistence/JSONPersonalDatabase.java13
-rw-r--r--src/main/java/design/persistence/MasterDatabase.java5
-rw-r--r--src/main/java/design/persistence/PersonalDatabase.java5
4 files changed, 30 insertions, 17 deletions
diff --git a/src/main/java/design/persistence/CSVMasterDatabase.java b/src/main/java/design/persistence/CSVMasterDatabase.java
index adbf759..f98a08e 100644
--- a/src/main/java/design/persistence/CSVMasterDatabase.java
+++ b/src/main/java/design/persistence/CSVMasterDatabase.java
@@ -20,11 +20,20 @@ import design.model.course_search.*;
public class CSVMasterDatabase implements MasterDatabase {
+ private static CSVMasterDatabase INSTANCE;
+
+ public static synchronized CSVMasterDatabase instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new CSVMasterDatabase("data/golf_courses_1000.csv");
+ }
+ return INSTANCE;
+ }
+
private final List<Course> cache;
private final CsvMapper mapper;
private final File file;
- public CSVMasterDatabase(String filename) {
+ private CSVMasterDatabase(String filename) {
this.cache = new ArrayList<>();
this.mapper = new CsvMapper();
this.file = new File(filename);
@@ -40,7 +49,7 @@ public class CSVMasterDatabase implements MasterDatabase {
}
}
- public void load() throws IOException {
+ private void load() throws IOException {
MappingIterator<Course> it = mapper
.readerFor(Course.class)
.with(CsvSchema.emptySchema().withHeader())
@@ -70,17 +79,6 @@ public class CSVMasterDatabase implements MasterDatabase {
return courses;
}
- public CourseList getCourses(String s) {
- CourseList courses = new CourseList();
- for (Course c : cache)
- {
- if(c.getName().toLowerCase().contains(s.toLowerCase()))
- courses.add(c);
- }
-
- return courses;
- }
-
private static class CourseDeserializer extends JsonDeserializer<Course> {
int curID = 0;
diff --git a/src/main/java/design/persistence/JSONPersonalDatabase.java b/src/main/java/design/persistence/JSONPersonalDatabase.java
index db613d9..70aa1ab 100644
--- a/src/main/java/design/persistence/JSONPersonalDatabase.java
+++ b/src/main/java/design/persistence/JSONPersonalDatabase.java
@@ -23,11 +23,20 @@ import java.util.Map;
public class JSONPersonalDatabase implements PersonalDatabase {
+ private static JSONPersonalDatabase INSTANCE;
+
+ public static JSONPersonalDatabase instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new JSONPersonalDatabase("data/personaldb.json");
+ }
+ return INSTANCE;
+ }
+
private final Map<String, Golfer> cache;
private final ObjectMapper mapper;
private final File file;
- public JSONPersonalDatabase(String filename) {
+ private JSONPersonalDatabase(String filename) {
this.file = new File(filename);
this.cache = new HashMap<>();
this.mapper = new ObjectMapper();
@@ -101,7 +110,7 @@ public class JSONPersonalDatabase implements PersonalDatabase {
}
private static class CourseIdDeserializer extends JsonDeserializer<Course> {
- MasterDatabase masterDB = MasterDatabase.INSTANCE;
+ MasterDatabase masterDB = MasterDatabase.instance();
@Override
public Course deserialize(JsonParser p, DeserializationContext context) throws IOException {
diff --git a/src/main/java/design/persistence/MasterDatabase.java b/src/main/java/design/persistence/MasterDatabase.java
index 3436ee0..59e3ebd 100644
--- a/src/main/java/design/persistence/MasterDatabase.java
+++ b/src/main/java/design/persistence/MasterDatabase.java
@@ -4,7 +4,10 @@ import design.model.Course;
import design.model.course_search.CourseList;
public interface MasterDatabase {
- MasterDatabase INSTANCE = new CSVMasterDatabase("data/golf_courses_1000.csv");
+
+ static MasterDatabase instance() {
+ return CSVMasterDatabase.instance();
+ }
Course[] getCourses();
CourseList getCourseList(); // unique from courses as this is a composite of ICourses.
diff --git a/src/main/java/design/persistence/PersonalDatabase.java b/src/main/java/design/persistence/PersonalDatabase.java
index 428694b..adb865d 100644
--- a/src/main/java/design/persistence/PersonalDatabase.java
+++ b/src/main/java/design/persistence/PersonalDatabase.java
@@ -4,7 +4,10 @@ import design.model.Golfer;
import java.io.IOException;
public interface PersonalDatabase {
- PersonalDatabase INSTANCE = new JSONPersonalDatabase("data/personaldb.json");
+
+ static PersonalDatabase instance() {
+ return JSONPersonalDatabase.instance();
+ }
Golfer[] getGolfers();