Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / src / net / sf / openrocket / preset / loader / BaseComponentLoader.java
diff --git a/core/src/net/sf/openrocket/preset/loader/BaseComponentLoader.java b/core/src/net/sf/openrocket/preset/loader/BaseComponentLoader.java
new file mode 100644 (file)
index 0000000..d178209
--- /dev/null
@@ -0,0 +1,50 @@
+package net.sf.openrocket.preset.loader;
+
+import net.sf.openrocket.preset.ComponentPreset;
+import net.sf.openrocket.preset.ComponentPresetFactory;
+import net.sf.openrocket.preset.InvalidComponentPresetException;
+import net.sf.openrocket.preset.TypedPropertyMap;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class BaseComponentLoader extends RocksimComponentFileLoader {
+
+       List<ComponentPreset> presets;
+
+       public BaseComponentLoader(MaterialHolder materials, File theBasePathToLoadFrom) {
+               super(theBasePathToLoadFrom);
+               presets = new ArrayList<ComponentPreset>();
+
+               fileColumns.add( new ManufacturerColumnParser() );
+               fileColumns.add( new StringColumnParser("Part No.", ComponentPreset.PARTNO));
+               fileColumns.add( new StringColumnParser("Desc.", ComponentPreset.DESCRIPTION));
+               fileColumns.add(new MaterialColumnParser(materials));
+               fileColumns.add(new MassColumnParser("Mass","Mass units"));
+
+       }
+
+       protected abstract ComponentPreset.Type getComponentPresetType();
+
+       public List<ComponentPreset> getPresets() {
+               return presets;
+       }
+
+       @Override
+       protected void postProcess(TypedPropertyMap props) {
+               try {
+            //Some Rocksim files don't contain description, so set it to the part no when not available.
+            if (!props.containsKey(ComponentPreset.DESCRIPTION)) {
+                props.put(ComponentPreset.DESCRIPTION, props.get(ComponentPreset.PARTNO));
+            }
+                       props.put(ComponentPreset.TYPE, getComponentPresetType());
+                       ComponentPreset preset = ComponentPresetFactory.create(props);
+                       presets.add(preset);
+               } catch ( InvalidComponentPresetException ex ) {
+                       System.err.println(ex.getMessage());
+                       System.err.println(props);
+               }
+       }
+
+}
\ No newline at end of file