Implement MaterialHolder, a container for the Material objects loaded during processi...
[debian/openrocket] / core / src / net / sf / openrocket / preset / loader / RocksimComponentFileTranslator.java
1 package net.sf.openrocket.preset.loader;
2
3 import java.io.File;
4 import java.io.FileWriter;
5 import java.io.StringReader;
6 import java.util.List;
7 import java.util.Map;
8
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;
16
17 public class RocksimComponentFileTranslator {
18
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");
23         }
24
25         public static void main(String[] args) throws Exception {
26                 
27                 // How to control logging?
28                 
29                 if ( args.length < 2 || args.length > 2 ) {
30                         printUsage();
31                         throw new IllegalArgumentException("Invalid Command Line Params");
32                 }
33
34                 List<ComponentPreset> allPresets = new ArrayList<ComponentPreset>();
35
36                 RocksimComponentFileLoader.basePath = args[0];
37                 
38                 System.err.println("Loading csv files from directory " + args[0]);
39                 
40                 Startup.initializeLogging();
41                 Application.setPreferences(new SwingPreferences());
42
43                 MaterialLoader mats = new MaterialLoader();
44                 mats.load();
45
46                 MaterialHolder materialMap = mats.getMaterialMap();
47                 System.err.println("\tMaterial types loaded: " + materialMap.size());
48                 
49                 {
50                         BodyTubeLoader bts = new BodyTubeLoader(materialMap);
51                         bts.load();
52                         allPresets.addAll(bts.getPresets());
53                         System.err.println("\tBody Tubes loaded: " + bts.getPresets().size());
54                 }
55                 {
56                         BulkHeadLoader bhs = new BulkHeadLoader(materialMap);
57                         bhs.load();
58                         allPresets.addAll(bhs.getPresets());
59                         System.err.println("\tBulkheads loaded: " + bhs.getPresets().size());
60                 }
61                 {
62                         CenteringRingLoader crs = new CenteringRingLoader(materialMap);
63                         crs.load();
64                         allPresets.addAll(crs.getPresets());
65                         System.err.println("\tCentering Rings loaded: " + crs.getPresets().size());
66                 }
67                 {
68                         TubeCouplerLoader tcs = new TubeCouplerLoader(materialMap);
69                         tcs.load();
70                         allPresets.addAll(tcs.getPresets());
71                         System.err.println("\tTube Couplers loaded: " + tcs.getPresets().size());
72                 }
73                 {
74                         EngineBlockLoader ebs = new EngineBlockLoader(materialMap);
75                         ebs.load();
76                         allPresets.addAll(ebs.getPresets());
77                         System.err.println("\tEngine Blocks loaded: " + ebs.getPresets().size());
78                 }
79                 {
80                         NoseConeLoader ncs = new NoseConeLoader(materialMap);
81                         ncs.load();
82                         allPresets.addAll(ncs.getPresets());
83                         System.err.println("\tNose Cones loaded: " + ncs.getPresets().size());
84                 }
85                 {
86                         TransitionLoader trs = new TransitionLoader(materialMap);
87                         trs.load();
88                         allPresets.addAll(trs.getPresets());
89                         System.err.println("\tTransitions loaded: " + trs.getPresets().size());
90                 }
91                 {
92                         LaunchLugLoader lls = new LaunchLugLoader(materialMap);
93                         lls.load();
94                         allPresets.addAll(lls.getPresets());
95                         System.err.println("\tLaunch Lugs loaded: " + lls.getPresets().size());
96                 }
97                 {
98                         StreamerLoader sts = new StreamerLoader(materialMap);
99                         sts.load();
100                         allPresets.addAll(sts.getPresets());
101                         System.err.println("\tStreamers loaded: " + sts.getPresets().size());
102                 }
103                 {
104                         ParachuteLoader pcs = new ParachuteLoader(materialMap);
105                         pcs.load();
106                         allPresets.addAll(pcs.getPresets());
107                         System.err.println("Parachutes loaded: " + pcs.getPresets().size());
108                 }
109                 System.err.println("\tMarshalling to XML");
110                 String xml = new OpenRocketComponentSaver().marshalToOpenRocketComponent(new ArrayList<Material>(materialMap.values()), allPresets);
111                 
112                 // Try parsing the file
113                 System.err.println("\tValidating XML");
114                 List<ComponentPreset> presets = new OpenRocketComponentSaver().unmarshalFromOpenRocketComponent(new StringReader(xml));
115                 
116                 System.err.println("\tWriting to file " + args[1]);
117                 File outfile = new File(args[1]);
118                 FileWriter fos = new FileWriter(outfile);
119                 fos.write(xml);
120                 fos.flush();
121                 fos.close();
122                 
123         }
124
125 }