1 package net.sf.openrocket.preset.loader;
3 import net.sf.openrocket.gui.util.SwingPreferences;
4 import net.sf.openrocket.material.Material;
5 import net.sf.openrocket.preset.ComponentPreset;
6 import net.sf.openrocket.preset.xml.OpenRocketComponentSaver;
7 import net.sf.openrocket.startup.Application;
8 import net.sf.openrocket.startup.Startup;
9 import net.sf.openrocket.util.ArrayList;
12 import java.io.FileWriter;
13 import java.io.PrintStream;
14 import java.io.StringReader;
15 import java.util.List;
17 public class RocksimComponentFileTranslator {
19 private static PrintStream LOGGER = System.err;
21 private static void printUsage() {
22 LOGGER.println("RocksimComponentFileLoader <dir> <file>");
23 LOGGER.println("<dir> is base directory for a set of Rocksim component csv files");
24 LOGGER.println("<file> is where the orc file is written");
27 public static void main(String[] args) throws Exception {
29 // How to control logging?
31 if (args.length < 2 || args.length > 2) {
33 throw new IllegalArgumentException("Invalid Command Line Params");
36 List<ComponentPreset> allPresets = new ArrayList<ComponentPreset>();
38 LOGGER.println("Loading csv files from directory " + args[0]);
40 Startup.initializeLogging();
41 Application.setPreferences(new SwingPreferences());
43 MaterialHolder materialMap = loadAll(allPresets, new File(args[0]));
44 LOGGER.println("\tMarshalling to XML");
45 String xml = new OpenRocketComponentSaver().marshalToOpenRocketComponent(new ArrayList<Material>(materialMap.values()), allPresets);
47 // Try parsing the file
48 LOGGER.println("\tValidating XML");
49 // Throw away the result, we're just parsing for validation.
50 new OpenRocketComponentSaver().unmarshalFromOpenRocketComponent(new StringReader(xml));
52 LOGGER.println("\tWriting to file " + args[1]);
53 File outfile = new File(args[1]);
54 FileWriter fos = new FileWriter(outfile);
61 * Set a print stream as a logger. Defaults to System.err.
63 * @param ps a stream to log to
65 public static void setLogger(PrintStream ps) {
72 * Load all presets. The loaded presets are added to the list parameter. The loaded materials are returned in the
73 * MaterialHolder instance.
75 * @param theAllPresets a list of ComponentPreset that gets populated as the result of loading; must not be null on
78 * @return a holder of the materials loaded
80 public static MaterialHolder loadAll(final List<ComponentPreset> theAllPresets, File theBasePathToLoadFrom) {
81 MaterialLoader mats = new MaterialLoader(theBasePathToLoadFrom);
84 MaterialHolder materialMap = mats.getMaterialMap();
85 LOGGER.println("\tMaterial types loaded: " + materialMap.size());
88 BodyTubeLoader bts = new BodyTubeLoader(materialMap, theBasePathToLoadFrom);
90 theAllPresets.addAll(bts.getPresets());
91 LOGGER.println("\tBody Tubes loaded: " + bts.getPresets().size());
94 BulkHeadLoader bhs = new BulkHeadLoader(materialMap, theBasePathToLoadFrom);
96 theAllPresets.addAll(bhs.getPresets());
97 LOGGER.println("\tBulkheads loaded: " + bhs.getPresets().size());
100 CenteringRingLoader crs = new CenteringRingLoader(materialMap, theBasePathToLoadFrom);
102 theAllPresets.addAll(crs.getPresets());
103 LOGGER.println("\tCentering Rings loaded: " + crs.getPresets().size());
106 TubeCouplerLoader tcs = new TubeCouplerLoader(materialMap, theBasePathToLoadFrom);
108 theAllPresets.addAll(tcs.getPresets());
109 LOGGER.println("\tTube Couplers loaded: " + tcs.getPresets().size());
112 EngineBlockLoader ebs = new EngineBlockLoader(materialMap, theBasePathToLoadFrom);
114 theAllPresets.addAll(ebs.getPresets());
115 LOGGER.println("\tEngine Blocks loaded: " + ebs.getPresets().size());
118 NoseConeLoader ncs = new NoseConeLoader(materialMap, theBasePathToLoadFrom);
120 theAllPresets.addAll(ncs.getPresets());
121 LOGGER.println("\tNose Cones loaded: " + ncs.getPresets().size());
124 TransitionLoader trs = new TransitionLoader(materialMap, theBasePathToLoadFrom);
126 theAllPresets.addAll(trs.getPresets());
127 LOGGER.println("\tTransitions loaded: " + trs.getPresets().size());
130 LaunchLugLoader lls = new LaunchLugLoader(materialMap, theBasePathToLoadFrom);
132 theAllPresets.addAll(lls.getPresets());
133 LOGGER.println("\tLaunch Lugs loaded: " + lls.getPresets().size());
136 StreamerLoader sts = new StreamerLoader(materialMap, theBasePathToLoadFrom);
138 theAllPresets.addAll(sts.getPresets());
139 LOGGER.println("\tStreamers loaded: " + sts.getPresets().size());
142 ParachuteLoader pcs = new ParachuteLoader(materialMap, theBasePathToLoadFrom);
144 theAllPresets.addAll(pcs.getPresets());
145 LOGGER.println("Parachutes loaded: " + pcs.getPresets().size());