From 6392b6103fcfb6b077199c46d4072129f0f66439 Mon Sep 17 00:00:00 2001 From: Gabriel Copat <copatg@cardiff.ac.uk> Date: Thu, 30 Nov 2023 21:46:37 +0000 Subject: [PATCH] New Classes for Users, Badges and Stickers --- .../java/Team5/SmartTowns/rewards/Badge.java | 51 +++++++++++++++++++ .../Team5/SmartTowns/rewards/Sticker.java | 50 ++++++++++++++++++ .../java/Team5/SmartTowns/users/User.java | 18 +++++++ 3 files changed, 119 insertions(+) create mode 100644 src/main/java/Team5/SmartTowns/rewards/Badge.java create mode 100644 src/main/java/Team5/SmartTowns/rewards/Sticker.java create mode 100644 src/main/java/Team5/SmartTowns/users/User.java diff --git a/src/main/java/Team5/SmartTowns/rewards/Badge.java b/src/main/java/Team5/SmartTowns/rewards/Badge.java new file mode 100644 index 00000000..4b3ea048 --- /dev/null +++ b/src/main/java/Team5/SmartTowns/rewards/Badge.java @@ -0,0 +1,51 @@ +/*AUTHOR: Gabriel Copat*/ +package Team5.SmartTowns.rewards; + +import lombok.Data; + +import java.io.File; +import java.util.Objects; + +@Data +public class Badge { + /* Badges can be earned by completing certain goals. + * They are displayed in the user profile page + * + * For example, one might earn a badge after visiting 20 locations */ + + int id; + String name; + String description; + String imgPath; + int difficulty; //1-5 + + public Badge(int id, String name, String description, int difficulty) { + this.id = id; + this.name = name; + this.description = description; + this.difficulty = difficulty; + imgPath = findImagePath(); + } + + private String findImagePath(){ + /* Finds the image in the Path folder, if image is not found assigns default image */ + String imgPath = "images/rewards/badges/" + id + ".jpg"; + String notFoundPath = "images/rewards/badges/0.jpg"; + + File imgFile = new File("src/main/resources/static/" + imgPath); + return imgFile.exists() ? imgPath : notFoundPath; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Badge badge = (Badge) o; + return id == badge.id && Objects.equals(name, badge.name); + } + + @Override + public int hashCode() { + return Objects.hash(id, name); + } +} diff --git a/src/main/java/Team5/SmartTowns/rewards/Sticker.java b/src/main/java/Team5/SmartTowns/rewards/Sticker.java new file mode 100644 index 00000000..77144e48 --- /dev/null +++ b/src/main/java/Team5/SmartTowns/rewards/Sticker.java @@ -0,0 +1,50 @@ +/*AUTHOR: Gabriel Copat*/ +package Team5.SmartTowns.rewards; + +import lombok.Data; + +import java.io.File; +import java.util.Objects; + +@Data +public class Sticker { + /* Stickers are trade-able rewards, they vary in rarity and are earned at random */ + + int id; + String name; + String description; + String imgPath; + int rarity; //1-5 + + public Sticker(int id, String name, String description, int rarity) { + this.id = id; + this.name = name; + this.description = description; + this.rarity = rarity; + imgPath = findImagePath(); + } + + private String findImagePath(){ + /* Finds the image in the Path folder, if image is not found assigns default image */ + String imgPath = "images/rewards/stickers/" + id + ".jpg"; + String notFoundPath = "images/rewards/stickers/0.jpg"; + + File imgFile = new File("src/main/resources/static/" + imgPath); + return imgFile.exists() ? imgPath : notFoundPath; + } + + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Sticker sticker = (Sticker) o; + return id == sticker.id && Objects.equals(name, sticker.name); + } + + @Override + public int hashCode() { + return Objects.hash(id, name); + } +} + diff --git a/src/main/java/Team5/SmartTowns/users/User.java b/src/main/java/Team5/SmartTowns/users/User.java new file mode 100644 index 00000000..d93b4f8e --- /dev/null +++ b/src/main/java/Team5/SmartTowns/users/User.java @@ -0,0 +1,18 @@ +package Team5.SmartTowns.users; + +import Team5.SmartTowns.rewards.Badge; +import Team5.SmartTowns.rewards.Sticker; + +import java.util.HashMap; +import java.util.Map; + +public class User { + + String email; //Validation would be done by email, since they will have that + + + Map<Badge, Integer> badgeProgress = new HashMap<>(); // Demonstrates the progress towards a specific badge (0-100) + Map<Sticker, Boolean> hasStickers = new HashMap<>(); // True if User has sticker (key) + + +} -- GitLab