DGP - cleanup
authorrodinia814 <rodinia814@180e2498-e6e9-4542-8430-84ac67f01cd8>
Mon, 9 Jan 2012 04:18:59 +0000 (04:18 +0000)
committerrodinia814 <rodinia814@180e2498-e6e9-4542-8430-84ac67f01cd8>
Mon, 9 Jan 2012 04:18:59 +0000 (04:18 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@321 180e2498-e6e9-4542-8430-84ac67f01cd8

core/src/net/sf/openrocket/file/rocksim/export/AbstractTransitionDTO.java
core/src/net/sf/openrocket/file/rocksim/export/BasePartDTO.java
core/src/net/sf/openrocket/file/rocksim/export/RocksimSaver.java
core/src/net/sf/openrocket/file/rocksim/export/TubeCouplerDTO.java

index ce5db24195e3ff63b1d40706aaa0916667dcb917..10386bbede5073b22d5a7443fb6a75f688e02224 100644 (file)
@@ -2,16 +2,35 @@ package net.sf.openrocket.file.rocksim.export;
 
 import net.sf.openrocket.file.rocksim.importt.RocksimHandler;
 import net.sf.openrocket.file.rocksim.importt.RocksimNoseConeCode;
+import net.sf.openrocket.rocketcomponent.BodyTube;
+import net.sf.openrocket.rocketcomponent.Bulkhead;
+import net.sf.openrocket.rocketcomponent.CenteringRing;
+import net.sf.openrocket.rocketcomponent.EngineBlock;
+import net.sf.openrocket.rocketcomponent.FinSet;
+import net.sf.openrocket.rocketcomponent.FreeformFinSet;
+import net.sf.openrocket.rocketcomponent.InnerTube;
+import net.sf.openrocket.rocketcomponent.MassObject;
+import net.sf.openrocket.rocketcomponent.Parachute;
+import net.sf.openrocket.rocketcomponent.RocketComponent;
 import net.sf.openrocket.rocketcomponent.Transition;
+import net.sf.openrocket.rocketcomponent.TubeCoupler;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
+ * A common ancestor class for nose cones and transitions.  This class is responsible for adapting an OpenRocket
+ * Transition to a Rocksim Transition.
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 public class AbstractTransitionDTO extends BasePartDTO {
+
     @XmlElement(name = "ShapeCode")
     private int shapeCode = 1;
     @XmlElement(name = "ConstructionType")
@@ -21,10 +40,29 @@ public class AbstractTransitionDTO extends BasePartDTO {
     @XmlElement(name = "ShapeParameter")
     private double shapeParameter = 0d;
 
+    @XmlElementWrapper(name = "AttachedParts")
+    @XmlElementRefs({
+            @XmlElementRef(name = "BodyTube", type = BodyTubeDTO.class),
+            @XmlElementRef(name = "BodyTube", type = InnerBodyTubeDTO.class),
+            @XmlElementRef(name = "FinSet", type = FinSetDTO.class),
+            @XmlElementRef(name = "CustomFinSet", type = CustomFinSetDTO.class),
+            @XmlElementRef(name = "Ring", type = CenteringRingDTO.class),
+            @XmlElementRef(name = "Streamer", type = StreamerDTO.class),
+            @XmlElementRef(name = "Parachute", type = ParachuteDTO.class),
+            @XmlElementRef(name = "MassObject", type = MassObjectDTO.class)})
+    List<BasePartDTO> attachedParts = new ArrayList<BasePartDTO>();
+
+    /**
+     * Default constructor.
+     */
     protected AbstractTransitionDTO() {
-
     }
 
+    /**
+     * Conversion constructor.
+     *
+     * @param nc  the OpenRocket component to convert
+     */
     protected AbstractTransitionDTO(Transition nc) {
         super(nc);
         setConstructionType(nc.isFilled() ? 0 : 1);
@@ -38,6 +76,33 @@ public class AbstractTransitionDTO extends BasePartDTO {
 
         setWallThickness(nc.getThickness() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
 
+        List<RocketComponent> children = nc.getChildren();
+        for (int i = 0; i < children.size(); i++) {
+            RocketComponent rocketComponents = children.get(i);
+            if (rocketComponents instanceof InnerTube) {
+                attachedParts.add(new InnerBodyTubeDTO((InnerTube) rocketComponents));
+            } else if (rocketComponents instanceof BodyTube) {
+                attachedParts.add(new BodyTubeDTO((BodyTube) rocketComponents));
+            } else if (rocketComponents instanceof Transition) {
+                attachedParts.add(new TransitionDTO((Transition) rocketComponents));
+            } else if (rocketComponents instanceof EngineBlock) {
+                attachedParts.add(new EngineBlockDTO((EngineBlock) rocketComponents));
+            } else if (rocketComponents instanceof TubeCoupler) {
+                attachedParts.add(new TubeCouplerDTO((TubeCoupler) rocketComponents));
+            } else if (rocketComponents instanceof CenteringRing) {
+                attachedParts.add(new CenteringRingDTO((CenteringRing) rocketComponents));
+            } else if (rocketComponents instanceof Bulkhead) {
+                attachedParts.add(new BulkheadDTO((Bulkhead) rocketComponents));
+            } else if (rocketComponents instanceof Parachute) {
+                attachedParts.add(new ParachuteDTO((Parachute) rocketComponents));
+            } else if (rocketComponents instanceof MassObject) {
+                attachedParts.add(new MassObjectDTO((MassObject) rocketComponents));
+            } else if (rocketComponents instanceof FreeformFinSet) {
+                attachedParts.add(new CustomFinSetDTO((FreeformFinSet) rocketComponents));
+            } else if (rocketComponents instanceof FinSet) {
+                attachedParts.add(new FinSetDTO((FinSet) rocketComponents));
+            }
+        }
     }
 
     public int getShapeCode() {
index a76eb45c00aa37f6842cee6cf3f69bf4292b612a..8c79575e3face833b52fb1f71013bfdeff1877e3 100644 (file)
@@ -17,6 +17,7 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 
 /**
+ * The base class for all OpenRocket to Rocksim conversions.
  */
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -53,9 +54,17 @@ public abstract class BasePartDTO {
     @XmlElement(name = "FinishCode")
     private int finishCode = 0;
 
+    /**
+     * Default constructor.
+     */
     protected BasePartDTO() {
     }
 
+    /**
+     * Copy constructor of sorts, that performs all common conversions for components.
+     *
+     * @param ec
+     */
     protected BasePartDTO(RocketComponent ec) {
         setCalcCG(ec.getCG().x * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
         setCalcMass(ec.getComponentMass() * RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS);
@@ -117,7 +126,6 @@ public abstract class BasePartDTO {
                 material = material.substring(BaseHandler.ROCKSIM_MATERIAL_PREFIX.length());
             }
             setMaterial(material);
-
         }
     }
 
index 3950062553dacdf4751cc7216b6e44754917078a..6ead563917785fb8dc69f088e5c3b4a9cc21a764 100644 (file)
@@ -22,11 +22,20 @@ import java.io.StringWriter;
 import java.util.List;
 
 /**
+ * This class is responsible for converting an OpenRocket design to a Rocksim design.
  */
 public class RocksimSaver extends RocketSaver {
 
+    /** The logger. */
     private static final LogHelper log = Application.getLogger();
 
+    /**
+     * This method marshals an OpenRocketDocument (OR design) to Rocksim-compliant XML.
+     *
+     * @param doc  the OR design
+     *
+     * @return Rocksim-compliant XML
+     */
     public String marshalToRocksim(OpenRocketDocument doc) {
 
         try {
@@ -60,6 +69,13 @@ public class RocksimSaver extends RocketSaver {
         return marshalToRocksim(doc).length();
     }
 
+    /**
+     * Root conversion method.  It iterates over all subcomponents.
+     *
+     * @param doc  the OR design
+     *
+     * @return a corresponding Rocksim representation
+     */
     private RocksimDocumentDTO toRocksimDocumentDTO(OpenRocketDocument doc) {
         RocksimDocumentDTO rsd = new RocksimDocumentDTO();
 
index 52d995e3ec9d8be0ff4a1e7d584a7d1246f99c3f..5293f1986e781b91869288f2dc037255eec158dc 100644 (file)
@@ -7,11 +7,17 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
 /**
+ * Conversion DTO for a TubeCoupler.  TubeCoupler's are represented as Rings in Rocksim.
  */
 @XmlRootElement(name = "Ring")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class TubeCouplerDTO extends CenteringRingDTO {
 
+    /**
+     * Constructor.
+     *
+     * @param tc an OR TubeCoupler
+     */
     public TubeCouplerDTO(TubeCoupler tc) {
         super(tc);
         setUsageCode(UsageCode.TubeCoupler);