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.XmlElementRefs;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
-import java.util.ArrayList;
-import java.util.List;
+
+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.
private final String version = "0.1";
@XmlElementWrapper(name = "Materials")
- @XmlElement(name = "Material")
+ @XmlElement(name = "Material")
List<MaterialDTO> materials = new ArrayList<MaterialDTO>();
@XmlElementWrapper(name = "Components")
@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 = "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 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;
+ }
}