summaryrefslogtreecommitdiff
path: root/src/main/java/design/persistence
diff options
context:
space:
mode:
authorWillem Dalton <144246261+WillemDalton@users.noreply.github.com>2025-11-05 15:26:56 -0500
committerGitHub <noreply@github.com>2025-11-05 15:26:56 -0500
commit17aba16fbb3272a73b1a1b6b1c459e3597fc066e (patch)
tree01ed290f8b3c524fc033d22fc25c9a6193c8cf10 /src/main/java/design/persistence
parentbac8ea587a6bd569d74a173ea8eeb59b7edc7417 (diff)
parent58d32481c71e5aee7c89dab3afc3b1e3bdb8c074 (diff)
downloaddesignproject-design-6-17aba16fbb3272a73b1a1b6b1c459e3597fc066e.tar.gz
designproject-design-6-17aba16fbb3272a73b1a1b6b1c459e3597fc066e.tar.bz2
designproject-design-6-17aba16fbb3272a73b1a1b6b1c459e3597fc066e.zip
Merge pull request #13 from RIT-SWEN-262/singleton-daos
Singleton daos
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();