package com.ufund.api.ufundapi.model; import com.fasterxml.jackson.annotation.JsonProperty; public class Need { public enum GoalType { MONETARY, PHYSICAL } @JsonProperty("name") private String name; @JsonProperty("id") private int id; @JsonProperty("filterAttributes") private String[] filterAttributes; @JsonProperty("type") final private GoalType type; @JsonProperty("maxGoal") private double maxGoal; @JsonProperty("current") private double current; /** * Create a new need, used by the controller * * @param name The name of the need * @param id The unique ID of the need * @param maxGoal The maximum goal for this need * @param type The type of need (monetary, physical) */ public Need(@JsonProperty("name") String name, @JsonProperty("id") int id, @JsonProperty("maxGoal") double maxGoal, @JsonProperty("type") GoalType type) { this.id = id; this.name = name; this.maxGoal = maxGoal; this.type = type; } /** * Create a new need * * @param name The name of the need * @param maxGoal The maximum goal for this need * @param type The type of need (monetary, physical) */ public Need(String name, GoalType type, double maxGoal) { this.name = name; this.type = type; this.maxGoal = maxGoal; } /** * Create a deep copy of another need * * @param other The need to copy from */ public Need(Need other) { this.name = other.name; this.id = other.id; this.filterAttributes = other.filterAttributes; this.type = other.type; this.maxGoal = other.maxGoal; this.current = other.current; } public String getName() { return name; } public int getId() { return id; } public String[] getFilterAttributes() { return filterAttributes; } public GoalType getType() { return type; } public double getMaxGoal() { return maxGoal; } public double getCurrent() { return current; } public void setCurrent(double current) { this.current = current; } public void incrementCurrent(double incrementAmount) { this.current += incrementAmount; } public void setFilterAttributes(String[] filterAttributes) { this.filterAttributes = filterAttributes; } public void setMaxGoal(double maxGoal) { this.maxGoal = maxGoal; } public void setName(String name) { this.name = name; } public void setID(int id){ this.id = id; } }