create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / preset / loader / BaseComponentLoader.java
1 package net.sf.openrocket.preset.loader;
2
3 import net.sf.openrocket.preset.ComponentPreset;
4 import net.sf.openrocket.preset.ComponentPresetFactory;
5 import net.sf.openrocket.preset.InvalidComponentPresetException;
6 import net.sf.openrocket.preset.TypedPropertyMap;
7
8 import java.io.File;
9 import java.util.ArrayList;
10 import java.util.List;
11
12 public abstract class BaseComponentLoader extends RocksimComponentFileLoader {
13
14         List<ComponentPreset> presets;
15
16         public BaseComponentLoader(MaterialHolder materials, File theBasePathToLoadFrom) {
17                 super(theBasePathToLoadFrom);
18                 presets = new ArrayList<ComponentPreset>();
19
20                 fileColumns.add( new ManufacturerColumnParser() );
21                 fileColumns.add( new StringColumnParser("Part No.", ComponentPreset.PARTNO));
22                 fileColumns.add( new StringColumnParser("Desc.", ComponentPreset.DESCRIPTION));
23                 fileColumns.add(new MaterialColumnParser(materials));
24                 fileColumns.add(new MassColumnParser("Mass","Mass units"));
25
26         }
27
28         protected abstract ComponentPreset.Type getComponentPresetType();
29
30         public List<ComponentPreset> getPresets() {
31                 return presets;
32         }
33
34         @Override
35         protected void postProcess(TypedPropertyMap props) {
36                 try {
37             //Some Rocksim files don't contain description, so set it to the part no when not available.
38             if (!props.containsKey(ComponentPreset.DESCRIPTION)) {
39                 props.put(ComponentPreset.DESCRIPTION, props.get(ComponentPreset.PARTNO));
40             }
41                         props.put(ComponentPreset.TYPE, getComponentPresetType());
42                         ComponentPreset preset = ComponentPresetFactory.create(props);
43                         presets.add(preset);
44                 } catch ( InvalidComponentPresetException ex ) {
45                         System.err.println(ex.getMessage());
46                         System.err.println(props);
47                 }
48         }
49
50 }