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.metis.data.MetisDataItem.MetisDataMap;
20 import io.github.tonywasher.joceanus.metis.data.MetisDataItem.MetisDataObjectFormat;
21 import io.github.tonywasher.joceanus.moneywise.tax.MoneyWiseTaxYearCache;
22 import io.github.tonywasher.joceanus.oceanus.date.OceanusDate;
23 import io.github.tonywasher.joceanus.oceanus.date.OceanusDateRange;
24 import io.github.tonywasher.joceanus.oceanus.date.OceanusFiscalYear;
25 import io.github.tonywasher.joceanus.oceanus.format.OceanusDataFormatter;
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 setTaxYearInCache(MoneyWiseUKTaxYearFactory.YEAR_2027);
104
105
106 final OceanusDate myEnd = MoneyWiseUKTaxYearFactory.YEAR_2027.getYearEnd();
107 OceanusDate myStart = MoneyWiseUKTaxYearFactory.YEAR_1981.getYearEnd();
108 myStart = new OceanusDate(myStart);
109 myStart.adjustDay(1);
110 myStart.adjustYear(-1);
111 theDateRange = new OceanusDateRange(myStart, myEnd);
112 }
113
114
115
116
117
118
119 private void setTaxYearInCache(final MoneyWiseUKTaxYear pTaxYear) {
120 theCache.put(pTaxYear.getYearEnd(), pTaxYear);
121 }
122
123 @Override
124 public OceanusDateRange getDateRange() {
125 return theDateRange;
126 }
127
128 @Override
129 public MoneyWiseUKTaxYear findTaxYearForRange(final OceanusDateRange pRange) {
130 return checkTaxYearRange(pRange)
131 ? findTaxYearForDate(pRange.getEnd())
132 : null;
133 }
134
135 @Override
136 public MoneyWiseUKTaxYear findTaxYearForDate(final OceanusDate pDate) {
137 final OceanusDate myDate = getTaxYearDate(pDate);
138 return theCache.get(myDate);
139 }
140
141 @Override
142 public Map<OceanusDate, MoneyWiseUKTaxYear> getUnderlyingMap() {
143 return theCache;
144 }
145
146 @Override
147 public String toString() {
148 return MoneyWiseUKTaxYearCache.class.getSimpleName();
149 }
150
151 @Override
152 public String formatObject(final OceanusDataFormatter pFormatter) {
153 return toString();
154 }
155 }