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.data.validate;
18  
19  import io.github.tonywasher.joceanus.metis.field.MetisFieldRequired;
20  import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePortfolio;
21  import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePortfolioInfo;
22  import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePortfolioInfoSet;
23  import io.github.tonywasher.joceanus.moneywise.data.statics.MoneyWiseAccountInfoClass;
24  import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataInfoClass;
25  import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataItem;
26  import io.github.tonywasher.joceanus.prometheus.validate.PrometheusValidateInfoSet;
27  
28  /**
29   * Validate PortfolioInfoSet.
30   */
31  public class MoneyWiseValidatePortfolioInfoSet
32          extends PrometheusValidateInfoSet<MoneyWisePortfolioInfo> {
33      @Override
34      public MoneyWisePortfolio getOwner() {
35          return (MoneyWisePortfolio) super.getOwner();
36      }
37  
38      @Override
39      public MoneyWisePortfolioInfoSet getInfoSet() {
40          return (MoneyWisePortfolioInfoSet) super.getInfoSet();
41      }
42  
43      @Override
44      public MetisFieldRequired isClassRequired(final PrometheusDataInfoClass pClass) {
45          /* Switch on class */
46          switch ((MoneyWiseAccountInfoClass) pClass) {
47              /* Allowed set */
48              case NOTES:
49              case SORTCODE:
50              case ACCOUNT:
51              case REFERENCE:
52              case WEBSITE:
53              case CUSTOMERNO:
54              case USERID:
55              case PASSWORD:
56                  return MetisFieldRequired.CANEXIST;
57  
58              /* Not Allowed */
59              case MATURITY:
60              case OPENINGBALANCE:
61              case AUTOEXPENSE:
62              case AUTOPAYEE:
63              case SYMBOL:
64              case REGION:
65              case UNDERLYINGSTOCK:
66              case OPTIONPRICE:
67              default:
68                  return MetisFieldRequired.NOTALLOWED;
69          }
70      }
71  
72      @Override
73      public void validateClass(final MoneyWisePortfolioInfo pInfo,
74                                final PrometheusDataInfoClass pClass) {
75          /* Switch on class */
76          switch ((MoneyWiseAccountInfoClass) pClass) {
77              case WEBSITE:
78              case CUSTOMERNO:
79              case USERID:
80              case PASSWORD:
81              case SORTCODE:
82              case ACCOUNT:
83              case NOTES:
84              case REFERENCE:
85                  validateInfoLength(pInfo);
86                  break;
87              default:
88                  break;
89          }
90      }
91  
92      /**
93       * Validate the info length.
94       *
95       * @param pInfo the info
96       */
97      private void validateInfoLength(final MoneyWisePortfolioInfo pInfo) {
98          final char[] myArray = pInfo.getValue(char[].class);
99          final MoneyWiseAccountInfoClass myClass = pInfo.getInfoClass();
100         if (myArray.length > myClass.getMaximumLength()) {
101             getOwner().addError(PrometheusDataItem.ERROR_LENGTH, MoneyWisePortfolioInfoSet.getFieldForClass(myClass));
102         }
103     }
104 }