package net.sf.openrocket.preset.xml; import java.util.ArrayList; import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlElementRefs; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import net.sf.openrocket.material.Material; import net.sf.openrocket.preset.ComponentPreset; import net.sf.openrocket.preset.InvalidComponentPresetException; /** * The real 'root' element in an XML document. */ @XmlRootElement(name = "OpenRocketComponent") @XmlAccessorType(XmlAccessType.FIELD) public class OpenRocketComponentDTO { @XmlElement(name = "Version") private final String version = "0.1"; @XmlElementWrapper(name = "Materials") @XmlElement(name = "Material") List<MaterialDTO> materials = new ArrayList<MaterialDTO>(); @XmlElementWrapper(name = "Components") @XmlElementRefs({ @XmlElementRef(name = "BodyTubes", type = BodyTubeDTO.class), @XmlElementRef(name = "TubeCouplers", type = TubeCouplerDTO.class), @XmlElementRef(name = "NoseCones", type = NoseConeDTO.class), @XmlElementRef(name = "Transitions", type = TransitionDTO.class), @XmlElementRef(name = "BulkHeads", type = BulkHeadDTO.class), @XmlElementRef(name = "CenteringRings", type = CenteringRingDTO.class), @XmlElementRef(name = "EngineBlocks", type = EngineBlockDTO.class), @XmlElementRef(name = "LaunchLugs", type = LaunchLugDTO.class), @XmlElementRef(name = "Streamers", type = StreamerDTO.class), @XmlElementRef(name = "Parachutes", type = ParachuteDTO.class)}) private List<BaseComponentDTO> components = new ArrayList<BaseComponentDTO>(); public OpenRocketComponentDTO() { } public OpenRocketComponentDTO(final List<MaterialDTO> theMaterials, final List<BaseComponentDTO> theComponents) { materials = theMaterials; components = theComponents; } public List<MaterialDTO> getMaterials() { return materials; } public void addMaterial(final MaterialDTO theMaterial) { materials.add(theMaterial); } public void setMaterials(final List<MaterialDTO> theMaterials) { materials = theMaterials; } public List<BaseComponentDTO> getComponents() { return components; } public void addComponent(final BaseComponentDTO theComponent) { components.add(theComponent); } public void setComponents(final List<BaseComponentDTO> theComponents) { components = theComponents; } public List<ComponentPreset> asComponentPresets() throws InvalidComponentPresetException { List<ComponentPreset> result = new ArrayList<ComponentPreset>(components.size()); for (int i = 0; i < components.size(); i++) { result.add(components.get(i).asComponentPreset(materials)); } return result; } public List<Material> asMaterialList() { List<Material> result = new ArrayList<Material>( materials.size() ); for( MaterialDTO material : materials ) { result.add( material.asMaterial() ); } return result; } }