View Javadoc
1   /*
2    * MoneyWise: Finance Application
3    * Copyright 2012-2026. Tony Washer
4    *
5    * Licensed under the Apache License, Version 2.0 (the "License"); you may not
6    * use this file except in compliance with the License.  You may obtain a copy
7    * of the License at
8    *
9    *   http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
14   * License for the specific language governing permissions and limitations under
15   * the License.
16   */
17  package io.github.tonywasher.joceanus.moneywise.sheets;
18  
19  import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseBasicDataType;
20  import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseStaticDataType;
21  import io.github.tonywasher.joceanus.prometheus.sheets.PrometheusSheetDataItem;
22  import io.github.tonywasher.joceanus.prometheus.sheets.PrometheusSheetWriter;
23  import io.github.tonywasher.joceanus.tethys.api.factory.TethysUIFactory;
24  import io.github.tonywasher.joceanus.tethys.api.thread.TethysUIThreadStatusReport;
25  
26  /**
27   * SheetWriter extension for MoneyWiseData.
28   *
29   * @author Tony Washer
30   */
31  public class MoneyWiseWriter
32          extends PrometheusSheetWriter {
33      /**
34       * Constructor.
35       *
36       * @param pFactory the gui factory
37       * @param pReport  the report
38       */
39      public MoneyWiseWriter(final TethysUIFactory<?> pFactory,
40                             final TethysUIThreadStatusReport pReport) {
41          /* Call super-constructor */
42          super(pFactory, pReport);
43      }
44  
45      /**
46       * Register sheets.
47       */
48      @Override
49      protected void registerSheets() {
50          /* Loop through the static types */
51          for (MoneyWiseStaticDataType myType : MoneyWiseStaticDataType.values()) {
52              /* Create the sheet */
53              addSheet(newSheet(myType));
54          }
55  
56          /* Loop through the basic types */
57          for (MoneyWiseBasicDataType myType : MoneyWiseBasicDataType.values()) {
58              /* Create the sheet */
59              addSheet(newSheet(myType));
60          }
61      }
62  
63      /**
64       * Create new sheet of required type.
65       *
66       * @param pDataType the data type
67       * @return the new sheet
68       */
69      private PrometheusSheetDataItem<?> newSheet(final MoneyWiseStaticDataType pDataType) {
70          /* Switch on data Type */
71          switch (pDataType) {
72              case DEPOSITTYPE:
73                  return new MoneyWiseSheetDepositCategoryType(this);
74              case CASHTYPE:
75                  return new MoneyWiseSheetCashCategoryType(this);
76              case LOANTYPE:
77                  return new MoneyWiseSheetLoanCategoryType(this);
78              case PORTFOLIOTYPE:
79                  return new MoneyWiseSheetPortfolioType(this);
80              case PAYEETYPE:
81                  return new MoneyWiseSheetPayeeType(this);
82              case SECURITYTYPE:
83                  return new MoneyWiseSheetSecurityType(this);
84              case TRANSTYPE:
85                  return new MoneyWiseSheetTransCategoryType(this);
86              case ACCOUNTINFOTYPE:
87                  return new MoneyWiseSheetAccountInfoType(this);
88              case TRANSINFOTYPE:
89                  return new MoneyWiseSheetTransInfoType(this);
90              case CURRENCY:
91                  return new MoneyWiseSheetCurrency(this);
92              case TAXBASIS:
93                  return new MoneyWiseSheetTaxBasis(this);
94              default:
95                  throw new IllegalArgumentException(pDataType.toString());
96          }
97      }
98  
99      /**
100      * Create new sheet of required type.
101      *
102      * @param pDataType the data type
103      * @return the new sheet
104      */
105     private PrometheusSheetDataItem<?> newSheet(final MoneyWiseBasicDataType pDataType) {
106         /* Switch on data Type */
107         switch (pDataType) {
108             case TRANSTAG:
109                 return new MoneyWiseSheetTransTag(this);
110             case REGION:
111                 return new MoneyWiseSheetRegion(this);
112             case DEPOSITCATEGORY:
113                 return new MoneyWiseSheetDepositCategory(this);
114             case CASHCATEGORY:
115                 return new MoneyWiseSheetCashCategory(this);
116             case LOANCATEGORY:
117                 return new MoneyWiseSheetLoanCategory(this);
118             case TRANSCATEGORY:
119                 return new MoneyWiseSheetTransCategory(this);
120             case EXCHANGERATE:
121                 return new MoneyWiseSheetExchangeRate(this);
122             case PAYEE:
123                 return new MoneyWiseSheetPayee(this);
124             case PAYEEINFO:
125                 return new MoneyWiseSheetPayeeInfo(this);
126             case SECURITY:
127                 return new MoneyWiseSheetSecurity(this);
128             case SECURITYPRICE:
129                 return new MoneyWiseSheetSecurityPrice(this);
130             case SECURITYINFO:
131                 return new MoneyWiseSheetSecurityInfo(this);
132             case DEPOSIT:
133                 return new MoneyWiseSheetDeposit(this);
134             case DEPOSITRATE:
135                 return new MoneyWiseSheetDepositRate(this);
136             case DEPOSITINFO:
137                 return new MoneyWiseSheetDepositInfo(this);
138             case CASH:
139                 return new MoneyWiseSheetCash(this);
140             case CASHINFO:
141                 return new MoneyWiseSheetCashInfo(this);
142             case LOAN:
143                 return new MoneyWiseSheetLoan(this);
144             case LOANINFO:
145                 return new MoneyWiseSheetLoanInfo(this);
146             case PORTFOLIO:
147                 return new MoneyWiseSheetPortfolio(this);
148             case PORTFOLIOINFO:
149                 return new MoneyWiseSheetPortfolioInfo(this);
150             case TRANSACTION:
151                 return new MoneyWiseSheetTransaction(this);
152             case TRANSACTIONINFO:
153                 return new MoneyWiseSheetTransInfo(this);
154             default:
155                 throw new IllegalArgumentException(pDataType.toString());
156         }
157     }
158 }