diff options
Diffstat (limited to 'ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java')
-rw-r--r-- | ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java | 68 |
1 files changed, 68 insertions, 0 deletions
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 new file mode 100644 index 0000000..0a61714 --- /dev/null +++ b/ufund-api/src/main/java/com/ufund/api/ufundapi/model/User.java @@ -0,0 +1,68 @@ +package com.ufund.api.ufundapi.model; + +import java.util.ArrayList; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class User { + + @JsonProperty("name") + private final String name; + @JsonProperty("passwordHash") + private int passwordHash; + @JsonProperty("basket") + private final List<Need> basket; + + /** + * Create a new user + * + * @param name The name of the user + */ + public User(@JsonProperty("name") String name) { + this.name = name; + basket = new ArrayList<>(); + } + + /** + * Create a new user + * + * @param name The name of the user + * @param basket A basket to copy from + */ + public User(@JsonProperty("name") String name, @JsonProperty("basket") List<Need> basket) { + this.name = name; + this.basket = basket; + } + + /** + * Create a deep copy of another user + * + * @param other The user to copy from + */ + public User(User other) { + this.name = other.name; + this.basket = other.basket; + } + + public String getName() { + return name; + } + + public boolean verifyPassword(String password) { + return password.hashCode() == passwordHash; + } + + public void addToBasket(Need need) { + basket.add(need); + } + + public Need[] getBasketNeeds() { + return basket.toArray(Need[]::new); + } + + public void removeBasketNeed(Need need) { + basket.remove(need); + } + +} |