-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSunshiner.java
150 lines (124 loc) · 3.32 KB
/
Sunshiner.java
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package com.deange.uwaterlooapi.model.resources;
import android.os.Parcel;
import android.os.Parcelable;
import com.deange.uwaterlooapi.model.BaseModel;
import com.google.gson.annotations.SerializedName;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
public class Sunshiner
extends BaseModel
implements
Parcelable,
Comparable<Sunshiner> {
private static final MathContext CURRENCY_CONTEXT = new MathContext(2, RoundingMode.HALF_EVEN);
@SerializedName("employer")
String mEmployer;
@SerializedName("surname")
String mSurname;
@SerializedName("given_name")
String mGivenName;
@SerializedName("position")
String mPosition;
@SerializedName("salary_paid")
String mSalaryRaw;
@SerializedName("taxable_benefits")
String mTaxableBenefitsRaw;
BigDecimal mSalary;
BigDecimal mTaxableBenefits;
protected Sunshiner(final Parcel in) {
super(in);
mEmployer = in.readString();
mSurname = in.readString();
mGivenName = in.readString();
mPosition = in.readString();
mSalaryRaw = in.readString();
mTaxableBenefitsRaw = in.readString();
mSalary = (BigDecimal) in.readSerializable();
mTaxableBenefits = (BigDecimal) in.readSerializable();
}
@Override
public void writeToParcel(final Parcel dest, final int flags) {
super.writeToParcel(dest, flags);
dest.writeString(mEmployer);
dest.writeString(mSurname);
dest.writeString(mGivenName);
dest.writeString(mPosition);
dest.writeString(mSalaryRaw);
dest.writeString(mTaxableBenefitsRaw);
dest.writeSerializable(mSalary);
dest.writeSerializable(mTaxableBenefits);
}
public static final Creator<Sunshiner> CREATOR = new Creator<Sunshiner>() {
@Override
public Sunshiner createFromParcel(final Parcel in) {
return new Sunshiner(in);
}
@Override
public Sunshiner[] newArray(final int size) {
return new Sunshiner[size];
}
};
/**
* Name of Employer (UW)
*/
public String getEmployer() {
return mEmployer;
}
/**
* Last name of the employee
*/
public String getSurname() {
return mSurname;
}
/**
* Given name of the employee
*/
public String getGivenName() {
return mGivenName;
}
/**
* Employee's position at the University
*/
public String getPosition() {
return mPosition;
}
/**
* Salary paid per annum in dollars
*/
public BigDecimal getSalary() {
if (mSalary == null) {
mSalary = parseCurrency(mSalaryRaw);
}
return mSalary;
}
/**
* Salary paid per annum in dollars as a string
*/
public String getSalaryRaw() {
return mSalaryRaw;
}
/**
* Employee's taxable benefits in dollars
*/
public BigDecimal getTaxableBenefits() {
if (mTaxableBenefits == null) {
mTaxableBenefits = parseCurrency(mTaxableBenefitsRaw);
}
return mTaxableBenefits;
}
/**
* Employee's taxable benefits in dollars as a string
*/
public String getTaxableBenefitsRaw() {
return mTaxableBenefitsRaw;
}
@Override
public int compareTo(final Sunshiner another) {
return getSalary().compareTo(another.getSalary());
}
private static BigDecimal parseCurrency(final String currency) {
final String cleanValue = currency.replaceAll("[^\\d.]+", "");
return new BigDecimal(cleanValue, CURRENCY_CONTEXT);
}
}