diff --git a/src/main/java/team5/smartTowns/rewards/Badge.java b/src/main/java/team5/smartTowns/rewards/Badge.java index d1ecc486cda13e68c4f8b977c664a48c4d31276f..871cfbf3656d58d09e410fb7354465f528db5555 100644 --- a/src/main/java/team5/smartTowns/rewards/Badge.java +++ b/src/main/java/team5/smartTowns/rewards/Badge.java @@ -1,51 +1,27 @@ /*AUTHOR: Gabriel Copat*/ package team5.smartTowns.rewards; -import lombok.Data; +import lombok.Getter; import java.io.File; -import java.util.Objects; -@Data -public class Badge { +@Getter +public class Badge extends Reward { /* 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 */ + static final String DEFAULT_IMAGE = "0.png"; - 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; + super(id, name, 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.png"; - - 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); + public String getImgFolder() { + return "badges"; } } diff --git a/src/main/java/team5/smartTowns/rewards/Reward.java b/src/main/java/team5/smartTowns/rewards/Reward.java new file mode 100644 index 0000000000000000000000000000000000000000..215c1e42ed8db50dfba9edab0490ca4ee0a1ad4d --- /dev/null +++ b/src/main/java/team5/smartTowns/rewards/Reward.java @@ -0,0 +1,39 @@ +package team5.smartTowns.rewards; + +import lombok.Getter; + +import java.io.File; + +@Getter +public abstract class Reward { + /* Abstract class for all rewards */ + + int id; + String displayImg; //Path to the image file + String name; + String description; + + public Reward(int id, String name, String description) { + //Default constructor + this.id = id; + this.name = name; + this.description = description; + displayImg = findImagePath(); + } + + public abstract String getImgFolder(); + /*Returns folder in which images are located*/ + + public String getDefaultImg(){ + /*Returns the name of the default image to be used in case no image is found*/ + return "0.png"; + }; + public String findImagePath(){ + /* Finds the image in the Path folder, if image is not found assigns default image */ + String imgPath = "images/rewards/" + getImgFolder() + "/" + id + ".jpg"; + String notFoundPath = "images/rewards/" + getImgFolder() + "/" + getDefaultImg(); + + File imgFile = new File("src/main/resources/static/" + imgPath); + return imgFile.exists() ? imgPath : notFoundPath; + } +} diff --git a/src/main/java/team5/smartTowns/rewards/RewardsController.java b/src/main/java/team5/smartTowns/rewards/RewardsController.java deleted file mode 100644 index b8e81b56823effa22da3e433144933fe8e469b62..0000000000000000000000000000000000000000 --- a/src/main/java/team5/smartTowns/rewards/RewardsController.java +++ /dev/null @@ -1,7 +0,0 @@ -package team5.smartTowns.rewards; - -import org.springframework.stereotype.Controller; - -@Controller -public class RewardsController { -} diff --git a/src/main/java/team5/smartTowns/rewards/Sticker.java b/src/main/java/team5/smartTowns/rewards/Sticker.java index fe067dbfeea38c6c6b13174a253d1af5846ffd2c..a80a02de4c2df53f75120828d5aeff371aa8dd7a 100644 --- a/src/main/java/team5/smartTowns/rewards/Sticker.java +++ b/src/main/java/team5/smartTowns/rewards/Sticker.java @@ -2,36 +2,27 @@ package team5.smartTowns.rewards; import lombok.Data; +import lombok.Getter; 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 */ +@Getter +public class Sticker extends Reward{ + /* Stickers are randomly earned rewards from a specific pack */ - int id; - String name; - String description; - String imgPath; int rarity; //1-5 boolean hasSticker; + String pack; - public Sticker(int id, String name, String description, int rarity) { - this.id = id; - this.name = name; - this.description = description; + public Sticker(int id, String name, String description, int rarity, String pack) { + super(id, name, 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.png"; - - File imgFile = new File("src/main/resources/static/" + imgPath); - return imgFile.exists() ? imgPath : notFoundPath; + @Override + public String getImgFolder() { + return "stickers"; } public boolean hasSticker(){ @@ -43,19 +34,5 @@ public class Sticker { public String getVisibility(){ return hasSticker? "" : "grayedOut"; } - - - @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/rewards/BadgesRepository.java b/src/main/java/team5/smartTowns/rewards/data/BadgesRepository.java similarity index 62% rename from src/main/java/team5/smartTowns/rewards/BadgesRepository.java rename to src/main/java/team5/smartTowns/rewards/data/BadgesRepository.java index f3dcccdefbba85e6a568c41865df00ce98d01faf..5b83f8ca9a9eb1544f6c52de79366100d0c05174 100644 --- a/src/main/java/team5/smartTowns/rewards/BadgesRepository.java +++ b/src/main/java/team5/smartTowns/rewards/data/BadgesRepository.java @@ -1,5 +1,7 @@ //Holds locations data repository -package team5.smartTowns.rewards; +package Team5.SmartTowns.rewards.data; + +import Team5.SmartTowns.rewards.Badge; import java.util.List; diff --git a/src/main/java/team5/smartTowns/rewards/BadgesRepositoryJDBC.java b/src/main/java/team5/smartTowns/rewards/data/BadgesRepositoryJDBC.java similarity index 91% rename from src/main/java/team5/smartTowns/rewards/BadgesRepositoryJDBC.java rename to src/main/java/team5/smartTowns/rewards/data/BadgesRepositoryJDBC.java index a0f62669c1826465b0f6f9d544734edd78bdaf8a..107e6b70ee08adb4634110906f7a9c6fa6a79c42 100644 --- a/src/main/java/team5/smartTowns/rewards/BadgesRepositoryJDBC.java +++ b/src/main/java/team5/smartTowns/rewards/data/BadgesRepositoryJDBC.java @@ -1,6 +1,7 @@ //Implements the locations repository using JDBC -package team5.smartTowns.rewards; +package Team5.SmartTowns.rewards.data; +import Team5.SmartTowns.rewards.Badge; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Repository; diff --git a/src/main/java/team5/smartTowns/rewards/StickersRepository.java b/src/main/java/team5/smartTowns/rewards/data/StickersRepository.java similarity index 62% rename from src/main/java/team5/smartTowns/rewards/StickersRepository.java rename to src/main/java/team5/smartTowns/rewards/data/StickersRepository.java index 41e12aefbed04545fc6860db291f30421712f410..5aeda42b6685ddc474c29093966eb29b8f3fec4a 100644 --- a/src/main/java/team5/smartTowns/rewards/StickersRepository.java +++ b/src/main/java/team5/smartTowns/rewards/data/StickersRepository.java @@ -1,5 +1,7 @@ //Holds locations data repository -package team5.smartTowns.rewards; +package Team5.SmartTowns.rewards.data; + +import Team5.SmartTowns.rewards.Sticker; import java.util.List; diff --git a/src/main/java/team5/smartTowns/rewards/StickersRepositoryJDBC.java b/src/main/java/team5/smartTowns/rewards/data/StickersRepositoryJDBC.java similarity index 85% rename from src/main/java/team5/smartTowns/rewards/StickersRepositoryJDBC.java rename to src/main/java/team5/smartTowns/rewards/data/StickersRepositoryJDBC.java index 8789c6db38840cefc1a9029154428ecd2858b9af..9e014ec20750d35ae8dd158270b32018e22412fe 100644 --- a/src/main/java/team5/smartTowns/rewards/StickersRepositoryJDBC.java +++ b/src/main/java/team5/smartTowns/rewards/data/StickersRepositoryJDBC.java @@ -1,6 +1,7 @@ //Implements the locations repository using JDBC -package team5.smartTowns.rewards; +package Team5.SmartTowns.rewards.data; +import Team5.SmartTowns.rewards.Sticker; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Repository; @@ -21,7 +22,8 @@ public class StickersRepositoryJDBC implements StickersRepository { rs.getInt("stickerID"), rs.getString("name"), rs.getString("description"), - rs.getInt("rarity") + rs.getInt("rarity"), + rs.getString("pack") ); }