1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.moneywise.atlas.data.analysis.base;
18
19 import io.github.tonywasher.joceanus.oceanus.date.OceanusDate;
20 import io.github.tonywasher.joceanus.oceanus.decimal.OceanusRate;
21 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseBasicDataType;
22 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseDataSet;
23 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseDeposit;
24 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseDepositRate;
25 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseDepositRate.MoneyWiseDepositRateList;
26 import io.github.tonywasher.joceanus.prometheus.views.PrometheusEditSet;
27
28 import java.util.ArrayList;
29 import java.util.HashMap;
30 import java.util.ListIterator;
31 import java.util.Map;
32
33
34
35
36 public class MoneyWiseNewDepositRate {
37
38
39
40 private final OceanusDate theDate;
41
42
43
44
45 private final MoneyWiseDeposit theDeposit;
46
47
48
49
50 private final OceanusRate theRate;
51
52
53
54
55
56
57
58
59 MoneyWiseNewDepositRate(final OceanusDate pDate,
60 final MoneyWiseDeposit pDeposit,
61 final OceanusRate pRate) {
62 theDate = pDate;
63 theDeposit = pDeposit;
64 theRate = pRate;
65 }
66
67
68
69
70
71
72 public OceanusDate getDate() {
73 return theDate;
74 }
75
76
77
78
79
80
81 public MoneyWiseDeposit getDeposit() {
82 return theDeposit;
83 }
84
85
86
87
88
89
90 public OceanusRate getRate() {
91 return theRate;
92 }
93
94
95
96
97 public static class MoneyWiseNewDepositRateList
98 extends ArrayList<MoneyWiseNewDepositRate> {
99
100
101
102
103
104 public MoneyWiseNewDepositRateList(final PrometheusEditSet pEditSet) {
105
106 final Map<MoneyWiseDeposit, OceanusDate> myPending = new HashMap<>();
107
108
109 final OceanusDate myStart = ((MoneyWiseDataSet) pEditSet.getDataSet()).getDateRange().getStart();
110
111
112 final MoneyWiseDepositRateList mySource = pEditSet.getDataList(MoneyWiseBasicDataType.DEPOSITRATE, MoneyWiseDepositRateList.class);
113 final ListIterator<MoneyWiseDepositRate> myIterator = mySource.listIterator(mySource.size());
114 while (myIterator.hasPrevious()) {
115
116 final MoneyWiseDepositRate myRate = myIterator.previous();
117 final MoneyWiseDeposit myDeposit = myRate.getDeposit();
118 OceanusDate myDate = myPending.get(myDeposit);
119 if (myDate == null) {
120 myDate = myStart;
121 }
122
123
124 add(new MoneyWiseNewDepositRate(myDate, myDeposit, myRate.getRate()));
125
126
127 myPending.put(myDeposit, myRate.getEndDate());
128 }
129 }
130 }
131 }