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.NoseCone;
6 import net.sf.openrocket.rocketcomponent.RocketComponent;
7 import net.sf.openrocket.rocketcomponent.Stage;
8 import net.sf.openrocket.rocketcomponent.Transition;
9 import net.sf.openrocket.util.ArrayList;
11 import javax.xml.bind.annotation.XmlAccessType;
12 import javax.xml.bind.annotation.XmlAccessorType;
13 import javax.xml.bind.annotation.XmlElementRef;
14 import javax.xml.bind.annotation.XmlElementRefs;
15 import java.util.List;
18 * Placeholder for a Rocksim Stage.
20 @XmlAccessorType(XmlAccessType.FIELD)
21 public class StageDTO {
24 @XmlElementRef(name = RocksimCommonConstants.BODY_TUBE, type = BodyTubeDTO.class),
25 @XmlElementRef(name = RocksimCommonConstants.NOSE_CONE, type = NoseConeDTO.class),
26 @XmlElementRef(name = RocksimCommonConstants.TRANSITION, type = TransitionDTO.class)
28 private List<BasePartDTO> externalPart = new ArrayList<BasePartDTO>();
31 * Default constructor.
36 public StageDTO(Stage stage, RocketDesignDTO design, int stageNumber) {
38 if (stageNumber == 3) {
39 if (stage.isMassOverridden()) {
40 design.setStage3Mass(stage.getMass() * RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_MASS);
41 design.setUseKnownMass(1);
43 if (stage.isCGOverridden()) {
44 design.setStage3CG(stage.getOverrideCGX() * RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_LENGTH);
48 if (stageNumber == 2) {
49 if (stage.isMassOverridden()) {
50 design.setStage2Mass(stage.getMass() * RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_MASS);
51 design.setUseKnownMass(1);
53 if (stage.isCGOverridden()) {
54 design.setStage2CGAlone(stage.getOverrideCGX() * RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_LENGTH);
58 if (stageNumber == 1) {
59 if (stage.isMassOverridden()) {
60 design.setStage1Mass(stage.getMass() * RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_MASS);
61 design.setUseKnownMass(1);
63 if (stage.isCGOverridden()) {
64 design.setStage1CGAlone(stage.getOverrideCGX() * RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_LENGTH);
68 List<RocketComponent> children = stage.getChildren();
69 for (int i = 0; i < children.size(); i++) {
70 RocketComponent rocketComponents = children.get(i);
71 if (rocketComponents instanceof NoseCone) {
72 addExternalPart(toNoseConeDTO((NoseCone) rocketComponents));
73 } else if (rocketComponents instanceof BodyTube) {
74 addExternalPart(toBodyTubeDTO((BodyTube) rocketComponents));
75 } else if (rocketComponents instanceof Transition) {
76 addExternalPart(toTransitionDTO((Transition) rocketComponents));
81 public List<BasePartDTO> getExternalPart() {
85 public void addExternalPart(BasePartDTO theExternalPartDTO) {
86 externalPart.add(theExternalPartDTO);
89 private NoseConeDTO toNoseConeDTO(NoseCone nc) {
90 return new NoseConeDTO(nc);
93 private BodyTubeDTO toBodyTubeDTO(BodyTube bt) {
94 return new BodyTubeDTO(bt);
97 private TransitionDTO toTransitionDTO(Transition tran) {
98 return new TransitionDTO(tran);