1 package net.sf.openrocket.file.preset;
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.io.InputStreamReader;
6 import java.util.ArrayList;
9 import net.sf.openrocket.preset.ComponentPreset;
10 import net.sf.openrocket.preset.TypedKey;
11 import net.sf.openrocket.rocketcomponent.BodyTube;
12 import au.com.bytecode.opencsv.CSVReader;
14 public class PresetCSVReader {
16 private InputStream is;
17 private ColumnDefinition[] columns;
19 public PresetCSVReader( InputStream is ) {
23 public List<ComponentPreset> parse() throws IOException {
25 List<ComponentPreset> templates = new ArrayList<ComponentPreset>();
27 InputStreamReader r = new InputStreamReader(is);
29 // Create the CSV reader. Use comma separator and double-quote escaping.
30 CSVReader reader = new CSVReader(r,',','"');
32 String[] headers = reader.readNext();
33 if (headers == null || headers.length == 0) {
37 columns = new ColumnDefinition[headers.length];
38 for( int i = 0; i< headers.length; i++ ) {
39 String h = headers[i];
40 if( "Manufacturer".equals(h) ) {
41 columns[i] = new ColumnDefinition.Manufactuer();
42 } else if ( "PartNumber".equals(h) ) {
43 columns[i] = new ColumnDefinition.PartNumber();
44 } else if ( "Type".equals(h) ) {
45 columns[i] = new ColumnDefinition.Type();
47 TypedKey key = ComponentPreset.keyMap.get(h);
49 throw new RuntimeException("Invalid parameter key " + h + " in file");
51 columns[i] = new ColumnDefinition.Parameter( key );
56 while( (line = reader.readNext()) != null ) {
57 ComponentPreset preset = new ComponentPreset();
58 for( int i = 0; i< headers.length; i++ ) {
59 if ( i > line.length ) {
62 String value = line[i];
63 columns[i].setProperty(preset, value);
65 templates.add(preset);