From 0b41684e57c79374aee3a564307cd4fdef603e7c Mon Sep 17 00:00:00 2001 From: Akash Keshav <112591754+domesticchores@users.noreply.github.com> Date: Tue, 18 Mar 2025 11:41:04 -0400 Subject: THE UPDATE USER WORKS! -ak --- .../api/ufundapi/controller/UserController.java | 9 +++++---- .../java/com/ufund/api/ufundapi/model/User.java | 4 ++++ .../api/ufundapi/persistence/UserFileDAO.java | 22 ++++++++++++++++++++-- 3 files changed, 29 insertions(+), 6 deletions(-) (limited to 'ufund-api/src/main/java/com') diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java index adf17a1..024bfc9 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java @@ -102,8 +102,9 @@ public class UserController { */ @PutMapping("/{username}") public ResponseEntity updateUser(@RequestBody User user, @PathVariable String username, @RequestHeader("jelly-api-key") String key) { + System.out.println("controller: " + user + " " + username + " " + key.toString()); try { - authService.authenticate(username, key); + //authService.authenticate(username, key); user = userService.updateUser(user, username); if (user != null) { return new ResponseEntity<>(user, HttpStatus.OK); @@ -114,9 +115,9 @@ public class UserController { return new ResponseEntity<>(HttpStatus.BAD_REQUEST); } catch (IOException e) { return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); - } catch (IllegalAccessException e) { - return new ResponseEntity<>(HttpStatus.UNAUTHORIZED); - } + } //catch (IllegalAccessException e) { + // return new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + // } } /** diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java index 1c1d474..d697057 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java @@ -71,4 +71,8 @@ public class User { this.passwordHash = other.passwordHash; } + public String toString() { + return this.username + "; basket: " + this.basket + "; type:" + this.type + "; hash: " + this.passwordHash; + } + } diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java index f809aac..f8357e4 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java @@ -2,6 +2,7 @@ package com.ufund.api.ufundapi.persistence; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -9,7 +10,9 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import com.fasterxml.jackson.databind.ObjectMapper; +import com.ufund.api.ufundapi.model.Need; import com.ufund.api.ufundapi.model.User; +import com.ufund.api.ufundapi.model.User.UserType; @Component public class UserFileDAO implements UserDAO { @@ -81,9 +84,24 @@ public class UserFileDAO implements UserDAO { public User updateUser(User user) throws IOException { synchronized (users) { if (users.containsKey(user.getUsername())) { - var old = users.put(user.getUsername(), user); - user.copyPassword(old); + System.out.println("in the dao " + user); + // var old = users.put(user.getUsername(), user); + // user.copyPassword(old); + System.out.println("basket needs: " + user.getBasketNeeds() + "type :" + user.getType()); + if (user.getBasketNeeds() == null || user.getType() == null) { + System.out.println("USING CRUTCH"); + User oldData = users.get(user.getUsername()); + User crutch = new User(oldData.getUsername(), 0, new ArrayList(), oldData.getType()); + crutch.copyPassword(oldData); + users.put(user.getUsername(), crutch); + } else { + System.out.println("GOOD DATA"); + var old = users.put(user.getUsername(), user); + user.copyPassword(old); + } save(); + System.out.println("end of dao " + user); + System.out.println("updated user with: " + users.get(user.getUsername())); return user; } else { return null; -- cgit v1.2.3 From c135f56c7b2d0d283ea279fa7934929fb2e09aa3 Mon Sep 17 00:00:00 2001 From: Gunther6070 Date: Tue, 18 Mar 2025 13:35:09 -0400 Subject: Modified status codes to properly display error messages on creation and updating of needs --- .../java/com/ufund/api/ufundapi/controller/CupboardController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ufund-api/src/main/java/com') diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java index 9592490..6356fd9 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java @@ -17,10 +17,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import com.ufund.api.ufundapi.DuplicateKeyException; import com.ufund.api.ufundapi.model.Need; import com.ufund.api.ufundapi.model.Need.GoalType; import com.ufund.api.ufundapi.service.CupboardService; -import com.ufund.api.ufundapi.DuplicateKeyException; @RestController @RequestMapping("cupboard") @@ -59,7 +59,7 @@ public class CupboardController { } catch (DuplicateKeyException ex) { return new ResponseEntity<>(HttpStatus.CONFLICT); } catch (IllegalArgumentException ex) { - return new ResponseEntity<>(HttpStatus.UNPROCESSABLE_ENTITY); + return new ResponseEntity<>(HttpStatus.BAD_REQUEST); } catch (IOException ex) { return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } -- cgit v1.2.3 From ac33cc6884c0d3b3e112e6dde6154aa123016d93 Mon Sep 17 00:00:00 2001 From: Gunther6070 Date: Tue, 18 Mar 2025 13:37:55 -0400 Subject: Removed debugging comments --- .../main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java | 8 -------- 1 file changed, 8 deletions(-) (limited to 'ufund-api/src/main/java/com') diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java index f8357e4..def21c6 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java @@ -10,9 +10,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import com.fasterxml.jackson.databind.ObjectMapper; -import com.ufund.api.ufundapi.model.Need; import com.ufund.api.ufundapi.model.User; -import com.ufund.api.ufundapi.model.User.UserType; @Component public class UserFileDAO implements UserDAO { @@ -84,24 +82,18 @@ public class UserFileDAO implements UserDAO { public User updateUser(User user) throws IOException { synchronized (users) { if (users.containsKey(user.getUsername())) { - System.out.println("in the dao " + user); // var old = users.put(user.getUsername(), user); // user.copyPassword(old); - System.out.println("basket needs: " + user.getBasketNeeds() + "type :" + user.getType()); if (user.getBasketNeeds() == null || user.getType() == null) { - System.out.println("USING CRUTCH"); User oldData = users.get(user.getUsername()); User crutch = new User(oldData.getUsername(), 0, new ArrayList(), oldData.getType()); crutch.copyPassword(oldData); users.put(user.getUsername(), crutch); } else { - System.out.println("GOOD DATA"); var old = users.put(user.getUsername(), user); user.copyPassword(old); } save(); - System.out.println("end of dao " + user); - System.out.println("updated user with: " + users.get(user.getUsername())); return user; } else { return null; -- cgit v1.2.3 From 4173924032e8b2cd532a13640cd0cf56e5aaf2be Mon Sep 17 00:00:00 2001 From: Gunther6070 Date: Tue, 18 Mar 2025 15:32:14 -0400 Subject: Refactored removeBasketNeed method --- ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ufund-api/src/main/java/com') diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java index d697057..13000cc 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java @@ -55,8 +55,8 @@ public class User { return basket.toArray(Integer[]::new); } - public void removeBasketNeed(Need need) { - basket.remove(need.getId()); + public boolean removeBasketNeed(Integer needID) { + return basket.remove(needID); } public User withoutPasswordHash() { -- cgit v1.2.3 From 97cbd320abe7c13cbfdc1c649be96f2a4e24200a Mon Sep 17 00:00:00 2001 From: Gunther6070 Date: Tue, 18 Mar 2025 15:33:09 -0400 Subject: Added check to getUser to remove deleted needs in basket --- .../java/com/ufund/api/ufundapi/service/UserService.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'ufund-api/src/main/java/com') diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/service/UserService.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/service/UserService.java index 935ee72..3b59953 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/service/UserService.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/service/UserService.java @@ -2,18 +2,21 @@ package com.ufund.api.ufundapi.service; import java.io.IOException; +import org.springframework.stereotype.Component; + import com.ufund.api.ufundapi.DuplicateKeyException; import com.ufund.api.ufundapi.model.User; import com.ufund.api.ufundapi.persistence.UserDAO; -import org.springframework.stereotype.Component; @Component public class UserService { private final UserDAO userDAO; + private final CupboardService cupboardService; - public UserService(UserDAO userDao) { + public UserService(UserDAO userDao, CupboardService cupboardService) { this.userDAO = userDao; + this.cupboardService = cupboardService; } /** @@ -40,6 +43,12 @@ public class UserService { * @throws IOException If there was any problem saving the file */ public User getUser(String username) throws IOException { + User user = userDAO.getUser(username); + for (int needId : user.getBasketNeeds()) { + if (cupboardService.getNeed(needId) == null) { + user.removeBasketNeed(needId); + } + } return userDAO.getUser(username); } -- cgit v1.2.3 From cd9dfcec9e7ae9fe6f08b61927b16cf76b8bcef7 Mon Sep 17 00:00:00 2001 From: Akash Keshav <112591754+domesticchores@users.noreply.github.com> Date: Tue, 18 Mar 2025 15:49:08 -0400 Subject: debug of checkout. -ak --- .../main/java/com/ufund/api/ufundapi/controller/CupboardController.java | 1 + .../main/java/com/ufund/api/ufundapi/persistence/CupboardFileDAO.java | 1 + 2 files changed, 2 insertions(+) (limited to 'ufund-api/src/main/java/com') diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java index 6356fd9..3c310df 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java @@ -144,6 +144,7 @@ public class CupboardController { */ @PutMapping("/{id}") public ResponseEntity updateNeed(@RequestBody Need need, @PathVariable int id) { + LOG.log(Level.INFO, "RAHHHHH " + need); try { Need updatedNeed = cupboardService.updateNeed(need, id); if (updatedNeed != null) { diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/CupboardFileDAO.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/CupboardFileDAO.java index 521acae..a51d307 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/CupboardFileDAO.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/CupboardFileDAO.java @@ -100,6 +100,7 @@ public class CupboardFileDAO implements CupboardDAO { @Override public Need updateNeed(Need need) throws IOException { + System.out.println("UPDATING NEED FOR " + need); synchronized (needs) { if (needs.containsKey(need.getId())) { needs.put(need.getId(), need); -- cgit v1.2.3 From 53cc8e1cf75468c9d270443627ee8f71db57ea59 Mon Sep 17 00:00:00 2001 From: Gunther6070 Date: Tue, 18 Mar 2025 16:02:02 -0400 Subject: Fixed error in cupboard controller where the maxgoal was an integer and not a double --- .../main/java/com/ufund/api/ufundapi/controller/CupboardController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ufund-api/src/main/java/com') diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java index 6356fd9..253b3f7 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java @@ -50,7 +50,7 @@ public class CupboardController { public ResponseEntity createNeed(@RequestBody Map params) { System.out.println(params); String name = (String) params.get("name"); - int maxGoal = (int) params.get("maxGoal"); + double maxGoal = (double) params.get("maxGoal"); Need.GoalType goalType = GoalType.valueOf((String) params.get("type")); try { -- cgit v1.2.3 From 81b93fc671ba35d67c414937e18b686fd6d5f861 Mon Sep 17 00:00:00 2001 From: Akash Keshav <112591754+domesticchores@users.noreply.github.com> Date: Tue, 18 Mar 2025 16:53:39 -0400 Subject: idk but it works. funding basket worsk. -ak --- .../java/com/ufund/api/ufundapi/controller/CupboardController.java | 2 +- .../main/java/com/ufund/api/ufundapi/controller/UserController.java | 2 +- ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java | 2 +- .../java/com/ufund/api/ufundapi/persistence/CupboardFileDAO.java | 1 - .../main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java | 5 ++++- .../src/main/java/com/ufund/api/ufundapi/service/UserService.java | 2 +- 6 files changed, 8 insertions(+), 6 deletions(-) (limited to 'ufund-api/src/main/java/com') diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java index 3c310df..bf3d917 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/CupboardController.java @@ -144,7 +144,7 @@ public class CupboardController { */ @PutMapping("/{id}") public ResponseEntity updateNeed(@RequestBody Need need, @PathVariable int id) { - LOG.log(Level.INFO, "RAHHHHH " + need); + LOG.log(Level.INFO, "Updating need: " + need); try { Need updatedNeed = cupboardService.updateNeed(need, id); if (updatedNeed != null) { diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java index 024bfc9..a16fdec 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java @@ -102,7 +102,7 @@ public class UserController { */ @PutMapping("/{username}") public ResponseEntity updateUser(@RequestBody User user, @PathVariable String username, @RequestHeader("jelly-api-key") String key) { - System.out.println("controller: " + user + " " + username + " " + key.toString()); + LOG.log(Level.INFO,"PUT: " + user + " " + username + " " + key.toString()); try { //authService.authenticate(username, key); user = userService.updateUser(user, username); diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java index 13000cc..6de1a8a 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java @@ -51,7 +51,7 @@ public class User { basket.add(need.getId()); } - public Integer[] getBasketNeeds() { + public Integer[] getNeeds() { return basket.toArray(Integer[]::new); } diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/CupboardFileDAO.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/CupboardFileDAO.java index a51d307..521acae 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/CupboardFileDAO.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/CupboardFileDAO.java @@ -100,7 +100,6 @@ public class CupboardFileDAO implements CupboardDAO { @Override public Need updateNeed(Need need) throws IOException { - System.out.println("UPDATING NEED FOR " + need); synchronized (needs) { if (needs.containsKey(need.getId())) { needs.put(need.getId(), need); diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java index def21c6..ee7dbcf 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java @@ -80,16 +80,19 @@ public class UserFileDAO implements UserDAO { @Override public User updateUser(User user) throws IOException { + System.out.println("HOW TO FORK AND KILL CHILD " + user); synchronized (users) { if (users.containsKey(user.getUsername())) { // var old = users.put(user.getUsername(), user); // user.copyPassword(old); - if (user.getBasketNeeds() == null || user.getType() == null) { + if (user.getNeeds() == null || user.getType() == null) { + System.out.println("CRUTCH DATA"); User oldData = users.get(user.getUsername()); User crutch = new User(oldData.getUsername(), 0, new ArrayList(), oldData.getType()); crutch.copyPassword(oldData); users.put(user.getUsername(), crutch); } else { + System.out.println("GOOD DATA"); var old = users.put(user.getUsername(), user); user.copyPassword(old); } diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/service/UserService.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/service/UserService.java index 3b59953..caf9f4c 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/service/UserService.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/service/UserService.java @@ -44,7 +44,7 @@ public class UserService { */ public User getUser(String username) throws IOException { User user = userDAO.getUser(username); - for (int needId : user.getBasketNeeds()) { + for (int needId : user.getNeeds()) { if (cupboardService.getNeed(needId) == null) { user.removeBasketNeed(needId); } -- cgit v1.2.3 From 872a87879c83c9dd7548528fd9f9f29246dbd433 Mon Sep 17 00:00:00 2001 From: Gunther6070 Date: Tue, 18 Mar 2025 17:08:16 -0400 Subject: Uncommented authentication calls --- .../java/com/ufund/api/ufundapi/controller/UserController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'ufund-api/src/main/java/com') diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java index a16fdec..fd6a960 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/controller/UserController.java @@ -104,7 +104,7 @@ public class UserController { public ResponseEntity updateUser(@RequestBody User user, @PathVariable String username, @RequestHeader("jelly-api-key") String key) { LOG.log(Level.INFO,"PUT: " + user + " " + username + " " + key.toString()); try { - //authService.authenticate(username, key); + authService.authenticate(username, key); user = userService.updateUser(user, username); if (user != null) { return new ResponseEntity<>(user, HttpStatus.OK); @@ -115,9 +115,9 @@ public class UserController { return new ResponseEntity<>(HttpStatus.BAD_REQUEST); } catch (IOException e) { return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); - } //catch (IllegalAccessException e) { - // return new ResponseEntity<>(HttpStatus.UNAUTHORIZED); - // } + } catch (IllegalAccessException e) { + return new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + } } /** -- cgit v1.2.3 From 0268894e5b80c908d2c3eb5c2228ee22fde52904 Mon Sep 17 00:00:00 2001 From: Akash Keshav <112591754+domesticchores@users.noreply.github.com> Date: Tue, 18 Mar 2025 17:10:10 -0400 Subject: cleaned up outputs. -ak --- .../src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java | 3 --- 1 file changed, 3 deletions(-) (limited to 'ufund-api/src/main/java/com') diff --git a/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java b/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java index ee7dbcf..6e900aa 100644 --- a/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/persistence/UserFileDAO.java @@ -80,19 +80,16 @@ public class UserFileDAO implements UserDAO { @Override public User updateUser(User user) throws IOException { - System.out.println("HOW TO FORK AND KILL CHILD " + user); synchronized (users) { if (users.containsKey(user.getUsername())) { // var old = users.put(user.getUsername(), user); // user.copyPassword(old); if (user.getNeeds() == null || user.getType() == null) { - System.out.println("CRUTCH DATA"); User oldData = users.get(user.getUsername()); User crutch = new User(oldData.getUsername(), 0, new ArrayList(), oldData.getType()); crutch.copyPassword(oldData); users.put(user.getUsername(), crutch); } else { - System.out.println("GOOD DATA"); var old = users.put(user.getUsername(), user); user.copyPassword(old); } -- cgit v1.2.3