1 package net.sf.openrocket.preset.loader;
3 import net.sf.openrocket.preset.TypedKey;
4 import net.sf.openrocket.preset.TypedPropertyMap;
5 import net.sf.openrocket.unit.Unit;
6 import net.sf.openrocket.unit.UnitGroup;
8 public class DoubleUnitColumnParser extends BaseUnitColumnParser {
10 private TypedKey<Double> propKey;
12 public DoubleUnitColumnParser(String columnHeader, String unitHeader,
13 TypedKey<Double> propKey) {
14 super(columnHeader, unitHeader);
15 this.propKey = propKey;
19 protected void doParse(String columnData, String[] data, TypedPropertyMap props) {
21 if (columnData == null || "".equals(columnData) ) {
24 double value = Double.valueOf(columnData);
26 if ( unitConfigured ) {
27 String unitName = data[unitIndex];
29 Unit unit = rocksimUnits.get(unitName);
31 if ( unitName == null || "" .equals(unitName) || "?".equals(unitName)) {
32 // Hmm no data... Lets assume SI
33 if ( propKey.getUnitGroup() == UnitGroup.UNITS_LENGTH ) {
34 unit = UnitGroup.UNITS_LENGTH.getUnit("in");
36 unit= UnitGroup.UNITS_MASS.getUnit("oz");
39 unitName = super.mungeUnitNameString(unitName);
40 UnitGroup group = propKey.getUnitGroup();
41 unit = group.getUnit(unitName);
45 value = unit.fromUnit(value);
48 props.put(propKey, value);
50 catch ( NumberFormatException nex) {
52 catch ( IllegalArgumentException iae) {