committed Doug's Rocksim loader
[debian/openrocket] / src / net / sf / openrocket / file / rocksim / RocksimFinishCode.java
diff --git a/src/net/sf/openrocket/file/rocksim/RocksimFinishCode.java b/src/net/sf/openrocket/file/rocksim/RocksimFinishCode.java
new file mode 100644 (file)
index 0000000..cf1748b
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * RocksimFinishCode.java
+ */
+package net.sf.openrocket.file.rocksim;
+
+import net.sf.openrocket.rocketcomponent.ExternalComponent;
+
+/**
+ * Models the finish of a component.
+ */
+enum RocksimFinishCode {
+    POLISHED(0, ExternalComponent.Finish.POLISHED),
+    GLOSS(1, ExternalComponent.Finish.SMOOTH),
+    MATT(2, ExternalComponent.Finish.NORMAL),
+    UNFINISHED(3, ExternalComponent.Finish.UNFINISHED);
+
+    /** The Rocksim code (from XML). */
+    private final int ordinal;
+    
+    /** The corresponding OpenRocket finish. */
+    private final ExternalComponent.Finish finish;
+
+    /**
+     * Constructor.
+     * 
+     * @param idx   the Rocksim enum value
+     * @param theFinish  the OpenRocket finish
+     */
+    private RocksimFinishCode(int idx, ExternalComponent.Finish theFinish) {
+        ordinal = idx;
+        finish = theFinish;
+    }
+
+    /**
+     * Get the OpenRocket finish.
+     * 
+     * @return a Finish instance
+     */
+    public ExternalComponent.Finish asOpenRocket() {
+        return finish;
+    }
+
+    /**
+     * Lookup an instance of this enum from a Rocksim value.
+     * 
+     * @param rocksimFinishCode  the Rocksim value
+     * 
+     * @return an instance of this enum; Defaults to MATT
+     */
+    public static RocksimFinishCode fromCode(int rocksimFinishCode) {
+        RocksimFinishCode[] values = values();
+        for (RocksimFinishCode value : values) {
+            if (value.ordinal == rocksimFinishCode) {
+                return value;
+            }
+        }
+        return MATT; //Default
+    }
+
+}
+