package com.ufund.api.ufundapi.model; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonProperty; public class User { @JsonProperty("username") private final String username; @JsonProperty("passwordHash") private int passwordHash; @JsonProperty("basket") private final List basket; /** * Create a new user * * @param username The name of the user */ public User(String username) { this.username = username; basket = new ArrayList<>(); } /** * Create a new user * * @param username The name of the user * @param basket A basket to copy from */ public User(@JsonProperty("username") String username, @JsonProperty("passwordHash") int passwordHash, @JsonProperty("basket") List basket) { this.username = username; this.basket = basket; this.passwordHash = passwordHash; } public static User create(String username, String password) { return new User( username, password.hashCode(), new ArrayList<>() ); } public String getUsername() { return username; } 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); } public User withoutPasswordHash() { return new User(this.username, 0, this.basket); } }