moving to core/
[debian/openrocket] / core / src / net / sf / openrocket / file / rocksim / export / BasePartDTO.java
1 package net.sf.openrocket.file.rocksim.export;
2
3 import net.sf.openrocket.file.rocksim.importt.BaseHandler;
4 import net.sf.openrocket.file.rocksim.importt.RocksimDensityType;
5 import net.sf.openrocket.file.rocksim.importt.RocksimFinishCode;
6 import net.sf.openrocket.file.rocksim.importt.RocksimHandler;
7 import net.sf.openrocket.file.rocksim.importt.RocksimLocationMode;
8 import net.sf.openrocket.rocketcomponent.ExternalComponent;
9 import net.sf.openrocket.rocketcomponent.RecoveryDevice;
10 import net.sf.openrocket.rocketcomponent.RocketComponent;
11 import net.sf.openrocket.rocketcomponent.StructuralComponent;
12
13 import javax.xml.bind.annotation.XmlAccessType;
14 import javax.xml.bind.annotation.XmlAccessorType;
15 import javax.xml.bind.annotation.XmlElement;
16 import javax.xml.bind.annotation.XmlRootElement;
17
18 /**
19  */
20 @XmlRootElement
21 @XmlAccessorType(XmlAccessType.FIELD)
22 public abstract class BasePartDTO {
23
24     @XmlElement(name = "KnownMass")
25     private Double knownMass = 0d;
26     @XmlElement(name = "Density")
27     private double density = 0d;
28     @XmlElement(name = "Material")
29     private String material = "";
30     @XmlElement(name = "Name")
31     private String name = "";
32     @XmlElement(name = "KnownCG")
33     private Double knownCG = null;
34     @XmlElement(name = "UseKnownCG")
35     private int useKnownCG = 1;
36     @XmlElement(name = "Xb")
37     private double xb = 0;
38     @XmlElement(name = "CalcMass")
39     private double calcMass = 0d;
40     @XmlElement(name = "CalcCG")
41     private double calcCG = 0d;
42     @XmlElement(name = "DensityType")
43     private int densityType = 0;
44     @XmlElement(name = "RadialLoc")
45     private String radialLoc = "0.";
46     @XmlElement(name = "RadialAngle")
47     private double radialAngle = 0;
48     @XmlElement(name = "LocationMode")
49     private int locationMode = 0;
50     @XmlElement(name = "Len")
51     private double len = 0d;
52     @XmlElement(name = "FinishCode")
53     private int finishCode = 0;
54
55     protected BasePartDTO() {
56     }
57
58     protected BasePartDTO(RocketComponent ec) {
59         setCalcCG(ec.getCG().x * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
60         setCalcMass(ec.getComponentMass() * RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS);
61         setKnownCG(ec.getOverrideCGX() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
62         setKnownMass(ec.getOverrideMass() * RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS);
63         setLen(ec.getLength() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
64         setUseKnownCG(ec.isCGOverridden() || ec.isMassOverridden() ? 1 : 0);
65         setName(ec.getName());
66
67         setXb(ec.getPositionValue() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
68         if (ec instanceof ExternalComponent) {
69             ExternalComponent comp = (ExternalComponent) ec;
70             setLocationMode(RocksimLocationMode.toCode(comp.getRelativePosition()));
71
72             if (comp.getRelativePosition().equals(RocketComponent.Position.BOTTOM)) {
73                 setXb(-1 * getXb());
74             }
75             setDensity(comp.getMaterial().getDensity() * RocksimHandler.ROCKSIM_TO_OPENROCKET_BULK_DENSITY);
76             setDensityType(RocksimDensityType.toCode(comp.getMaterial().getType()));
77             String material = comp.getMaterial().getName();
78             if (material.startsWith(BaseHandler.ROCKSIM_MATERIAL_PREFIX)) {
79                 material = material.substring(BaseHandler.ROCKSIM_MATERIAL_PREFIX.length());
80             }
81             setMaterial(material);
82
83             setFinishCode(RocksimFinishCode.toCode(comp.getFinish()));
84         }
85         else if (ec instanceof StructuralComponent) {
86             StructuralComponent comp = (StructuralComponent) ec;
87
88             setLocationMode(RocksimLocationMode.toCode(comp.getRelativePosition()));
89             if (comp.getRelativePosition().equals(RocketComponent.Position.BOTTOM)) {
90                 setXb(-1 * getXb());
91             }
92             setDensity(comp.getMaterial().getDensity() * RocksimHandler.ROCKSIM_TO_OPENROCKET_BULK_DENSITY);
93             setDensityType(RocksimDensityType.toCode(comp.getMaterial().getType()));
94             String material = comp.getMaterial().getName();
95             if (material.startsWith(BaseHandler.ROCKSIM_MATERIAL_PREFIX)) {
96                 material = material.substring(BaseHandler.ROCKSIM_MATERIAL_PREFIX.length());
97             }
98             setMaterial(material);
99         }
100         else if (ec instanceof RecoveryDevice) {
101             RecoveryDevice comp = (RecoveryDevice) ec;
102
103             setLocationMode(RocksimLocationMode.toCode(comp.getRelativePosition()));
104             if (comp.getRelativePosition().equals(RocketComponent.Position.BOTTOM)) {
105                 setXb(-1 * getXb());
106             }
107             setDensity(comp.getMaterial().getDensity() * RocksimHandler.ROCKSIM_TO_OPENROCKET_SURFACE_DENSITY);
108             setDensityType(RocksimDensityType.toCode(comp.getMaterial().getType()));
109             String material = comp.getMaterial().getName();
110             if (material.startsWith(BaseHandler.ROCKSIM_MATERIAL_PREFIX)) {
111                 material = material.substring(BaseHandler.ROCKSIM_MATERIAL_PREFIX.length());
112             }
113             setMaterial(material);
114
115         }
116     }
117
118     public Double getKnownMass() {
119         return knownMass;
120     }
121
122     public void setKnownMass(Double theKnownMass) {
123         knownMass = theKnownMass;
124     }
125
126     public double getDensity() {
127         return density;
128     }
129
130     public void setDensity(double theDensity) {
131         density = theDensity;
132     }
133
134     public String getMaterial() {
135         return material;
136     }
137
138     public void setMaterial(String theMaterial) {
139         material = theMaterial;
140     }
141
142     public String getName() {
143         return name;
144     }
145
146     public void setName(String theName) {
147         name = theName;
148     }
149
150     public Double getKnownCG() {
151         return knownCG;
152     }
153
154     public void setKnownCG(Double theKnownCG) {
155         knownCG = theKnownCG;
156     }
157
158     public int getUseKnownCG() {
159         return useKnownCG;
160     }
161
162     public void setUseKnownCG(int theUseKnownCG) {
163         useKnownCG = theUseKnownCG;
164     }
165
166     public double getXb() {
167         return xb;
168     }
169
170     public void setXb(double theXb) {
171         xb = theXb;
172     }
173
174     public double getCalcMass() {
175         return calcMass;
176     }
177
178     public void setCalcMass(double theCalcMass) {
179         calcMass = theCalcMass;
180     }
181
182     public double getCalcCG() {
183         return calcCG;
184     }
185
186     public void setCalcCG(double theCalcCG) {
187         calcCG = theCalcCG;
188     }
189
190     public int getDensityType() {
191         return densityType;
192     }
193
194     public void setDensityType(int theDensityType) {
195         densityType = theDensityType;
196     }
197
198     public String getRadialLoc() {
199         return radialLoc;
200     }
201
202     public void setRadialLoc(String theRadialLoc) {
203         radialLoc = theRadialLoc;
204     }
205
206     public double getRadialAngle() {
207         return radialAngle;
208     }
209
210     public void setRadialAngle(double theRadialAngle) {
211         radialAngle = theRadialAngle;
212     }
213
214     public int getLocationMode() {
215         return locationMode;
216     }
217
218     public void setLocationMode(int theLocationMode) {
219         locationMode = theLocationMode;
220     }
221
222     public double getLen() {
223         return len;
224     }
225
226     public void setLen(double theLen) {
227         len = theLen;
228     }
229
230     public int getFinishCode() {
231         return finishCode;
232     }
233
234     public void setFinishCode(int theFinishCode) {
235         finishCode = theFinishCode;
236     }
237
238 }