Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / src / net / sf / openrocket / preset / loader / BaseUnitColumnParser.java
diff --git a/core/src/net/sf/openrocket/preset/loader/BaseUnitColumnParser.java b/core/src/net/sf/openrocket/preset/loader/BaseUnitColumnParser.java
new file mode 100644 (file)
index 0000000..4cdb398
--- /dev/null
@@ -0,0 +1,53 @@
+package net.sf.openrocket.preset.loader;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import net.sf.openrocket.unit.Unit;
+import net.sf.openrocket.unit.UnitGroup;
+
+
+public abstract class BaseUnitColumnParser extends BaseColumnParser {
+
+       protected String unitHeader;
+       protected int unitIndex;
+       protected boolean unitConfigured;
+       
+       protected static Map<String,Unit> rocksimUnits;
+       
+       static {
+               rocksimUnits = new HashMap<String,Unit>();
+               rocksimUnits.put("0", UnitGroup.UNITS_LENGTH.getUnit("in"));
+               rocksimUnits.put("1", UnitGroup.UNITS_LENGTH.getUnit("mm"));
+       }
+
+       protected String mungeUnitNameString( String name ) {
+               String newString = name.toLowerCase(Locale.US);
+               return newString.replace(".", "");
+       }
+       
+       public BaseUnitColumnParser(String columnHeader, String unitHeader) {
+               super(columnHeader);
+               this.unitHeader = unitHeader.toLowerCase(Locale.US);
+       }
+
+       @Override
+       public void configure(String[] headers) {
+               // super configure will set columnIndex;
+               super.configure(headers);
+               
+               // This indicates the actual dimension column was found.
+               if ( isConfigured ) {
+                       // Look for the unit column proceeding it
+                       for( int i=columnIndex-1; i>=0; i-- ) {
+                               if ( unitHeader.equals(headers[i].toLowerCase(Locale.US))) {
+                                       unitConfigured = true;
+                                       unitIndex = i;
+                                       return;
+                               }
+                       }
+               }
+       }
+
+}