From a58d57a7d1b93913386f1e25a7265260b8abbd73 Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Fri, 27 Apr 2012 19:06:54 +0000 Subject: [PATCH] Added special processing for rocksim csv component files when the mass is specified as 0. In this case, we "reject" the mass and assume it is to be computed based on density. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@627 180e2498-e6e9-4542-8430-84ac67f01cd8 --- .../preset/loader/BaseComponentLoader.java | 2 +- .../preset/loader/MassColumnParser.java | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 core/src/net/sf/openrocket/preset/loader/MassColumnParser.java diff --git a/core/src/net/sf/openrocket/preset/loader/BaseComponentLoader.java b/core/src/net/sf/openrocket/preset/loader/BaseComponentLoader.java index 6f397094..12a9404f 100644 --- a/core/src/net/sf/openrocket/preset/loader/BaseComponentLoader.java +++ b/core/src/net/sf/openrocket/preset/loader/BaseComponentLoader.java @@ -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 index 00000000..611eabfb --- /dev/null +++ b/core/src/net/sf/openrocket/preset/loader/MassColumnParser.java @@ -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); + } + +} -- 2.47.2