Added special processing for rocksim csv component files when the mass is specified...
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Fri, 27 Apr 2012 19:06:54 +0000 (19:06 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Fri, 27 Apr 2012 19:06:54 +0000 (19:06 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@627 180e2498-e6e9-4542-8430-84ac67f01cd8

core/src/net/sf/openrocket/preset/loader/BaseComponentLoader.java
core/src/net/sf/openrocket/preset/loader/MassColumnParser.java [new file with mode: 0644]

index 6f3970942c2bb3f5ab5e6d679efb8acbafe8c620..12a9404f1bb54ced47a4d50ec2715d3665debf2d 100644 (file)
@@ -22,7 +22,7 @@ public abstract class BaseComponentLoader extends RocksimComponentFileLoader {
                fileColumns.add( new StringColumnParser("Part No.", ComponentPreset.PARTNO));
                fileColumns.add( new StringColumnParser("Desc.", ComponentPreset.DESCRIPTION));
                fileColumns.add(new MaterialColumnParser(materials));
-               fileColumns.add(new DoubleUnitColumnParser("Mass","Mass units",ComponentPreset.MASS));
+               fileColumns.add(new MassColumnParser("Mass","Mass units"));
 
        }
 
diff --git a/core/src/net/sf/openrocket/preset/loader/MassColumnParser.java b/core/src/net/sf/openrocket/preset/loader/MassColumnParser.java
new file mode 100644 (file)
index 0000000..611eabf
--- /dev/null
@@ -0,0 +1,30 @@
+package net.sf.openrocket.preset.loader;
+
+import net.sf.openrocket.preset.ComponentPreset;
+import net.sf.openrocket.preset.TypedPropertyMap;
+
+/**
+ * Special DoubleUnitColumnParser for Mass column.  Here we assume that if a mass of 0 is
+ * specified in the csv, then we should not put a mass explicitly in the preset but instead
+ * rely on the density to compute a mass value.
+ *
+ */
+public class MassColumnParser extends DoubleUnitColumnParser {
+
+       public MassColumnParser(String columnHeader, String unitHeader) {
+               super(columnHeader, unitHeader, ComponentPreset.MASS);
+       }
+
+       @Override
+       protected void doParse(String columnData, String[] data, TypedPropertyMap props) {
+               if ( columnData == null || "".equals(columnData.trim())) {
+                       return;
+               }
+               double d = Double.valueOf(columnData);
+               if ( d == 0.0 ) {
+                       return;
+               }
+               super.doParse(columnData, data, props);
+       }
+
+}