package com.billkuker.rocketry.motorsim;\r
\r
import java.text.DecimalFormat;\r
+import java.text.NumberFormat;\r
import java.util.HashSet;\r
import java.util.Set;\r
+import java.util.prefs.Preferences;\r
\r
import javax.measure.quantity.Pressure;\r
import javax.measure.quantity.Quantity;\r
NEWTON_SECOND\r
});\r
\r
- public static UnitPreference preference = SI;\r
+ private static UnitPreference preference = SI;\r
+\r
+ static {\r
+ Preferences prefs = Preferences.userNodeForPackage(RocketScience.class);\r
+ String p = prefs.get("PreferedUnits", "SI");\r
+ preference = UnitPreference.valueOf(p);\r
+ }\r
+ \r
+ public static UnitPreference getUnitPreference(){\r
+ return preference;\r
+ }\r
+ \r
+ public static void setUnitPreference( final UnitPreference up ){\r
+ preference = up;\r
+ Preferences prefs = Preferences.userNodeForPackage(RocketScience.class);\r
+ prefs.put("PreferedUnits", up.toString());\r
+ }\r
\r
protected Set<Unit<?>> units = new HashSet<Unit<?>>();\r
\r
- @SuppressWarnings("unchecked")\r
- UnitPreference( Unit u[] ){\r
- for ( Unit uu : u )\r
+ UnitPreference( Unit<?> u[] ){\r
+ for ( Unit<?> uu : u )\r
units.add(uu);\r
}\r
\r
@SuppressWarnings("unchecked")\r
- public Unit getPreferredUnit(Unit u){\r
+ public <T extends Quantity> Unit<T> getPreferredUnit(Unit<T> u){\r
if ( units.contains(u) )\r
return u;\r
- for( Unit ret : units ){\r
+ for( Unit<?> ret : units ){\r
if ( ret.isCompatible(u) ){\r
- return ret;\r
+ return (Unit<T>) ret;\r
}\r
}\r
return u;\r
}\r
}\r
\r
- @SuppressWarnings("unchecked")\r
- public static <T extends Quantity> String approx(Amount<T> a) {\r
+ public static <T extends Quantity> String ammountToString(Amount<T> a) {\r
+ final NumberFormat nf = new DecimalFormat("##########.###");\r
+ return nf.format(a.doubleValue(a.getUnit())) + " " + a.getUnit();\r
+ }\r
+ \r
+ public static <T extends Quantity> String ammountToRoundedString(Amount<T> a) {\r
if (a == null)\r
return "NULL";\r
Unit<T> u = RocketScience.UnitPreference.preference.getPreferredUnit(a\r