aboutsummaryrefslogtreecommitdiff
path: root/ufund-api/src/main/java/com/ufund/api/ufundapi/model/Need.java
blob: 35e81b308455a14e835ee3c502c607a4a655a175 (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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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("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("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.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 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 location, double maxGoal, GoalType type, boolean urgent, String description) {
        this.name = name;
        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.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;
    }
}