create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / preset / xml / OpenRocketComponentDTO.java
1 package net.sf.openrocket.preset.xml;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
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;
13
14 import net.sf.openrocket.material.Material;
15 import net.sf.openrocket.preset.ComponentPreset;
16 import net.sf.openrocket.preset.InvalidComponentPresetException;
17
18 /**
19  * The real 'root' element in an XML document.
20  */
21 @XmlRootElement(name = "OpenRocketComponent")
22 @XmlAccessorType(XmlAccessType.FIELD)
23 public class OpenRocketComponentDTO {
24
25     @XmlElement(name = "Version")
26     private final String version = "0.1";
27
28     @XmlElementWrapper(name = "Materials")
29     @XmlElement(name = "Material")
30     List<MaterialDTO> materials = new ArrayList<MaterialDTO>();
31
32     @XmlElementWrapper(name = "Components")
33     @XmlElementRefs({
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>();
45
46     public OpenRocketComponentDTO() {
47     }
48
49     public OpenRocketComponentDTO(final List<MaterialDTO> theMaterials, final List<BaseComponentDTO> theComponents) {
50         materials = theMaterials;
51         components = theComponents;
52     }
53
54     public List<MaterialDTO> getMaterials() {
55         return materials;
56     }
57
58     public void addMaterial(final MaterialDTO theMaterial) {
59         materials.add(theMaterial);
60     }
61
62     public void setMaterials(final List<MaterialDTO> theMaterials) {
63         materials = theMaterials;
64     }
65
66     public List<BaseComponentDTO> getComponents() {
67         return components;
68     }
69
70     public void addComponent(final BaseComponentDTO theComponent) {
71         components.add(theComponent);
72     }
73
74     public void setComponents(final List<BaseComponentDTO> theComponents) {
75         components = theComponents;
76     }
77
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));
82         }
83         return result;
84     }
85     
86     public List<Material> asMaterialList() {
87         List<Material> result = new ArrayList<Material>( materials.size() );
88         for( MaterialDTO material : materials ) {
89                 result.add( material.asMaterial() );
90         }
91         return result;
92     }
93 }