diff options
| author | sowgro <tpoke.ferrari@gmail.com> | 2025-10-26 14:42:40 -0400 |
|---|---|---|
| committer | sowgro <tpoke.ferrari@gmail.com> | 2025-10-26 14:42:40 -0400 |
| commit | f793ece34e825f9e6e6d84146d0dfc533ae6816b (patch) | |
| tree | 88d9af0789d14c6a87d0dd022773a95381378fa0 /src/main/java/design/persistence | |
| parent | 69c58b592cb496cad95165d32ebf99aa52268e5c (diff) | |
| download | designproject-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')
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(); |
