aboutsummaryrefslogtreecommitdiff
path: root/ufund-api/src/main/java/com/ufund/api/ufundapi/service/UserService.java
diff options
context:
space:
mode:
Diffstat (limited to 'ufund-api/src/main/java/com/ufund/api/ufundapi/service/UserService.java')
-rw-r--r--ufund-api/src/main/java/com/ufund/api/ufundapi/service/UserService.java52
1 files changed, 42 insertions, 10 deletions
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 6af3897..935ee72 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,6 +2,7 @@ package com.ufund.api.ufundapi.service;
import java.io.IOException;
+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;
@@ -11,29 +12,60 @@ public class UserService {
private final UserDAO userDAO;
- /**
- * Create a user controller to receive REST signals
- *
- * @param userDao The Data Access Object
- */
public UserService(UserDAO userDao) {
this.userDAO = userDao;
}
- public User createUser(String username, String password) throws IOException {
+ /**
+ * Creates a new user
+ *
+ * @param username The username of the user
+ * @param password The password of the user
+ * @return The created user object
+ * @throws IOException Thrown on any problem saving the file
+ */
+ public User createUser(String username, String password) throws IOException, DuplicateKeyException {
+ if (userDAO.getUser(username) != null) {
+ throw new DuplicateKeyException("A user with this name already exists");
+ }
User user = User.create(username, password);
return userDAO.addUser(user);
}
- public User getUser(String username) throws IOException, IllegalAccessException {
+ /**
+ * Gets a user with the given username
+ *
+ * @param username The username of the user
+ * @return The user object with that username
+ * @throws IOException If there was any problem saving the file
+ */
+ public User getUser(String username) throws IOException {
return userDAO.getUser(username);
}
- public User updateUser(User user, String name) throws IllegalAccessException, IOException {
- return userDAO.updateUser(user, name);
+ /**
+ * Updates a user
+ *
+ * @param user The ID of the user to update
+ * @param username The user object to set (note: the ID is ignored)
+ * @return The updated user object
+ * @throws IOException Thrown if there was any issue saving the data
+ */
+ public User updateUser(User user, String username) throws IOException {
+ if (!user.getUsername().equals(username)) {
+ throw new IllegalArgumentException("ID in URL and body must match");
+ }
+ return userDAO.updateUser(user);
}
- public Boolean deleteUser(String username) throws IllegalAccessException, IOException {
+ /**
+ * Deletes a user
+ *
+ * @param username The username of the user to delete
+ * @return True if the user was deleted
+ * @throws IOException Thrown if there was any issue saving the data
+ */
+ public boolean deleteUser(String username) throws IOException {
return userDAO.deleteUser(username);
}