Revamp construction of ComponentPresets. Validation and data munging done in the...
[debian/openrocket] / core / src / net / sf / openrocket / database / ComponentPresetDao.java
1 package net.sf.openrocket.database;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.util.ArrayList;
6 import java.util.List;
7
8 import net.sf.openrocket.file.preset.PresetCSVReader;
9 import net.sf.openrocket.preset.ComponentPreset;
10 import net.sf.openrocket.preset.InvalidComponentPresetException;
11 import net.sf.openrocket.preset.TypedPropertyMap;
12 import net.sf.openrocket.util.BugException;
13
14 public class ComponentPresetDao {
15
16         private final List<ComponentPreset> templates = new ArrayList<ComponentPreset>();
17
18         // Package scope constructor to control creation pattern.
19         ComponentPresetDao() {}
20         
21         void initialize() throws IOException {
22                 
23                 InputStream is = ComponentPresetDao.class.getResourceAsStream("/datafiles/bodytubepresets.csv");
24                 
25                 PresetCSVReader parser = new PresetCSVReader(is);
26                 List<TypedPropertyMap> list = parser.parse();
27                 for( TypedPropertyMap o : list ) {
28                         try {
29                                 ComponentPreset preset = ComponentPreset.create(o);
30                                 this.insert(preset);
31                         } catch ( InvalidComponentPresetException ex ) {
32                                 throw new BugException( ex );
33                         }
34                 }
35         }
36         
37         public List<ComponentPreset> listAll() {
38                 return templates;
39         }
40         
41         public void insert( ComponentPreset preset ) {
42                 templates.add(preset);
43         }
44         
45 }