summaryrefslogtreecommitdiff
path: root/src/main/java/design
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-09-28 00:21:41 -0400
committersowgro <tpoke.ferrari@gmail.com>2025-09-28 00:21:41 -0400
commit42c080c022ddf8f3f3441923e67c150d7df33611 (patch)
treec000d5e98d7b87e2daf5685496442f264731f4f2 /src/main/java/design
parent8a0096b0a9044d550d04d4355b67ba1495b8d5d3 (diff)
downloaddesignproject-design-6-42c080c022ddf8f3f3441923e67c150d7df33611.tar.gz
designproject-design-6-42c080c022ddf8f3f3441923e67c150d7df33611.tar.bz2
designproject-design-6-42c080c022ddf8f3f3441923e67c150d7df33611.zip
Add basic classes for model and persistence interfaces
Diffstat (limited to 'src/main/java/design')
-rw-r--r--src/main/java/design/model/Club.java37
-rw-r--r--src/main/java/design/model/Course.java45
-rw-r--r--src/main/java/design/model/Golfer.java66
-rw-r--r--src/main/java/design/model/Hole.java19
-rw-r--r--src/main/java/design/model/Play.java30
-rw-r--r--src/main/java/design/model/Round.java45
-rw-r--r--src/main/java/design/model/Swing.java19
-rw-r--r--src/main/java/design/persistance/MasterDatabase.java8
-rw-r--r--src/main/java/design/persistance/PersonalDatabase.java11
9 files changed, 280 insertions, 0 deletions
diff --git a/src/main/java/design/model/Club.java b/src/main/java/design/model/Club.java
new file mode 100644
index 0000000..57a43d1
--- /dev/null
+++ b/src/main/java/design/model/Club.java
@@ -0,0 +1,37 @@
+package design.model;
+
+public class Club {
+
+ public enum ClubType {
+ DRIVER,
+ WOOD,
+ IRON,
+ HYBRID,
+ PITCHING_WEDGE,
+ SAND_WEDGE,
+ LOB_WEDGE,
+ PUTTER
+ }
+
+ private final String manufacture;
+ private final String nickname;
+ private final ClubType clubType;
+
+ public Club(String manufacture, String nickname, ClubType clubType) {
+ this.manufacture = manufacture;
+ this.nickname = nickname;
+ this.clubType = clubType;
+ }
+
+ public String getManufacture() {
+ return manufacture;
+ }
+
+ public String getNickname() {
+ return nickname;
+ }
+
+ public ClubType getClubType() {
+ return clubType;
+ }
+}
diff --git a/src/main/java/design/model/Course.java b/src/main/java/design/model/Course.java
new file mode 100644
index 0000000..5f8c43d
--- /dev/null
+++ b/src/main/java/design/model/Course.java
@@ -0,0 +1,45 @@
+package design.model;
+
+import java.util.List;
+
+public class Course {
+ private final String name;
+ private final int difficultyRating;
+ private final String location;
+ private final int holeCount;
+ private final int totalPar;
+ private final List<Hole> holes;
+
+ public Course(String name, int difficultyRating, String location, int holeCount, int totalPar, List<Hole> holes) {
+ this.name = name;
+ this.difficultyRating = difficultyRating;
+ this.location = location;
+ this.holeCount = holeCount;
+ this.totalPar = totalPar;
+ this.holes = holes;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getDifficultyRating() {
+ return difficultyRating;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public int getHoleCount() {
+ return holeCount;
+ }
+
+ public int getTotalPar() {
+ return totalPar;
+ }
+
+ public List<Hole> getHoles() {
+ return holes;
+ }
+}
diff --git a/src/main/java/design/model/Golfer.java b/src/main/java/design/model/Golfer.java
new file mode 100644
index 0000000..8f09067
--- /dev/null
+++ b/src/main/java/design/model/Golfer.java
@@ -0,0 +1,66 @@
+package design.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Golfer {
+ private String username;
+ private int passwordHash;
+ private String fullName;
+ private final transient List<Course> courses; // might be better to make this like a courseID or something
+ private final List<Round> rounds;
+
+ public Golfer(String fullName, String username, String password) {
+ this.courses = new ArrayList<>();
+ this.rounds = new ArrayList<>();
+ this.fullName = fullName;
+ this.username = username;
+ this.passwordHash = password.hashCode();
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getFullName() {
+ return fullName;
+ }
+
+ public void setFullName(String fullName) {
+ this.fullName = fullName;
+ }
+
+ public void setPassword(String password) {
+ this.passwordHash = password.hashCode();
+ }
+
+ public boolean checkPassword(String password) {
+ return passwordHash == password.hashCode();
+ }
+
+ public Course[] getCourses() {
+ return courses.toArray(Course[]::new);
+ }
+
+ public void addCourse(Course course) {
+ courses.add(course);
+ }
+
+ public void removeCourse(Course course) {
+ courses.remove(course);
+ }
+
+ public Round[] getRounds() {
+ return rounds.toArray(Round[]::new);
+ }
+
+ public void addRound(Round round) {
+ rounds.add(round);
+ }
+
+
+}
diff --git a/src/main/java/design/model/Hole.java b/src/main/java/design/model/Hole.java
new file mode 100644
index 0000000..bc9fdb9
--- /dev/null
+++ b/src/main/java/design/model/Hole.java
@@ -0,0 +1,19 @@
+package design.model;
+
+public class Hole {
+ private final int number;
+ private final int par;
+
+ public Hole(int number, int par) {
+ this.number = number;
+ this.par = par;
+ }
+
+ public int getNumber() {
+ return number;
+ }
+
+ public int getPar() {
+ return par;
+ }
+}
diff --git a/src/main/java/design/model/Play.java b/src/main/java/design/model/Play.java
new file mode 100644
index 0000000..b61228b
--- /dev/null
+++ b/src/main/java/design/model/Play.java
@@ -0,0 +1,30 @@
+package design.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Play {
+ private final int distance;
+ private final List<Swing> swings;
+
+ public Play(int distance) {
+ this.swings = new ArrayList<>();
+ this.distance = distance;
+ }
+
+ public int getDistance() {
+ return distance;
+ }
+
+ public void addSwing(Swing swing) {
+ swings.add(swing);
+ }
+
+ public Swing[] getSwings() {
+ return swings.toArray(Swing[]::new);
+ }
+
+ public int getSwingCount() {
+ return swings.size();
+ }
+}
diff --git a/src/main/java/design/model/Round.java b/src/main/java/design/model/Round.java
new file mode 100644
index 0000000..38975da
--- /dev/null
+++ b/src/main/java/design/model/Round.java
@@ -0,0 +1,45 @@
+package design.model;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+public class Round {
+ private final transient Course course;
+ private final LocalDateTime dateTime;
+ private final Hole startingHole;
+ private final List<Play> plays;
+
+ public Round(Course course, LocalDateTime dateTime, Hole startingHole) {
+ this.course = course;
+ this.dateTime = dateTime;
+ this.startingHole = startingHole;
+ plays = new ArrayList<>();
+ }
+
+ public int getTotalSwings() {
+ return plays.stream()
+ .map(Play::getSwingCount)
+ .reduce(0, Integer::sum);
+ }
+
+ public Course getCourse() {
+ return course;
+ }
+
+ public LocalDateTime getDateTime() {
+ return dateTime;
+ }
+
+ public Hole getStartingHole() {
+ return startingHole;
+ }
+
+ public Play[] getPlays() {
+ return plays.toArray(Play[]::new);
+ }
+
+ public void addPlay(Play play) {
+ plays.add(play);
+ }
+}
diff --git a/src/main/java/design/model/Swing.java b/src/main/java/design/model/Swing.java
new file mode 100644
index 0000000..a93b66f
--- /dev/null
+++ b/src/main/java/design/model/Swing.java
@@ -0,0 +1,19 @@
+package design.model;
+
+public class Swing {
+ private final int distance;
+ private final Club clubUsed;
+
+ public Swing(int distance, Club clubUsed) {
+ this.distance = distance;
+ this.clubUsed = clubUsed;
+ }
+
+ public int getDistance() {
+ return distance;
+ }
+
+ public Club getClubUsed() {
+ return clubUsed;
+ }
+}
diff --git a/src/main/java/design/persistance/MasterDatabase.java b/src/main/java/design/persistance/MasterDatabase.java
new file mode 100644
index 0000000..0bbda4b
--- /dev/null
+++ b/src/main/java/design/persistance/MasterDatabase.java
@@ -0,0 +1,8 @@
+package design.persistance;
+
+import design.model.Course;
+
+public interface MasterDatabase {
+ Course[] getCourses();
+ Course getCourse(String name);
+}
diff --git a/src/main/java/design/persistance/PersonalDatabase.java b/src/main/java/design/persistance/PersonalDatabase.java
new file mode 100644
index 0000000..fe934b6
--- /dev/null
+++ b/src/main/java/design/persistance/PersonalDatabase.java
@@ -0,0 +1,11 @@
+package design.persistance;
+
+import design.model.Golfer;
+
+public interface PersonalDatabase {
+ Golfer[] getGolfers();
+ Golfer getGolfer(String name);
+ void addGolfer(Golfer golfer);
+ void removeGolfer(Golfer golfer);
+ void updateGolfer(Golfer golfer);
+}