1 package net.sf.openrocket.file.rocksim.export;
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;
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;
31 @XmlRootElement(name = RocksimCommonConstants.BODY_TUBE)
32 @XmlAccessorType(XmlAccessType.FIELD)
33 public class BodyTubeDTO extends BasePartDTO {
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)
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>();
60 public BodyTubeDTO() {
63 public BodyTubeDTO(InnerTube inner) {
67 protected BodyTubeDTO(BodyTube bt) {
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());
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));
109 public double getOD() {
113 public void setOD(double theOd) {
117 public double getID() {
121 public void setID(double theId) {
125 public int getMotorMount() {
129 public void setMotorMount(boolean motorMount) {
138 public void setMotorMount(int theMotorMount) {
139 isMotorMount = theMotorMount;
142 public double getMotorDia() {
146 public void setMotorDia(double theMotorDia) {
147 motorDia = theMotorDia;
150 public double getEngineOverhang() {
151 return engineOverhang;
154 public void setEngineOverhang(double theEngineOverhang) {
155 engineOverhang = theEngineOverhang;
158 public int getInsideTube() {
162 public void setInsideTube(boolean inside) {
170 public void setInsideTube(int theInsideTube) {
171 isInsideTube = theInsideTube;
174 public List<BasePartDTO> getAttachedParts() {
175 return attachedParts;
178 public void addAttachedParts(BasePartDTO thePart) {
179 attachedParts.add(thePart);