1 package net.sf.openrocket.preset.xml;
3 import java.util.ArrayList;
6 import javax.xml.bind.annotation.XmlAccessType;
7 import javax.xml.bind.annotation.XmlAccessorType;
8 import javax.xml.bind.annotation.XmlElement;
9 import javax.xml.bind.annotation.XmlElementRef;
10 import javax.xml.bind.annotation.XmlElementRefs;
11 import javax.xml.bind.annotation.XmlElementWrapper;
12 import javax.xml.bind.annotation.XmlRootElement;
14 import net.sf.openrocket.material.Material;
15 import net.sf.openrocket.preset.ComponentPreset;
16 import net.sf.openrocket.preset.InvalidComponentPresetException;
19 * The real 'root' element in an XML document.
21 @XmlRootElement(name = "OpenRocketComponent")
22 @XmlAccessorType(XmlAccessType.FIELD)
23 public class OpenRocketComponentDTO {
25 @XmlElement(name = "Version")
26 private final String version = "0.1";
28 @XmlElementWrapper(name = "Materials")
29 @XmlElement(name = "Material")
30 List<MaterialDTO> materials = new ArrayList<MaterialDTO>();
32 @XmlElementWrapper(name = "Components")
34 @XmlElementRef(name = "BodyTubes", type = BodyTubeDTO.class),
35 @XmlElementRef(name = "TubeCouplers", type = TubeCouplerDTO.class),
36 @XmlElementRef(name = "NoseCones", type = NoseConeDTO.class),
37 @XmlElementRef(name = "Transitions", type = TransitionDTO.class),
38 @XmlElementRef(name = "BulkHeads", type = BulkHeadDTO.class),
39 @XmlElementRef(name = "CenteringRings", type = CenteringRingDTO.class),
40 @XmlElementRef(name = "EngineBlocks", type = EngineBlockDTO.class),
41 @XmlElementRef(name = "LaunchLugs", type = LaunchLugDTO.class),
42 @XmlElementRef(name = "Streamers", type = StreamerDTO.class),
43 @XmlElementRef(name = "Parachutes", type = ParachuteDTO.class)})
44 private List<BaseComponentDTO> components = new ArrayList<BaseComponentDTO>();
46 public OpenRocketComponentDTO() {
49 public OpenRocketComponentDTO(final List<MaterialDTO> theMaterials, final List<BaseComponentDTO> theComponents) {
50 materials = theMaterials;
51 components = theComponents;
54 public List<MaterialDTO> getMaterials() {
58 public void addMaterial(final MaterialDTO theMaterial) {
59 materials.add(theMaterial);
62 public void setMaterials(final List<MaterialDTO> theMaterials) {
63 materials = theMaterials;
66 public List<BaseComponentDTO> getComponents() {
70 public void addComponent(final BaseComponentDTO theComponent) {
71 components.add(theComponent);
74 public void setComponents(final List<BaseComponentDTO> theComponents) {
75 components = theComponents;
78 public List<ComponentPreset> asComponentPresets() throws InvalidComponentPresetException {
79 List<ComponentPreset> result = new ArrayList<ComponentPreset>(components.size());
80 for (int i = 0; i < components.size(); i++) {
81 result.add(components.get(i).asComponentPreset(materials));
86 public List<Material> asMaterialList() {
87 List<Material> result = new ArrayList<Material>( materials.size() );
88 for( MaterialDTO material : materials ) {
89 result.add( material.asMaterial() );