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