001package armyc2.c5isr.renderer.utilities;
002
003/**
004 * Units of Measure to be used with {@link MilStdAttributes#DistanceUnits}
005 * Default is meters.
006 */
007public class DistanceUnit
008{
009    private static final double FEET_PER_METER = 3.28084;
010    private static final double FLIGHT_LEVEL_PER_METER = 0.0328084; // hundreds of feet
011    public final double conversionFactor;
012    public final String label;
013
014    public DistanceUnit(double conversionFactor, String label){
015        this.conversionFactor = conversionFactor;
016        this.label = label;
017    }
018
019    public static DistanceUnit parse(String distanceUnitText){
020        if(distanceUnitText == null){
021            return null;
022        }
023        String[] parts = distanceUnitText.split(",");
024        if(parts.length != 2){
025            return null;
026        }
027        double conversionFactor = Double.parseDouble(parts[0].trim());
028        String label = parts[1].trim();
029
030        return new DistanceUnit(conversionFactor, label);
031    }
032
033    public String toAttribute(){
034        return conversionFactor + "," + label;
035    }
036
037    public static DistanceUnit METERS = new DistanceUnit(1, "M");
038    public static DistanceUnit FEET = new DistanceUnit(FEET_PER_METER, "FT");
039    public static DistanceUnit FLIGHT_LEVEL = new DistanceUnit(FLIGHT_LEVEL_PER_METER, "FL");
040}