View Javadoc
1   /*
2    * Prometheus: Application Framework
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.prometheus.ui.fieldset;
18  
19  import io.github.tonywasher.joceanus.oceanus.base.OceanusException;
20  import io.github.tonywasher.joceanus.metis.data.MetisDataItem.MetisDataFieldId;
21  import io.github.tonywasher.joceanus.prometheus.exc.PrometheusDataException;
22  
23  /**
24   * FieldSetEvent.
25   */
26  public class PrometheusFieldSetEvent {
27      /**
28       * The field.
29       */
30      private final MetisDataFieldId theFieldId;
31  
32      /**
33       * The new value.
34       */
35      private final Object theValue;
36  
37      /**
38       * Constructor.
39       *
40       * @param pFieldId  the source fieldId
41       * @param pNewValue the new Value
42       */
43      public PrometheusFieldSetEvent(final MetisDataFieldId pFieldId,
44                                     final Object pNewValue) {
45          theFieldId = pFieldId;
46          theValue = pNewValue;
47      }
48  
49      /**
50       * Obtain the source field.
51       *
52       * @return the field
53       */
54      public MetisDataFieldId getFieldId() {
55          return theFieldId;
56      }
57  
58      /**
59       * Obtain the value.
60       *
61       * @return the value
62       */
63      public Object getValue() {
64          return theValue;
65      }
66  
67      /**
68       * Obtain the value as specific type.
69       *
70       * @param <T>    the value class
71       * @param pClass the required class
72       * @return the value
73       * @throws OceanusException on error
74       */
75      public <T> T getValue(final Class<T> pClass) throws OceanusException {
76          try {
77              return pClass.cast(theValue);
78          } catch (ClassCastException e) {
79              throw new PrometheusDataException("Invalid dataType", e);
80          }
81      }
82  }