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.atlas.data.analysis.buckets;
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.decimal.OceanusMoney;
22  import io.github.tonywasher.joceanus.metis.field.MetisFieldSet;
23  import io.github.tonywasher.joceanus.moneywise.atlas.data.analysis.values.MoneyWiseXAnalysisAccountAttr;
24  import io.github.tonywasher.joceanus.moneywise.atlas.data.analysis.values.MoneyWiseXAnalysisAccountValues;
25  import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWisePortfolio;
26  
27  /**
28   * The Portfolio Cash Bucket class.
29   */
30  public final class MoneyWiseXAnalysisPortfolioCashBucket
31          extends MoneyWiseXAnalysisAccountBucket<MoneyWisePortfolio> {
32      /**
33       * Local Report fields.
34       */
35      private static final MetisFieldSet<MoneyWiseXAnalysisPortfolioCashBucket> FIELD_DEFS = MetisFieldSet.newFieldSet(MoneyWiseXAnalysisPortfolioCashBucket.class);
36  
37      /**
38       * Constructor.
39       *
40       * @param pAnalysis  the analysis
41       * @param pPortfolio the portfolio
42       */
43      MoneyWiseXAnalysisPortfolioCashBucket(final MoneyWiseXAnalysis pAnalysis,
44                                            final MoneyWisePortfolio pPortfolio) {
45          /* Call super-constructor */
46          super(pAnalysis, pPortfolio);
47      }
48  
49      /**
50       * Constructor.
51       *
52       * @param pAnalysis the analysis
53       * @param pBase     the underlying bucket
54       */
55      MoneyWiseXAnalysisPortfolioCashBucket(final MoneyWiseXAnalysis pAnalysis,
56                                            final MoneyWiseXAnalysisPortfolioCashBucket pBase) {
57          /* Call super-constructor */
58          super(pAnalysis, pBase);
59      }
60  
61      /**
62       * Constructor.
63       *
64       * @param pAnalysis the analysis
65       * @param pBase     the underlying bucket
66       * @param pDate     the date for the bucket
67       */
68      MoneyWiseXAnalysisPortfolioCashBucket(final MoneyWiseXAnalysis pAnalysis,
69                                            final MoneyWiseXAnalysisPortfolioCashBucket pBase,
70                                            final OceanusDate pDate) {
71          /* Call super-constructor */
72          super(pAnalysis, pBase, pDate);
73      }
74  
75      /**
76       * Constructor.
77       *
78       * @param pAnalysis the analysis
79       * @param pBase     the underlying bucket
80       * @param pRange    the range for the bucket
81       */
82      MoneyWiseXAnalysisPortfolioCashBucket(final MoneyWiseXAnalysis pAnalysis,
83                                            final MoneyWiseXAnalysisPortfolioCashBucket pBase,
84                                            final OceanusDateRange pRange) {
85          /* Call super-constructor */
86          super(pAnalysis, pBase, pRange);
87      }
88  
89      @Override
90      public MetisFieldSet<MoneyWiseXAnalysisPortfolioCashBucket> getDataFieldSet() {
91          return FIELD_DEFS;
92      }
93  
94      @Override
95      public Long getBucketId() {
96          return getAccount().getExternalId();
97      }
98  
99      /**
100      * Add Values.
101      *
102      * @param pBucket the portfolio cash bucket
103      */
104     void addValues(final MoneyWiseXAnalysisPortfolioCashBucket pBucket) {
105         /* Add values */
106         addValues(getValues(), pBucket.getValues());
107 
108         /* Add base values */
109         addValues(getBaseValues(), pBucket.getBaseValues());
110     }
111 
112     /**
113      * Add bucket to totals.
114      *
115      * @param pTotals the totals
116      * @param pSource the values to add
117      */
118     private static void addValues(final MoneyWiseXAnalysisAccountValues pTotals,
119                                   final MoneyWiseXAnalysisAccountValues pSource) {
120         /* Add valuation values */
121         OceanusMoney myValue = pTotals.getMoneyValue(MoneyWiseXAnalysisAccountAttr.VALUATION);
122         myValue = new OceanusMoney(myValue);
123         final OceanusMoney mySrcValue = pSource.getMoneyValue(MoneyWiseXAnalysisAccountAttr.VALUATION);
124         myValue.addAmount(mySrcValue);
125         pTotals.setValue(MoneyWiseXAnalysisAccountAttr.VALUATION, myValue);
126     }
127 }