X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Fdata%2FAltitude.java;h=495e84491746f4c1c011cb4b0d64cb1c7b0bde91;hp=78a98e04f93fba650517cc79201c8d322c379fa6;hb=54b9d8bc8f0025ccf97a67d9dd217ef1f9cf082f;hpb=52bf9e8686c916be37a26a0b75340393d4478b05 diff --git a/tim/prune/data/Altitude.java b/tim/prune/data/Altitude.java index 78a98e0..495e844 100644 --- a/tim/prune/data/Altitude.java +++ b/tim/prune/data/Altitude.java @@ -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