package net.sf.openrocket.preset.loader; import net.sf.openrocket.preset.TypedKey; import net.sf.openrocket.preset.TypedPropertyMap; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.StringUtil; public class DoubleUnitColumnParser extends BaseUnitColumnParser { private TypedKey<Double> propKey; public DoubleUnitColumnParser(String columnHeader, String unitHeader, TypedKey<Double> propKey) { super(columnHeader, unitHeader); this.propKey = propKey; } @Override protected void doParse(String columnData, String[] data, TypedPropertyMap props) { try { if (StringUtil.isEmpty(columnData)) { return; } double value = Double.valueOf(columnData); if ( unitConfigured ) { String unitName = data[unitIndex]; Unit unit = rocksimUnits.get(unitName); if ( unit == null ) { if ( unitName == null || "" .equals(unitName) || "?".equals(unitName)) { // Hmm no data... Lets assume SI if ( propKey.getUnitGroup() == UnitGroup.UNITS_LENGTH ) { unit = UnitGroup.UNITS_LENGTH.getUnit("in"); } else { unit= UnitGroup.UNITS_MASS.getUnit("oz"); } } else { unitName = super.mungeUnitNameString(unitName); UnitGroup group = propKey.getUnitGroup(); unit = group.getUnit(unitName); } } value = unit.fromUnit(value); } props.put(propKey, value); } catch ( NumberFormatException nex) { } catch ( IllegalArgumentException iae) { } } }