package net.sf.openrocket.preset.xml; import net.sf.openrocket.preset.ComponentPreset; import net.sf.openrocket.preset.ComponentPresetFactory; import net.sf.openrocket.preset.InvalidComponentPresetException; import net.sf.openrocket.preset.TypedPropertyMap; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import java.util.List; /** * Streamer preset XML handler. */ @XmlRootElement(name = "Streamer") @XmlAccessorType(XmlAccessType.FIELD) public class StreamerDTO extends BaseComponentDTO { @XmlElement(name = "Length") private AnnotatedLengthDTO length; @XmlElement(name = "Width") private AnnotatedLengthDTO width; @XmlElement(name = "Thickness") private AnnotatedLengthDTO thickness; /** * Default constructor. */ public StreamerDTO() { } /** * Most-useful constructor that maps a BodyTube preset to a BodyTubeDTO. * * @param preset the preset * * @throws net.sf.openrocket.util.BugException thrown if the expected body tube keys are not in the preset */ public StreamerDTO(final ComponentPreset preset) { super(preset); setWidth(preset.get(ComponentPreset.WIDTH)); setThickness(preset.get(ComponentPreset.THICKNESS)); setLength(preset.get(ComponentPreset.LENGTH)); } public double getWidth() { return width.getValue(); } public void setWidth( final AnnotatedLengthDTO theWidth ) { width = theWidth; } public void setWidth(final double theId) { width = new AnnotatedLengthDTO(theId); } public double getThickness() { return thickness.getValue(); } public void setThickness(final AnnotatedLengthDTO theThickness) { thickness = theThickness; } public void setThickness(final double theThickness) { thickness = new AnnotatedLengthDTO(theThickness); } public double getLength() { return length.getValue(); } public void setLength(final AnnotatedLengthDTO theLength) { length = theLength; } public void setLength(final double theLength) { length = new AnnotatedLengthDTO(theLength); } @Override public ComponentPreset asComponentPreset(java.util.List<MaterialDTO> materials) throws InvalidComponentPresetException { return asComponentPreset(ComponentPreset.Type.STREAMER, materials); } public ComponentPreset asComponentPreset(ComponentPreset.Type type, List<MaterialDTO> materials) throws InvalidComponentPresetException { TypedPropertyMap props = new TypedPropertyMap(); addProps(props, materials); // TODO - seems some vendors use a bulk material for the sheet along with a Thickness. // need to fix the MATERIAL packed into the componentpreset. props.put(ComponentPreset.WIDTH, this.getWidth()); props.put(ComponentPreset.THICKNESS, this.getThickness()); props.put(ComponentPreset.LENGTH, this.getLength()); props.put(ComponentPreset.TYPE, type); return ComponentPresetFactory.create(props); } }