1 package net.sf.openrocket.preset.loader;
4 import java.io.FileWriter;
5 import java.io.StringReader;
9 import net.sf.openrocket.gui.util.SwingPreferences;
10 import net.sf.openrocket.material.Material;
11 import net.sf.openrocket.preset.ComponentPreset;
12 import net.sf.openrocket.preset.xml.OpenRocketComponentSaver;
13 import net.sf.openrocket.startup.Application;
14 import net.sf.openrocket.startup.Startup;
15 import net.sf.openrocket.util.ArrayList;
17 public class RocksimComponentFileTranslator {
19 private static void printUsage() {
20 System.err.println("RocksimComponentFileLoader <dir> <file>");
21 System.err.println("<dir> is base directory for a set of Rocksim component csv files");
22 System.err.println("<file> is where the orc file is written");
25 public static void main(String[] args) throws Exception {
27 // How to control logging?
29 if ( args.length < 2 || args.length > 2 ) {
31 throw new IllegalArgumentException("Invalid Command Line Params");
34 List<ComponentPreset> allPresets = new ArrayList<ComponentPreset>();
36 RocksimComponentFileLoader.basePath = args[0];
38 System.err.println("Loading csv files from directory " + args[0]);
40 Startup.initializeLogging();
41 Application.setPreferences(new SwingPreferences());
43 MaterialLoader mats = new MaterialLoader();
46 MaterialHolder materialMap = mats.getMaterialMap();
47 System.err.println("\tMaterial types loaded: " + materialMap.size());
50 BodyTubeLoader bts = new BodyTubeLoader(materialMap);
52 allPresets.addAll(bts.getPresets());
53 System.err.println("\tBody Tubes loaded: " + bts.getPresets().size());
56 BulkHeadLoader bhs = new BulkHeadLoader(materialMap);
58 allPresets.addAll(bhs.getPresets());
59 System.err.println("\tBulkheads loaded: " + bhs.getPresets().size());
62 CenteringRingLoader crs = new CenteringRingLoader(materialMap);
64 allPresets.addAll(crs.getPresets());
65 System.err.println("\tCentering Rings loaded: " + crs.getPresets().size());
68 TubeCouplerLoader tcs = new TubeCouplerLoader(materialMap);
70 allPresets.addAll(tcs.getPresets());
71 System.err.println("\tTube Couplers loaded: " + tcs.getPresets().size());
74 EngineBlockLoader ebs = new EngineBlockLoader(materialMap);
76 allPresets.addAll(ebs.getPresets());
77 System.err.println("\tEngine Blocks loaded: " + ebs.getPresets().size());
80 NoseConeLoader ncs = new NoseConeLoader(materialMap);
82 allPresets.addAll(ncs.getPresets());
83 System.err.println("\tNose Cones loaded: " + ncs.getPresets().size());
86 TransitionLoader trs = new TransitionLoader(materialMap);
88 allPresets.addAll(trs.getPresets());
89 System.err.println("\tTransitions loaded: " + trs.getPresets().size());
92 LaunchLugLoader lls = new LaunchLugLoader(materialMap);
94 allPresets.addAll(lls.getPresets());
95 System.err.println("\tLaunch Lugs loaded: " + lls.getPresets().size());
98 StreamerLoader sts = new StreamerLoader(materialMap);
100 allPresets.addAll(sts.getPresets());
101 System.err.println("\tStreamers loaded: " + sts.getPresets().size());
104 ParachuteLoader pcs = new ParachuteLoader(materialMap);
106 allPresets.addAll(pcs.getPresets());
107 System.err.println("Parachutes loaded: " + pcs.getPresets().size());
109 System.err.println("\tMarshalling to XML");
110 String xml = new OpenRocketComponentSaver().marshalToOpenRocketComponent(new ArrayList<Material>(materialMap.values()), allPresets);
112 // Try parsing the file
113 System.err.println("\tValidating XML");
114 List<ComponentPreset> presets = new OpenRocketComponentSaver().unmarshalFromOpenRocketComponent(new StringReader(xml));
116 System.err.println("\tWriting to file " + args[1]);
117 File outfile = new File(args[1]);
118 FileWriter fos = new FileWriter(outfile);