91530a302cd9c522916bf9152897b3a874652ddf
[debian/openrocket] / core / src / net / sf / openrocket / utils / RocksimConverter.java
1 package net.sf.openrocket.utils;
2
3 import net.sf.openrocket.document.OpenRocketDocument;
4 import net.sf.openrocket.document.StorageOptions;
5 import net.sf.openrocket.file.RocketLoadException;
6 import net.sf.openrocket.file.RocketLoader;
7 import net.sf.openrocket.file.RocketSaver;
8 import net.sf.openrocket.file.openrocket.OpenRocketSaver;
9 import net.sf.openrocket.gui.util.SwingPreferences;
10 import net.sf.openrocket.l10n.ResourceBundleTranslator;
11 import net.sf.openrocket.logging.LogLevel;
12 import net.sf.openrocket.startup.Application;
13
14 import java.io.File;
15 import java.io.IOException;
16 import java.util.Locale;
17
18 /**
19  * Utility that loads Rocksim file formats and saves them in ORK format.
20  * File is saved with the .rkt extension replaced with .ork.
21  * 
22  * Usage:
23  *   java -cp OpenRocket.jar net.sf.openrocket.utils.RocksimConverter <files...>
24  * 
25  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
26  */
27 public class RocksimConverter {
28         
29         
30         public static void main(String[] args) {
31                 
32                 setup();
33                 
34                 RocketLoader loader = new net.sf.openrocket.file.rocksim.importt.RocksimLoader();
35                 RocketSaver saver = new OpenRocketSaver();
36                 
37                 for (String inputFile : args) {
38                         System.out.println("Converting " + inputFile + "...");
39                         
40                         if (!inputFile.matches(".*\\.[rR][kK][tT]$")) {
41                                 System.err.println("ERROR: File '" + inputFile + "' does not end in .rkt, skipping.");
42                                 continue;
43                         }
44                         
45                         String outputFile = inputFile.replaceAll("\\.[rR][kK][tT]$", ".ork");
46                         
47                         File input = new File(inputFile);
48                         File output = new File(outputFile);
49                         
50                         if (!input.isFile()) {
51                                 System.err.println("ERROR: File '" + inputFile + "' does not exist, skipping.");
52                                 continue;
53                         }
54                         if (output.exists()) {
55                                 System.err.println("ERROR: File '" + outputFile + "' already exists, skipping.");
56                                 continue;
57                         }
58                         
59                         try {
60                                 StorageOptions opts = new StorageOptions();
61                                 opts.setCompressionEnabled(true);
62                                 opts.setSimulationTimeSkip(StorageOptions.SIMULATION_DATA_NONE);
63                                 opts.setExplicitlySet(true);
64                                 
65                                 OpenRocketDocument document = loader.load(input);
66                                 saver.save(output, document, opts);
67                                 
68                         } catch (RocketLoadException e) {
69                                 System.err.println("ERROR: Error loading '" + inputFile + "': " + e.getMessage());
70                         } catch (IOException e) {
71                                 System.err.println("ERROR: Error saving '" + outputFile + "': " + e.getMessage());
72                         }
73                         
74                 }
75                 
76         }
77         
78         private static void setup() {
79                 Locale.setDefault(Locale.US);
80                 Application.setBaseTranslator(new ResourceBundleTranslator("l10n.messages"));
81                 
82                 Application.setLogOutputLevel(LogLevel.WARN);
83                 Application.setPreferences(new SwingPreferences());
84         }
85 }