DGP - updated Rocksim export to support clusters
[debian/openrocket] / core / src / net / sf / openrocket / file / rocksim / export / BodyTubeDTO.java
1 package net.sf.openrocket.file.rocksim.export;
2
3 import net.sf.openrocket.file.rocksim.RocksimCommonConstants;
4 import net.sf.openrocket.rocketcomponent.BodyTube;
5 import net.sf.openrocket.rocketcomponent.Bulkhead;
6 import net.sf.openrocket.rocketcomponent.CenteringRing;
7 import net.sf.openrocket.rocketcomponent.EngineBlock;
8 import net.sf.openrocket.rocketcomponent.FinSet;
9 import net.sf.openrocket.rocketcomponent.FreeformFinSet;
10 import net.sf.openrocket.rocketcomponent.InnerTube;
11 import net.sf.openrocket.rocketcomponent.LaunchLug;
12 import net.sf.openrocket.rocketcomponent.MassObject;
13 import net.sf.openrocket.rocketcomponent.Parachute;
14 import net.sf.openrocket.rocketcomponent.RocketComponent;
15 import net.sf.openrocket.rocketcomponent.Streamer;
16 import net.sf.openrocket.rocketcomponent.Transition;
17 import net.sf.openrocket.rocketcomponent.TubeCoupler;
18
19 import javax.xml.bind.annotation.XmlAccessType;
20 import javax.xml.bind.annotation.XmlAccessorType;
21 import javax.xml.bind.annotation.XmlElement;
22 import javax.xml.bind.annotation.XmlElementRef;
23 import javax.xml.bind.annotation.XmlElementRefs;
24 import javax.xml.bind.annotation.XmlElementWrapper;
25 import javax.xml.bind.annotation.XmlRootElement;
26 import java.util.ArrayList;
27 import java.util.List;
28
29 /**
30  */
31 @XmlRootElement(name = RocksimCommonConstants.BODY_TUBE)
32 @XmlAccessorType(XmlAccessType.FIELD)
33 public class BodyTubeDTO extends BasePartDTO {
34
35     @XmlElement(name = RocksimCommonConstants.OD)
36     private double od = 0d;
37     @XmlElement(name = RocksimCommonConstants.ID)
38     private double id = 0d;
39     @XmlElement(name = RocksimCommonConstants.IS_MOTOR_MOUNT)
40     private int isMotorMount = 0;
41     @XmlElement(name = RocksimCommonConstants.MOTOR_DIA)
42     private double motorDia = 0d;
43     @XmlElement(name = RocksimCommonConstants.ENGINE_OVERHANG)
44     private double engineOverhang = 0d;
45     @XmlElement(name = RocksimCommonConstants.IS_INSIDE_TUBE)
46     private int isInsideTube = 0;
47     @XmlElementWrapper(name = RocksimCommonConstants.ATTACHED_PARTS)
48     @XmlElementRefs({
49             @XmlElementRef(name = RocksimCommonConstants.BODY_TUBE, type = BodyTubeDTO.class),
50             @XmlElementRef(name = RocksimCommonConstants.BODY_TUBE, type = InnerBodyTubeDTO.class),
51             @XmlElementRef(name = RocksimCommonConstants.RING, type = CenteringRingDTO.class),
52             @XmlElementRef(name = RocksimCommonConstants.LAUNCH_LUG, type = LaunchLugDTO.class),
53             @XmlElementRef(name = RocksimCommonConstants.FIN_SET, type = FinSetDTO.class),
54             @XmlElementRef(name = RocksimCommonConstants.CUSTOM_FIN_SET, type = CustomFinSetDTO.class),
55             @XmlElementRef(name = RocksimCommonConstants.STREAMER, type = StreamerDTO.class),
56             @XmlElementRef(name = RocksimCommonConstants.PARACHUTE, type = ParachuteDTO.class),
57             @XmlElementRef(name = RocksimCommonConstants.MASS_OBJECT, type = MassObjectDTO.class)})
58     List<BasePartDTO> attachedParts = new ArrayList<BasePartDTO>();
59
60     public BodyTubeDTO() {
61     }
62
63     public BodyTubeDTO(InnerTube inner) {
64         super(inner);
65     }
66
67     protected BodyTubeDTO(BodyTube bt) {
68         super(bt);
69
70         setEngineOverhang(bt.getMotorOverhang() * RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_LENGTH);
71         setID(bt.getInnerRadius() * RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_RADIUS);
72         setOD(bt.getOuterRadius() * RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_RADIUS);
73         setMotorDia((bt.getMotorMountDiameter() / 2) * RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_RADIUS);
74         setMotorMount(bt.isMotorMount());
75
76         List<RocketComponent> children = bt.getChildren();
77         for (int i = 0; i < children.size(); i++) {
78             RocketComponent rocketComponents = children.get(i);
79             if (rocketComponents instanceof InnerTube) {
80                 attachedParts.add(new InnerBodyTubeDTO((InnerTube) rocketComponents));
81             } else if (rocketComponents instanceof BodyTube) {
82                 attachedParts.add(new BodyTubeDTO((BodyTube) rocketComponents));
83             } else if (rocketComponents instanceof Transition) {
84                 attachedParts.add(new TransitionDTO((Transition) rocketComponents));
85             } else if (rocketComponents instanceof EngineBlock) {
86                 attachedParts.add(new EngineBlockDTO((EngineBlock) rocketComponents));
87             } else if (rocketComponents instanceof TubeCoupler) {
88                 attachedParts.add(new TubeCouplerDTO((TubeCoupler) rocketComponents));
89             } else if (rocketComponents instanceof CenteringRing) {
90                 attachedParts.add(new CenteringRingDTO((CenteringRing) rocketComponents));
91             } else if (rocketComponents instanceof Bulkhead) {
92                 attachedParts.add(new BulkheadDTO((Bulkhead) rocketComponents));
93             } else if (rocketComponents instanceof LaunchLug) {
94                 attachedParts.add(new LaunchLugDTO((LaunchLug) rocketComponents));
95             } else if (rocketComponents instanceof Streamer) {
96                 attachedParts.add(new StreamerDTO((Streamer) rocketComponents));
97             } else if (rocketComponents instanceof Parachute) {
98                 attachedParts.add(new ParachuteDTO((Parachute) rocketComponents));
99             } else if (rocketComponents instanceof MassObject) {
100                 attachedParts.add(new MassObjectDTO((MassObject) rocketComponents));
101             } else if (rocketComponents instanceof FreeformFinSet) {
102                 attachedParts.add(new CustomFinSetDTO((FreeformFinSet) rocketComponents));
103             } else if (rocketComponents instanceof FinSet) {
104                 attachedParts.add(new FinSetDTO((FinSet) rocketComponents));
105             }
106         }
107     }
108
109     public double getOD() {
110         return od;
111     }
112
113     public void setOD(double theOd) {
114         od = theOd;
115     }
116
117     public double getID() {
118         return id;
119     }
120
121     public void setID(double theId) {
122         id = theId;
123     }
124
125     public int getMotorMount() {
126         return isMotorMount;
127     }
128
129     public void setMotorMount(boolean motorMount) {
130         if (motorMount) {
131             isMotorMount = 1;
132         } else {
133             isMotorMount = 0;
134         }
135
136     }
137
138     public void setMotorMount(int theMotorMount) {
139         isMotorMount = theMotorMount;
140     }
141
142     public double getMotorDia() {
143         return motorDia;
144     }
145
146     public void setMotorDia(double theMotorDia) {
147         motorDia = theMotorDia;
148     }
149
150     public double getEngineOverhang() {
151         return engineOverhang;
152     }
153
154     public void setEngineOverhang(double theEngineOverhang) {
155         engineOverhang = theEngineOverhang;
156     }
157
158     public int getInsideTube() {
159         return isInsideTube;
160     }
161
162     public void setInsideTube(boolean inside) {
163         if (inside) {
164             isInsideTube = 1;
165         } else {
166             isInsideTube = 0;
167         }
168     }
169
170     public void setInsideTube(int theInsideTube) {
171         isInsideTube = theInsideTube;
172     }
173
174     public List<BasePartDTO> getAttachedParts() {
175         return attachedParts;
176     }
177
178     public void addAttachedParts(BasePartDTO thePart) {
179         attachedParts.add(thePart);
180     }
181 }