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("image") private String image; @JsonProperty("location") private String location; @JsonProperty("id") private int id; @JsonProperty("filterAttributes") private String[] filterAttributes; @JsonProperty("type") final private GoalType type; @JsonProperty("maxGoal") private double maxGoal; @JsonProperty("urgent") private boolean urgent; @JsonProperty("current") private double current; @JsonProperty("description") private String description; /** * Create a new need, used by the controller * * @param name The name of the need * @param location The physical location 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) * @param urgent The urgency of the need * @param description The description of the need */ public Need(@JsonProperty("name") String name, @JsonProperty("image") String image, @JsonProperty("location") String location, @JsonProperty("id") int id, @JsonProperty("maxGoal") double maxGoal, @JsonProperty("type") GoalType type, @JsonProperty("urgent") boolean urgent, @JsonProperty("Description") String description) { this.id = id; this.image = image; this.location = location; this.name = name; this.maxGoal = maxGoal; this.type = type; this.urgent = urgent; this.description = description; } /** * Create a new need * * @param name The name of the need * @param image The image representation of the need * @param location The location of the need * @param maxGoal The maximum goal for this need * @param type The type of need (monetary, physical) * @param urgent The urgency of the need * @param description The description of the need */ public Need(String name, String image, String location, double maxGoal, GoalType type, boolean urgent, String description) { this.name = name; this.image = image; this.location = location; this.type = type; this.maxGoal = maxGoal; this.urgent = urgent; this.description = description; } /** * Create a deep copy of another need * * @param other The need to copy from */ public Need(Need other) { this.name = other.name; this.image = other.image; this.location = other.location; this.id = other.id; this.filterAttributes = other.filterAttributes; this.type = other.type; this.maxGoal = other.maxGoal; this.current = other.current; this.urgent = other.urgent; this.description = other.description; } 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; } }