]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/data/Altitude.java
Version 7, February 2009
[GpsPrune.git] / tim / prune / data / Altitude.java
index 78a98e04f93fba650517cc79201c8d322c379fa6..495e84491746f4c1c011cb4b0d64cb1c7b0bde91 100644 (file)
@@ -7,20 +7,25 @@ public class Altitude
 {
        private boolean _valid = false;
        private int _value = 0;
-       private int _format = -1;
+       private Format _format = Format.NO_FORMAT;
        private String _stringValue = null;
 
        /** Altitude formats */
-       public static final int FORMAT_NONE   = -1;
-       public static final int FORMAT_METRES = 0;
-       public static final int FORMAT_FEET = 1;
+       public enum Format {
+               /** No format */
+               NO_FORMAT,
+               /** Metres */
+               METRES,
+               /** Feet */
+               FEET
+       }
 
        /** Constants for conversion */
        private static final double CONVERT_FEET_TO_METRES = 0.3048;
        private static final double CONVERT_METRES_TO_FEET = 3.28084;
 
        /** Constant for no altitude value */
-       public static final Altitude NONE = new Altitude(null, FORMAT_NONE);
+       public static final Altitude NONE = new Altitude(null, Format.NO_FORMAT);
 
 
        /**
@@ -28,7 +33,7 @@ public class Altitude
         * @param inString string to parse
         * @param inFormat format of altitude, either metres or feet
         */
-       public Altitude(String inString, int inFormat)
+       public Altitude(String inString, Format inFormat)
        {
                if (inString != null && !inString.equals(""))
                {
@@ -49,7 +54,7 @@ public class Altitude
         * @param inValue int value of altitude
         * @param inFormat format of altitude, either metres or feet
         */
-       public Altitude(int inValue, int inFormat)
+       public Altitude(int inValue, Format inFormat)
        {
                _value = inValue;
                _format = inFormat;
@@ -78,7 +83,7 @@ public class Altitude
        /**
         * @return format of number
         */
-       public int getFormat()
+       public Format getFormat()
        {
                return _format;
        }
@@ -89,14 +94,14 @@ public class Altitude
         * @param inFormat desired format, either FORMAT_METRES or FORMAT_FEET
         * @return value as an int
         */
-       public int getValue(int inFormat)
+       public int getValue(Format inFormat)
        {
                // Note possible rounding errors here if converting to/from units
                if (inFormat == _format)
                        return _value;
-               if (inFormat == FORMAT_METRES)
+               if (inFormat == Format.METRES)
                        return (int) (_value * CONVERT_FEET_TO_METRES);
-               if (inFormat == FORMAT_FEET)
+               if (inFormat == Format.FEET)
                        return (int) (_value * CONVERT_METRES_TO_FEET);
                return _value;
        }
@@ -106,8 +111,9 @@ public class Altitude
         * @param inFormat specified format
         * @return string value, if possible the original one
         */
-       public String getStringValue(int inFormat)
+       public String getStringValue(Format inFormat)
        {
+               if (!_valid) {return "";}
                if (inFormat == _format && _stringValue != null && !_stringValue.equals("")) {
                        return _stringValue;
                }
@@ -140,9 +146,9 @@ public class Altitude
        {
                // Check if altitudes are valid
                if (inStart == null || inEnd == null || !inStart.isValid() || !inEnd.isValid())
-                       return new Altitude(null, FORMAT_NONE);
+                       return Altitude.NONE;
                // Use altitude format of first point
-               int altFormat = inStart.getFormat();
+               Format altFormat = inStart.getFormat();
                int startValue = inStart.getValue();
                int endValue = inEnd.getValue(altFormat);
                // interpolate between start and end