Added special processing for rocksim csv component files when the mass is specified...
[debian/openrocket] / core / src / net / sf / openrocket / preset / loader / BaseComponentLoader.java
1 package net.sf.openrocket.preset.loader;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.Map;
6
7 import net.sf.openrocket.material.Material;
8 import net.sf.openrocket.preset.ComponentPreset;
9 import net.sf.openrocket.preset.ComponentPresetFactory;
10 import net.sf.openrocket.preset.InvalidComponentPresetException;
11 import net.sf.openrocket.preset.TypedPropertyMap;
12
13 public abstract class BaseComponentLoader extends RocksimComponentFileLoader {
14
15         List<ComponentPreset> presets;
16
17         public BaseComponentLoader(Map<String, Material> materials) {
18                 super();
19                 presets = new ArrayList<ComponentPreset>();
20
21                 fileColumns.add( new ManufacturerColumnParser() );
22                 fileColumns.add( new StringColumnParser("Part No.", ComponentPreset.PARTNO));
23                 fileColumns.add( new StringColumnParser("Desc.", ComponentPreset.DESCRIPTION));
24                 fileColumns.add(new MaterialColumnParser(materials));
25                 fileColumns.add(new MassColumnParser("Mass","Mass units"));
26
27         }
28
29         protected abstract ComponentPreset.Type getComponentPresetType();
30         
31         public List<ComponentPreset> getPresets() {
32                 return presets;
33         }
34         
35         @Override
36         protected void postProcess(TypedPropertyMap props) {
37                 try {
38                         props.put(ComponentPreset.TYPE, getComponentPresetType());
39                         ComponentPreset preset = ComponentPresetFactory.create(props);
40                         presets.add(preset);
41                 } catch ( InvalidComponentPresetException ex ) {
42                         System.err.println(ex.getMessage());
43                         System.err.println(props);
44                 }
45         }
46
47 }