+++ /dev/null
-package tim.prune.data;
-
-/**
- * Class to hold either a horizontal speed or a vertical speed
- * including the units
- */
-public class Speed
-{
- private double _value = 0.0;
- private Unit _unit = null;
- private boolean _valid = false;
-
- /**
- * Constructor
- * @param inValue value
- * @param inUnit unit, such as m/s or km/h
- */
- public Speed(double inValue, Unit inUnit)
- {
- _value = inValue;
- _unit = inUnit;
- _valid = isValidUnit(inUnit);
- }
-
- /**
- * Constructor
- * @param inValue value as string
- * @param inUnit unit, such as m/s or km/h
- */
- public Speed(String inValue, Unit inUnit)
- {
- try {
- _value = Double.parseDouble(inValue);
- _unit = inUnit;
- _valid = isValidUnit(inUnit);
- }
- catch (Exception e)
- {
- _valid = false;
- }
- }
-
- /**
- * Check if the given unit is valid for a speed
- * @param inUnit unit
- * @return true if it's valid
- */
- private static boolean isValidUnit(Unit inUnit)
- {
- return inUnit != null && (inUnit == UnitSetLibrary.SPEED_UNITS_METRESPERSEC
- || inUnit == UnitSetLibrary.SPEED_UNITS_KMPERHOUR
- || inUnit == UnitSetLibrary.SPEED_UNITS_FEETPERSEC
- || inUnit == UnitSetLibrary.SPEED_UNITS_MILESPERHOUR
- || inUnit == UnitSetLibrary.SPEED_UNITS_KNOTS);
- }
-
- /**
- * Invert the speed value, for example when vertical speeds are positive downwards
- */
- public void invert() {
- if (_valid) _value = -_value;
- }
-
- /** @return the numerical value in whatever units they're in */
- public double getValue() {return _value;}
-
- /** @return the units they're in */
- public Unit getUnit() {return _unit;}
-
- /**
- * @return speed value in metres per second
- */
- public double getValueInMetresPerSec()
- {
- if (!_valid) return 0.0;
- return _value / _unit.getMultFactorFromStd();
- }
-
- /**
- * @param inUnit specified speed units
- * @return speed value in the specified units
- */
- public double getValue(Unit inUnit)
- {
- if (!_valid || !isValidUnit(inUnit)) return 0.0;
- return getValueInMetresPerSec() * inUnit.getMultFactorFromStd();
- }
-
- /** @return true if this is valid */
- public boolean isValid() {return _valid;}
-
- /**
- * Copy the values from the other object into this one, to make this one a clone
- * @param inOther other speed object
- */
- public void copyFrom(Speed inOther)
- {
- _value = inOther._value;
- _unit = inOther._unit;
- _valid = inOther._valid;
- }
-}