]> gitweb.fperrin.net Git - GpsPrune.git/blob - tim/prune/gui/profile/ArbitraryData.java
Version 19.2, December 2018
[GpsPrune.git] / tim / prune / gui / profile / ArbitraryData.java
1 package tim.prune.gui.profile;
2
3 import tim.prune.data.Field;
4 import tim.prune.data.Track;
5 import tim.prune.data.UnitSet;
6
7 /**
8  * Class to provide a source of values for the profile chart
9  * using any arbitary (non-built-in) field, units unknown
10  */
11 public class ArbitraryData extends ProfileData
12 {
13         /** Field to use */
14         private Field _field = null;
15
16         /**
17          * Constructor
18          * @param inTrack track object
19          * @param inField field to use
20          */
21         public ArbitraryData(Track inTrack, Field inField)
22         {
23                 super(inTrack);
24                 _field = inField;
25         }
26
27         /**
28          * Get the data and populate the instance arrays
29          */
30         public void init(UnitSet inUnitSet)
31         {
32                 setUnitSet(inUnitSet);
33                 initArrays();
34                 _hasData = false;
35                 _minValue = _maxValue = 0.0;
36                 if (_track != null)
37                 {
38                         for (int i=0; i<_track.getNumPoints(); i++)
39                         {
40                                 // Get the value of the given field
41                                 boolean hasValue = false;
42                                 String value = _track.getPoint(i).getFieldValue(_field);
43                                 try
44                                 {
45                                         double dValue = Double.parseDouble(value);
46                                         _pointValues[i] = dValue;
47                                         if (dValue < _minValue || _minValue == 0.0) {_minValue = dValue;}
48                                         if (dValue > _maxValue) {_maxValue = dValue;}
49                                         hasValue = true;
50                                         _hasData = true;
51                                 }
52                                 catch (Exception e) {} // ignore nulls and non-numbers
53                                 _pointHasData[i] = hasValue;
54                         }
55                 }
56         }
57
58         /**
59          * @return name of field
60          */
61         public String getLabel()
62         {
63                 return _field.getName();
64         }
65
66         /**
67          * @return the field object
68          */
69         public Field getField() {
70                 return _field;
71         }
72
73         /**
74          * @return key for message when no values present
75          */
76         public String getNoDataKey() {
77                 return "display.novalues";
78         }
79 }