unmarshal XML (*.orc) to ComponentPresets.
[debian/openrocket] / core / src / net / sf / openrocket / preset / xml / TransitionDTO.java
1
2 package net.sf.openrocket.preset.xml;
3
4 import net.sf.openrocket.preset.ComponentPreset;
5 import net.sf.openrocket.preset.ComponentPresetFactory;
6 import net.sf.openrocket.preset.InvalidComponentPresetException;
7 import net.sf.openrocket.preset.TypedPropertyMap;
8
9 import javax.xml.bind.annotation.XmlAccessType;
10 import javax.xml.bind.annotation.XmlAccessorType;
11 import javax.xml.bind.annotation.XmlElement;
12 import javax.xml.bind.annotation.XmlRootElement;
13 import java.util.List;
14
15 /**
16  * Transition preset XML handler.
17  */
18 @XmlRootElement(name = "Transition")
19 @XmlAccessorType(XmlAccessType.FIELD)
20 public class TransitionDTO extends BaseComponentDTO {
21
22     @XmlElement(name = "Shape")
23     private ShapeDTO shape;
24
25     @XmlElement(name = "ForeOutsideDiameter")
26     private double foreOutsideDiameter;
27     @XmlElement(name = "ForeShoulderDiameter")
28     private double foreShoulderDiameter;
29     @XmlElement(name = "ForeShoulderLength")
30     private double foreShoulderLength;
31
32     @XmlElement(name = "AftOutsideDiameter")
33     private double aftOutsideDiameter;
34     @XmlElement(name = "AftShoulderDiameter")
35     private double aftShoulderDiameter;
36     @XmlElement(name = "AftShoulderLength")
37     private double aftShoulderLength;
38
39     @XmlElement(name = "Length")
40     private double length;
41
42
43     /**
44      * Default constructor.
45      */
46     public TransitionDTO() {
47     }
48
49     /**
50      * Most-useful constructor that maps a Transition preset to a TransitionDTO.
51      *
52      * @param thePreset  the preset
53      *
54      * @throws net.sf.openrocket.util.BugException thrown if the expected transition keys are not in the preset
55      */
56     public TransitionDTO(final ComponentPreset thePreset) {
57         super(thePreset);
58         setShape(ShapeDTO.asDTO(thePreset.get(ComponentPreset.SHAPE)));
59         setForeOutsideDiameter(thePreset.get(ComponentPreset.FORE_OUTER_DIAMETER));
60         setForeShoulderDiameter(thePreset.get(ComponentPreset.FORE_SHOULDER_DIAMETER));
61         setForeShoulderLength(thePreset.get(ComponentPreset.FORE_SHOULDER_LENGTH));
62         setAftOutsideDiameter(thePreset.get(ComponentPreset.AFT_OUTER_DIAMETER));
63         setAftShoulderDiameter(thePreset.get(ComponentPreset.AFT_SHOULDER_DIAMETER));
64         setAftShoulderLength(thePreset.get(ComponentPreset.AFT_SHOULDER_LENGTH));
65         setLength(thePreset.get(ComponentPreset.LENGTH));
66     }
67
68     public ShapeDTO getShape() {
69         return shape;
70     }
71
72     public void setShape(final ShapeDTO theShape) {
73         shape = theShape;
74     }
75
76     public double getForeOutsideDiameter() {
77         return foreOutsideDiameter;
78     }
79
80     public void setForeOutsideDiameter(final double theForeOutsideDiameter) {
81         foreOutsideDiameter = theForeOutsideDiameter;
82     }
83
84     public double getForeShoulderDiameter() {
85         return foreShoulderDiameter;
86     }
87
88     public void setForeShoulderDiameter(final double theForeShoulderDiameter) {
89         foreShoulderDiameter = theForeShoulderDiameter;
90     }
91
92     public double getForeShoulderLength() {
93         return foreShoulderLength;
94     }
95
96     public void setForeShoulderLength(final double theForeShoulderLength) {
97         foreShoulderLength = theForeShoulderLength;
98     }
99
100     public double getAftOutsideDiameter() {
101         return aftOutsideDiameter;
102     }
103
104     public void setAftOutsideDiameter(final double theAftOutsideDiameter) {
105         aftOutsideDiameter = theAftOutsideDiameter;
106     }
107
108     public double getAftShoulderDiameter() {
109         return aftShoulderDiameter;
110     }
111
112     public void setAftShoulderDiameter(final double theAftShoulderDiameter) {
113         aftShoulderDiameter = theAftShoulderDiameter;
114     }
115
116     public double getAftShoulderLength() {
117         return aftShoulderLength;
118     }
119
120     public void setAftShoulderLength(final double theAftShoulderLength) {
121         aftShoulderLength = theAftShoulderLength;
122     }
123
124     public double getLength() {
125         return length;
126     }
127
128     public void setLength(final double theLength) {
129         length = theLength;
130     }
131
132     public ComponentPreset asComponentPreset(List<MaterialDTO> materials) throws InvalidComponentPresetException {
133         TypedPropertyMap props = new TypedPropertyMap();
134         addProps(props, materials);
135         props.put(ComponentPreset.SHAPE, shape.getORShape());
136         props.put(ComponentPreset.FORE_OUTER_DIAMETER, this.getForeOutsideDiameter());
137         props.put(ComponentPreset.FORE_SHOULDER_DIAMETER, this.getForeShoulderDiameter());
138         props.put(ComponentPreset.FORE_SHOULDER_LENGTH, this.getForeShoulderLength());
139         props.put(ComponentPreset.AFT_OUTER_DIAMETER, this.getAftOutsideDiameter());
140         props.put(ComponentPreset.AFT_SHOULDER_DIAMETER, this.getAftShoulderDiameter());
141         props.put(ComponentPreset.AFT_SHOULDER_LENGTH, this.getAftShoulderLength());
142         props.put(ComponentPreset.LENGTH, this.getLength());
143         props.put(ComponentPreset.TYPE, ComponentPreset.Type.TRANSITION);
144
145         return ComponentPresetFactory.create(props);
146     }
147 }