create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / preset / loader / DoubleUnitColumnParser.java
1 package net.sf.openrocket.preset.loader;
2
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;
7
8 public class DoubleUnitColumnParser extends BaseUnitColumnParser {
9
10         private TypedKey<Double> propKey;
11
12         public DoubleUnitColumnParser(String columnHeader, String unitHeader,
13                         TypedKey<Double> propKey) {
14                 super(columnHeader, unitHeader);
15                 this.propKey = propKey;
16         }
17
18         @Override
19         protected void doParse(String columnData, String[] data, TypedPropertyMap props) {
20                 try {
21                         if (columnData == null || "".equals(columnData) ) {
22                                 return;
23                         }
24                         double value = Double.valueOf(columnData);
25
26                         if ( unitConfigured ) {
27                                 String unitName = data[unitIndex];
28
29                                 Unit unit = rocksimUnits.get(unitName);
30                                 if ( unit == null ) {
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");
35                                                 } else {
36                                                         unit= UnitGroup.UNITS_MASS.getUnit("oz");
37                                                 }
38                                         } else {
39                                                 unitName = super.mungeUnitNameString(unitName);
40                                                 UnitGroup group = propKey.getUnitGroup();
41                                                 unit = group.getUnit(unitName);
42                                         }
43                                 }
44
45                                 value = unit.fromUnit(value);
46                         }
47
48                         props.put(propKey, value);
49                 }
50                 catch ( NumberFormatException nex) {
51                 }
52         catch ( IllegalArgumentException iae) {
53         }
54         }
55
56
57 }