summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/design/controller/userinput/menus/CourseSearch.java4
-rw-r--r--src/main/java/design/controller/userinput/menus/HolePlayMenu.java2
-rw-r--r--src/main/java/design/controller/userinput/menus/ManageClubs.java2
-rw-r--r--src/main/java/design/controller/userinput/menus/ManageCourses.java2
-rw-r--r--src/main/java/design/controller/userinput/menus/SearchMenu.java2
-rw-r--r--src/main/java/design/controller/userinput/menus/SelectUser.java2
-rw-r--r--src/main/java/design/controller/userinput/menus/UserSettings.java2
-rw-r--r--src/main/java/design/model/course_search/CurrentSearchQuery.java11
-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
12 files changed, 47 insertions, 27 deletions
diff --git a/src/main/java/design/controller/userinput/menus/CourseSearch.java b/src/main/java/design/controller/userinput/menus/CourseSearch.java
index 9d67b51..b4f33db 100644
--- a/src/main/java/design/controller/userinput/menus/CourseSearch.java
+++ b/src/main/java/design/controller/userinput/menus/CourseSearch.java
@@ -19,8 +19,8 @@ import java.util.Scanner;
* The actual SEARCH feature of course searching.
*/
public class CourseSearch extends Menu {
- private final CurrentSearchQuery query = CurrentSearchQuery.INSTANCE;
- private final PersonalDatabase personalDB = PersonalDatabase.INSTANCE;
+ private final CurrentSearchQuery query = CurrentSearchQuery.instance();
+ private final PersonalDatabase personalDB = PersonalDatabase.instance();
private final Golfer golfer = Session.getCurrentGolfer();
@Override
diff --git a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
index c824341..e0d1572 100644
--- a/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
+++ b/src/main/java/design/controller/userinput/menus/HolePlayMenu.java
@@ -21,7 +21,7 @@ public class HolePlayMenu extends Menu {
public HolePlayMenu() {
this.round = createRound();
- this.ctx = new HolePlayContext(Session.getCurrentGolfer(), round, PersonalDatabase.INSTANCE);
+ this.ctx = new HolePlayContext(Session.getCurrentGolfer(), round, PersonalDatabase.instance());
}
@Override
diff --git a/src/main/java/design/controller/userinput/menus/ManageClubs.java b/src/main/java/design/controller/userinput/menus/ManageClubs.java
index 6290444..27b011c 100644
--- a/src/main/java/design/controller/userinput/menus/ManageClubs.java
+++ b/src/main/java/design/controller/userinput/menus/ManageClubs.java
@@ -14,7 +14,7 @@ import java.util.Scanner;
public class ManageClubs extends Menu {
private final Golfer golfer = Session.getCurrentGolfer();
- private final PersonalDatabase personalDB = PersonalDatabase.INSTANCE;
+ private final PersonalDatabase personalDB = PersonalDatabase.instance();
@Override
public String getTitle() {
diff --git a/src/main/java/design/controller/userinput/menus/ManageCourses.java b/src/main/java/design/controller/userinput/menus/ManageCourses.java
index 4306560..b592cd2 100644
--- a/src/main/java/design/controller/userinput/menus/ManageCourses.java
+++ b/src/main/java/design/controller/userinput/menus/ManageCourses.java
@@ -12,7 +12,7 @@ import java.util.List;
public class ManageCourses extends Menu {
private final Golfer golfer = Session.getCurrentGolfer();
- private final PersonalDatabase personalDB = PersonalDatabase.INSTANCE;
+ private final PersonalDatabase personalDB = PersonalDatabase.instance();
@Override
public String getTitle() {
diff --git a/src/main/java/design/controller/userinput/menus/SearchMenu.java b/src/main/java/design/controller/userinput/menus/SearchMenu.java
index 72b39ed..6d74eed 100644
--- a/src/main/java/design/controller/userinput/menus/SearchMenu.java
+++ b/src/main/java/design/controller/userinput/menus/SearchMenu.java
@@ -10,7 +10,7 @@ import java.util.List;
* The main control panel for course searching.
*/
public class SearchMenu extends Menu {
- private final CurrentSearchQuery query = CurrentSearchQuery.INSTANCE;
+ private final CurrentSearchQuery query = CurrentSearchQuery.instance();
@Override
public String getTitle() {
diff --git a/src/main/java/design/controller/userinput/menus/SelectUser.java b/src/main/java/design/controller/userinput/menus/SelectUser.java
index e8b3874..4b7928c 100644
--- a/src/main/java/design/controller/userinput/menus/SelectUser.java
+++ b/src/main/java/design/controller/userinput/menus/SelectUser.java
@@ -13,7 +13,7 @@ import java.util.List;
import java.util.Scanner;
public class SelectUser extends Menu {
- private final PersonalDatabase personalDB = PersonalDatabase.INSTANCE;
+ private final PersonalDatabase personalDB = PersonalDatabase.instance();
private final Action doAfter;
private final Scanner scanner = new Scanner(System.in);
diff --git a/src/main/java/design/controller/userinput/menus/UserSettings.java b/src/main/java/design/controller/userinput/menus/UserSettings.java
index 04ec4d0..47b0a5b 100644
--- a/src/main/java/design/controller/userinput/menus/UserSettings.java
+++ b/src/main/java/design/controller/userinput/menus/UserSettings.java
@@ -15,7 +15,7 @@ import java.util.Scanner;
public class UserSettings extends Menu {
private final Golfer golfer = Session.getCurrentGolfer();
- private final PersonalDatabase personalDatabase = PersonalDatabase.INSTANCE;
+ private final PersonalDatabase personalDatabase = PersonalDatabase.instance();
private final Scanner scanner = new Scanner(System.in);
@Override
diff --git a/src/main/java/design/model/course_search/CurrentSearchQuery.java b/src/main/java/design/model/course_search/CurrentSearchQuery.java
index 999dfcb..b302261 100644
--- a/src/main/java/design/model/course_search/CurrentSearchQuery.java
+++ b/src/main/java/design/model/course_search/CurrentSearchQuery.java
@@ -10,10 +10,17 @@ import java.util.stream.Collectors;
* Represents the state of our current search.
*/
public class CurrentSearchQuery {
- public static final CurrentSearchQuery INSTANCE = new CurrentSearchQuery();
+ private static CurrentSearchQuery INSTANCE;
+
+ public static CurrentSearchQuery instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new CurrentSearchQuery();
+ }
+ return INSTANCE;
+ }
// initialize our search with the master db data
- MasterDatabase db = MasterDatabase.INSTANCE;
+ MasterDatabase db = MasterDatabase.instance();
private CourseList query = db.getCourseList();
private final List<CourseSorter> filters = new ArrayList<CourseSorter>();
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();