aboutsummaryrefslogtreecommitdiff
path: root/ufund-api/src/main/java/com/ufund/api/ufundapi/service/CupboardService.java
diff options
context:
space:
mode:
authorGunther6070 <haydenhartman10@yahoo.com>2025-03-06 12:45:35 -0500
committerGunther6070 <haydenhartman10@yahoo.com>2025-03-06 12:45:35 -0500
commit4cfacd63b1552bf6ea33e28f3f66e11b75e5756a (patch)
tree0e09c0204373a94ec0d0e9ca6b61e0344a79fbd3 /ufund-api/src/main/java/com/ufund/api/ufundapi/service/CupboardService.java
parent3f015edcf2d03da4b1bbd9c81bbcb3a914428140 (diff)
downloadJellySolutions-4cfacd63b1552bf6ea33e28f3f66e11b75e5756a.tar.gz
JellySolutions-4cfacd63b1552bf6ea33e28f3f66e11b75e5756a.tar.bz2
JellySolutions-4cfacd63b1552bf6ea33e28f3f66e11b75e5756a.zip
Created Cupboard Service and refactored the controller and DAO to add the service as an inbetween with logic
Diffstat (limited to 'ufund-api/src/main/java/com/ufund/api/ufundapi/service/CupboardService.java')
-rw-r--r--ufund-api/src/main/java/com/ufund/api/ufundapi/service/CupboardService.java83
1 files changed, 83 insertions, 0 deletions
diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/service/CupboardService.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/service/CupboardService.java
new file mode 100644
index 0000000..860a2a8
--- /dev/null
+++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/service/CupboardService.java
@@ -0,0 +1,83 @@
+package com.ufund.api.ufundapi.service;
+
+import java.io.IOException;
+import java.util.Arrays;
+
+import com.ufund.api.ufundapi.model.Need;
+import com.ufund.api.ufundapi.persistence.CupboardDAO;
+
+public class CupboardService {
+
+ private final CupboardDAO cupboardDAO;
+
+ public class DuplicateKeyException extends Exception {
+
+ public DuplicateKeyException(String message) {
+ super(message);
+ }
+
+ }
+
+ public CupboardService(CupboardDAO cupboardDAO) {
+ this.cupboardDAO = cupboardDAO;
+ }
+
+ public Need createNeed(String name, int maxGoal, Need.GoalType goalType) throws IOException, DuplicateKeyException {
+
+ Need need = new Need(name, goalType, maxGoal);
+
+ if (need.getMaxGoal() <= 0) {
+ throw new IllegalArgumentException("Max Goal must be greater than zero");
+ } else {
+ for (Need searchNeed : cupboardDAO.getNeeds()) {
+ if (need.getName().equalsIgnoreCase(searchNeed.getName())) {
+ throw new DuplicateKeyException("Duplicate names are not allowed");
+ }
+ }
+ return cupboardDAO.addNeed(need);
+ }
+
+ }
+
+ public Need[] getNeeds() throws IOException {
+ return cupboardDAO.getNeeds();
+ }
+
+ /**
+ * Returns an array of needs filtered by a search
+ *
+ * @param search The search substring
+ * @return The requested array
+ * @throws IOException
+ */
+ public Need[] searchNeeds(String search) throws IOException {
+ return Arrays.stream(cupboardDAO.getNeeds())
+ .filter(i -> i.getName().toLowerCase().contains(search.toLowerCase()))
+ .toArray(Need[]::new);
+ }
+
+ /**
+ * @param id
+ * @return
+ * @throws IOException
+ */
+ public Need getNeed(int id) throws IOException {
+ return cupboardDAO.getNeed(id);
+ }
+
+ /**
+ *
+ * @param need
+ * @return
+ * @throws IOException
+ */
+ public Need updateNeed(Need need) throws IOException {
+ return cupboardDAO.updateNeed(need);
+ }
+
+ public boolean deleteNeed(int id) throws IOException {
+ return cupboardDAO.deleteNeed(id);
+ }
+
+
+}