From 573706323ffba5a0749532e940ae5e1ed8cb59bd Mon Sep 17 00:00:00 2001 From: Kevin Ruland 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. --- .../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 6f3970942..12a9404f1 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 000000000..611eabfbf --- /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); + } + +}