1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.moneywise.database;
18
19 import io.github.tonywasher.joceanus.oceanus.base.OceanusException;
20 import io.github.tonywasher.joceanus.oceanus.format.OceanusDataFormatter;
21 import io.github.tonywasher.joceanus.metis.data.MetisDataItem.MetisDataFieldId;
22 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseBasicResource;
23 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseDataSet;
24 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseExchangeRate;
25 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataSet;
26 import io.github.tonywasher.joceanus.prometheus.data.PrometheusDataValues;
27 import io.github.tonywasher.joceanus.prometheus.database.PrometheusColumnDefinition;
28 import io.github.tonywasher.joceanus.prometheus.database.PrometheusDataStore;
29 import io.github.tonywasher.joceanus.prometheus.database.PrometheusTableDataItem;
30 import io.github.tonywasher.joceanus.prometheus.database.PrometheusTableDefinition;
31 import io.github.tonywasher.joceanus.prometheus.database.PrometheusTableDefinition.PrometheusSortOrder;
32
33
34
35
36
37
38 public class MoneyWiseTableExchangeRate
39 extends PrometheusTableDataItem<MoneyWiseExchangeRate> {
40
41
42
43 protected static final String TABLE_NAME = MoneyWiseExchangeRate.LIST_NAME;
44
45
46
47
48 private OceanusDataFormatter theFormatter;
49
50
51
52
53
54
55 protected MoneyWiseTableExchangeRate(final PrometheusDataStore pDatabase) {
56 super(pDatabase, TABLE_NAME);
57 final PrometheusTableDefinition myTableDef = getTableDef();
58
59
60 final PrometheusColumnDefinition myDateCol = myTableDef.addDateColumn(MoneyWiseBasicResource.MONEYWISEDATA_FIELD_DATE);
61 final PrometheusColumnDefinition myFromCol = myTableDef.addReferenceColumn(MoneyWiseBasicResource.XCHGRATE_FROM, MoneyWiseTableCurrency.TABLE_NAME);
62 myTableDef.addReferenceColumn(MoneyWiseBasicResource.XCHGRATE_TO, MoneyWiseTableCurrency.TABLE_NAME);
63 myTableDef.addRatioColumn(MoneyWiseBasicResource.XCHGRATE_RATE);
64
65
66 myDateCol.setSortOrder(PrometheusSortOrder.DESCENDING);
67 myFromCol.setSortOrder(PrometheusSortOrder.ASCENDING);
68 }
69
70 @Override
71 protected void declareData(final PrometheusDataSet pData) {
72 final MoneyWiseDataSet myData = (MoneyWiseDataSet) pData;
73 setList(myData.getExchangeRates());
74 theFormatter = myData.getDataFormatter();
75 }
76
77 @Override
78 protected PrometheusDataValues loadValues() throws OceanusException {
79
80 final PrometheusTableDefinition myTableDef = getTableDef();
81
82
83 final PrometheusDataValues myValues = getRowValues(MoneyWiseExchangeRate.OBJECT_NAME);
84 myValues.addValue(MoneyWiseBasicResource.MONEYWISEDATA_FIELD_DATE, myTableDef.getDateValue(MoneyWiseBasicResource.MONEYWISEDATA_FIELD_DATE));
85 myValues.addValue(MoneyWiseBasicResource.XCHGRATE_FROM, myTableDef.getIntegerValue(MoneyWiseBasicResource.XCHGRATE_FROM));
86 myValues.addValue(MoneyWiseBasicResource.XCHGRATE_TO, myTableDef.getIntegerValue(MoneyWiseBasicResource.XCHGRATE_TO));
87 myValues.addValue(MoneyWiseBasicResource.XCHGRATE_RATE, myTableDef.getRatioValue(MoneyWiseBasicResource.XCHGRATE_RATE, theFormatter));
88
89
90 return myValues;
91 }
92
93 @Override
94 protected void setFieldValue(final MoneyWiseExchangeRate pItem,
95 final MetisDataFieldId iField) throws OceanusException {
96
97 final PrometheusTableDefinition myTableDef = getTableDef();
98 if (MoneyWiseBasicResource.MONEYWISEDATA_FIELD_DATE.equals(iField)) {
99 myTableDef.setDateValue(iField, pItem.getDate());
100 } else if (MoneyWiseBasicResource.XCHGRATE_FROM.equals(iField)) {
101 myTableDef.setIntegerValue(iField, pItem.getFromCurrencyId());
102 } else if (MoneyWiseBasicResource.XCHGRATE_TO.equals(iField)) {
103 myTableDef.setIntegerValue(iField, pItem.getToCurrencyId());
104 } else if (MoneyWiseBasicResource.XCHGRATE_RATE.equals(iField)) {
105 myTableDef.setRatioValue(iField, pItem.getExchangeRate());
106 } else {
107 super.setFieldValue(pItem, iField);
108 }
109 }
110 }