1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.moneywise.tax.uk;
18
19 import io.github.tonywasher.joceanus.oceanus.date.OceanusDate;
20 import io.github.tonywasher.joceanus.oceanus.date.OceanusDateRange;
21 import io.github.tonywasher.joceanus.oceanus.date.OceanusFiscalYear;
22 import io.github.tonywasher.joceanus.oceanus.format.OceanusDataFormatter;
23 import io.github.tonywasher.joceanus.metis.data.MetisDataItem.MetisDataMap;
24 import io.github.tonywasher.joceanus.metis.data.MetisDataItem.MetisDataObjectFormat;
25 import io.github.tonywasher.joceanus.moneywise.tax.MoneyWiseTaxYearCache;
26
27 import java.util.LinkedHashMap;
28 import java.util.Map;
29
30
31
32
33 public class MoneyWiseUKTaxYearCache
34 extends MoneyWiseTaxYearCache
35 implements MetisDataMap<OceanusDate, MoneyWiseUKTaxYear>, MetisDataObjectFormat {
36
37
38
39 private final Map<OceanusDate, MoneyWiseUKTaxYear> theCache;
40
41
42
43
44 private final OceanusDateRange theDateRange;
45
46
47
48
49 public MoneyWiseUKTaxYearCache() {
50
51 super(OceanusFiscalYear.UK);
52
53
54 theCache = new LinkedHashMap<>();
55
56
57 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1981);
58 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1982);
59 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1983);
60 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1984);
61 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1985);
62 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1986);
63 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1987);
64 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1988);
65 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1989);
66 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1990);
67 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1991);
68 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1992);
69 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1993);
70 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1994);
71 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1995);
72 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1996);
73 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1997);
74 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1998);
75 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_1999);
76 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2000);
77 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2001);
78 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2002);
79 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2003);
80 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2004);
81 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2005);
82 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2006);
83 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2007);
84 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2008);
85 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2009);
86 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2010);
87 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2011);
88 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2012);
89 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2013);
90 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2014);
91 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2015);
92 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2016);
93 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2017);
94 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2018);
95 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2019);
96 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2020);
97 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2021);
98 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2022);
99 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2023);
100 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2024);
101 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2025);
102 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2026);
103
104
105 final OceanusDate myEnd = MoneyWiseUKTaxYearFactory.YEAR_2026.getYearEnd();
106 OceanusDate myStart = MoneyWiseUKTaxYearFactory.YEAR_1981.getYearEnd();
107 myStart = new OceanusDate(myStart);
108 myStart.adjustDay(1);
109 myStart.adjustYear(-1);
110 theDateRange = new OceanusDateRange(myStart, myEnd);
111 }
112
113
114
115
116
117
118 private void setTaxYearInCache(final MoneyWiseUKTaxYear pTaxYear) {
119 theCache.put(pTaxYear.getYearEnd(), pTaxYear);
120 }
121
122 @Override
123 public OceanusDateRange getDateRange() {
124 return theDateRange;
125 }
126
127 @Override
128 public MoneyWiseUKTaxYear findTaxYearForRange(final OceanusDateRange pRange) {
129 return checkTaxYearRange(pRange)
130 ? findTaxYearForDate(pRange.getEnd())
131 : null;
132 }
133
134 @Override
135 public MoneyWiseUKTaxYear findTaxYearForDate(final OceanusDate pDate) {
136 final OceanusDate myDate = getTaxYearDate(pDate);
137 return theCache.get(myDate);
138 }
139
140 @Override
141 public Map<OceanusDate, MoneyWiseUKTaxYear> getUnderlyingMap() {
142 return theCache;
143 }
144
145 @Override
146 public String toString() {
147 return MoneyWiseUKTaxYearCache.class.getSimpleName();
148 }
149
150 @Override
151 public String formatObject(final OceanusDataFormatter pFormatter) {
152 return toString();
153 }
154 }