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.security.PrometheusSecurityPasswordManager;
22  import io.github.tonywasher.joceanus.prometheus.sheets.PrometheusSheetDataItem;
23  import io.github.tonywasher.joceanus.prometheus.sheets.PrometheusSheetReader;
24  import io.github.tonywasher.joceanus.tethys.api.factory.TethysUIFactory;
25  import io.github.tonywasher.joceanus.tethys.api.thread.TethysUIThreadStatusReport;
26  
27  /**
28   * SheetReader extension for MoneyWiseData.
29   *
30   * @author Tony Washer
31   */
32  public class MoneyWiseReader
33          extends PrometheusSheetReader {
34      /**
35       * Constructor.
36       *
37       * @param pFactory     the gui factory
38       * @param pReport      the report
39       * @param pPasswordMgr the password manager
40       */
41      public MoneyWiseReader(final TethysUIFactory<?> pFactory,
42                             final TethysUIThreadStatusReport pReport,
43                             final PrometheusSecurityPasswordManager pPasswordMgr) {
44          /* Call super-constructor */
45          super(pFactory, pReport, pPasswordMgr);
46      }
47  
48      /**
49       * Register sheets.
50       */
51      @Override
52      protected void registerSheets() {
53          /* Loop through the static types */
54          for (MoneyWiseStaticDataType myType : MoneyWiseStaticDataType.values()) {
55              /* Create the sheet */
56              addSheet(newSheet(myType));
57          }
58  
59          /* Loop through the basic types */
60          for (MoneyWiseBasicDataType myType : MoneyWiseBasicDataType.values()) {
61              /* Create the sheet */
62              addSheet(newSheet(myType));
63          }
64      }
65  
66      /**
67       * Create new sheet of required type.
68       *
69       * @param pDataType the data type
70       * @return the new sheet
71       */
72      private PrometheusSheetDataItem<?> newSheet(final MoneyWiseStaticDataType pDataType) {
73          /* Switch on data Type */
74          switch (pDataType) {
75              case DEPOSITTYPE:
76                  return new MoneyWiseSheetDepositCategoryType(this);
77              case CASHTYPE:
78                  return new MoneyWiseSheetCashCategoryType(this);
79              case LOANTYPE:
80                  return new MoneyWiseSheetLoanCategoryType(this);
81              case PORTFOLIOTYPE:
82                  return new MoneyWiseSheetPortfolioType(this);
83              case PAYEETYPE:
84                  return new MoneyWiseSheetPayeeType(this);
85              case SECURITYTYPE:
86                  return new MoneyWiseSheetSecurityType(this);
87              case TRANSTYPE:
88                  return new MoneyWiseSheetTransCategoryType(this);
89              case ACCOUNTINFOTYPE:
90                  return new MoneyWiseSheetAccountInfoType(this);
91              case TRANSINFOTYPE:
92                  return new MoneyWiseSheetTransInfoType(this);
93              case CURRENCY:
94                  return new MoneyWiseSheetCurrency(this);
95              case TAXBASIS:
96                  return new MoneyWiseSheetTaxBasis(this);
97              default:
98                  throw new IllegalArgumentException(pDataType.toString());
99          }
100     }
101 
102     /**
103      * Create new sheet of required type.
104      *
105      * @param pDataType the data type
106      * @return the new sheet
107      */
108     private PrometheusSheetDataItem<?> newSheet(final MoneyWiseBasicDataType pDataType) {
109         /* Switch on data Type */
110         switch (pDataType) {
111             case TRANSTAG:
112                 return new MoneyWiseSheetTransTag(this);
113             case REGION:
114                 return new MoneyWiseSheetRegion(this);
115             case DEPOSITCATEGORY:
116                 return new MoneyWiseSheetDepositCategory(this);
117             case CASHCATEGORY:
118                 return new MoneyWiseSheetCashCategory(this);
119             case LOANCATEGORY:
120                 return new MoneyWiseSheetLoanCategory(this);
121             case TRANSCATEGORY:
122                 return new MoneyWiseSheetTransCategory(this);
123             case EXCHANGERATE:
124                 return new MoneyWiseSheetExchangeRate(this);
125             case PAYEE:
126                 return new MoneyWiseSheetPayee(this);
127             case PAYEEINFO:
128                 return new MoneyWiseSheetPayeeInfo(this);
129             case SECURITY:
130                 return new MoneyWiseSheetSecurity(this);
131             case SECURITYPRICE:
132                 return new MoneyWiseSheetSecurityPrice(this);
133             case SECURITYINFO:
134                 return new MoneyWiseSheetSecurityInfo(this);
135             case DEPOSIT:
136                 return new MoneyWiseSheetDeposit(this);
137             case DEPOSITRATE:
138                 return new MoneyWiseSheetDepositRate(this);
139             case DEPOSITINFO:
140                 return new MoneyWiseSheetDepositInfo(this);
141             case CASH:
142                 return new MoneyWiseSheetCash(this);
143             case CASHINFO:
144                 return new MoneyWiseSheetCashInfo(this);
145             case LOAN:
146                 return new MoneyWiseSheetLoan(this);
147             case LOANINFO:
148                 return new MoneyWiseSheetLoanInfo(this);
149             case PORTFOLIO:
150                 return new MoneyWiseSheetPortfolio(this);
151             case PORTFOLIOINFO:
152                 return new MoneyWiseSheetPortfolioInfo(this);
153             case TRANSACTION:
154                 return new MoneyWiseSheetTransaction(this);
155             case TRANSACTIONINFO:
156                 return new MoneyWiseSheetTransInfo(this);
157             default:
158                 throw new IllegalArgumentException(pDataType.toString());
159         }
160     }
161 }