X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=src%2Ftim%2Fprune%2Fgui%2Fprofile%2FArbitraryData.java;fp=src%2Ftim%2Fprune%2Fgui%2Fprofile%2FArbitraryData.java;h=cf974a5262e692bc0ee06e01fca3a4ce19e29c9f;hp=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465 diff --git a/src/tim/prune/gui/profile/ArbitraryData.java b/src/tim/prune/gui/profile/ArbitraryData.java new file mode 100644 index 0000000..cf974a5 --- /dev/null +++ b/src/tim/prune/gui/profile/ArbitraryData.java @@ -0,0 +1,79 @@ +package tim.prune.gui.profile; + +import tim.prune.data.Field; +import tim.prune.data.Track; +import tim.prune.data.UnitSet; + +/** + * Class to provide a source of values for the profile chart + * using any arbitary (non-built-in) field, units unknown + */ +public class ArbitraryData extends ProfileData +{ + /** Field to use */ + private Field _field = null; + + /** + * Constructor + * @param inTrack track object + * @param inField field to use + */ + public ArbitraryData(Track inTrack, Field inField) + { + super(inTrack); + _field = inField; + } + + /** + * Get the data and populate the instance arrays + */ + public void init(UnitSet inUnitSet) + { + setUnitSet(inUnitSet); + initArrays(); + _hasData = false; + _minValue = _maxValue = 0.0; + if (_track != null) + { + for (int i=0; i<_track.getNumPoints(); i++) + { + // Get the value of the given field + boolean hasValue = false; + String value = _track.getPoint(i).getFieldValue(_field); + try + { + double dValue = Double.parseDouble(value); + _pointValues[i] = dValue; + if (dValue < _minValue || _minValue == 0.0) {_minValue = dValue;} + if (dValue > _maxValue) {_maxValue = dValue;} + hasValue = true; + _hasData = true; + } + catch (Exception e) {} // ignore nulls and non-numbers + _pointHasData[i] = hasValue; + } + } + } + + /** + * @return name of field + */ + public String getLabel() + { + return _field.getName(); + } + + /** + * @return the field object + */ + public Field getField() { + return _field; + } + + /** + * @return key for message when no values present + */ + public String getNoDataKey() { + return "display.novalues"; + } +}