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;
/**
* Body tube preset XML handler.
*/
@XmlRootElement(name = "LaunchLug")
@XmlAccessorType(XmlAccessType.FIELD)
public class LaunchLugDTO extends BaseComponentDTO {
@XmlElement(name = "InsideDiameter")
private AnnotatedLengthDTO insideDiameter;
@XmlElement(name = "OutsideDiameter")
private AnnotatedLengthDTO outsideDiameter;
@XmlElement(name = "Length")
private AnnotatedLengthDTO length;
/**
* Default constructor.
*/
public LaunchLugDTO() {
}
/**
* Most-useful constructor that maps a LaunchLug preset to a LaunchLugDTO.
*
* @param preset the preset
*
* @throws net.sf.openrocket.util.BugException thrown if the expected body tube keys are not in the preset
*/
public LaunchLugDTO(final ComponentPreset preset) {
super(preset);
setInsideDiameter(preset.get(ComponentPreset.INNER_DIAMETER));
setOutsideDiameter(preset.get(ComponentPreset.OUTER_DIAMETER));
setLength(preset.get(ComponentPreset.LENGTH));
}
public double getInsideDiameter() {
return insideDiameter.getValue();
}
public void setInsideDiameter( final AnnotatedLengthDTO theLength ) {
insideDiameter = theLength;
}
public void setInsideDiameter(final double theId) {
insideDiameter = new AnnotatedLengthDTO(theId);
}
public double getOutsideDiameter() {
return outsideDiameter.getValue();
}
public void setOutsideDiameter(final AnnotatedLengthDTO theOd) {
outsideDiameter = theOd;
}
public void setOutsideDiameter(final double theOd) {
outsideDiameter = new AnnotatedLengthDTO(theOd);
}
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.LAUNCH_LUG, materials);
}
public ComponentPreset asComponentPreset(ComponentPreset.Type type, List<MaterialDTO> materials) throws InvalidComponentPresetException {
TypedPropertyMap props = new TypedPropertyMap();
addProps(props, materials);
props.put(ComponentPreset.INNER_DIAMETER, this.getInsideDiameter());
props.put(ComponentPreset.OUTER_DIAMETER, this.getOutsideDiameter());
props.put(ComponentPreset.LENGTH, this.getLength());
props.put(ComponentPreset.TYPE, type);
return ComponentPresetFactory.create(props);
}
}