aboutsummaryrefslogtreecommitdiff
path: root/ufund-api/src/main/java/com/ufund/api/ufundapi/model/Need.java
blob: 22e86e3fefdb8cc1e89c8a98a7528b33cb0787ae (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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;
    }
}