Javadoc fix
This commit is contained in:
parent
ca52cc6612
commit
df7ab36b5a
@ -1,5 +1,13 @@
|
|||||||
package net.sf.openrocket.preset.xml;
|
package net.sf.openrocket.preset.xml;
|
||||||
|
|
||||||
|
import net.sf.openrocket.material.Material;
|
||||||
|
import net.sf.openrocket.preset.ComponentPreset;
|
||||||
|
import net.sf.openrocket.preset.InvalidComponentPresetException;
|
||||||
|
|
||||||
|
import javax.xml.bind.JAXBContext;
|
||||||
|
import javax.xml.bind.JAXBException;
|
||||||
|
import javax.xml.bind.Marshaller;
|
||||||
|
import javax.xml.bind.Unmarshaller;
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
@ -8,134 +16,131 @@ import java.io.Reader;
|
|||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.xml.bind.JAXBContext;
|
|
||||||
import javax.xml.bind.JAXBException;
|
|
||||||
import javax.xml.bind.Marshaller;
|
|
||||||
import javax.xml.bind.Unmarshaller;
|
|
||||||
|
|
||||||
import net.sf.openrocket.material.Material;
|
|
||||||
import net.sf.openrocket.preset.ComponentPreset;
|
|
||||||
import net.sf.openrocket.preset.InvalidComponentPresetException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The active manager class that is the entry point for writing *.orc files.
|
* The active manager class that is the entry point for reading and writing *.orc files.
|
||||||
*/
|
*/
|
||||||
public class OpenRocketComponentSaver {
|
public class OpenRocketComponentSaver {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method marshals an OpenRocketDocument (OR design) to Rocksim-compliant XML.
|
* This method marshals a list of materials and ComponentPresets into an .orc formatted XML string.
|
||||||
*
|
*
|
||||||
* @param theMaterialList the list of materials to be included
|
* @param theMaterialList the list of materials to be included
|
||||||
* @param thePresetList the list of presets to be included
|
* @param thePresetList the list of presets to be included
|
||||||
*
|
*
|
||||||
* @return ORC-compliant XML
|
* @return ORC-compliant XML
|
||||||
* @throws JAXBException
|
*
|
||||||
*/
|
* @throws JAXBException
|
||||||
public String marshalToOpenRocketComponent(List<Material> theMaterialList, List<ComponentPreset> thePresetList) throws JAXBException {
|
*/
|
||||||
|
public String marshalToOpenRocketComponent(List<Material> theMaterialList, List<ComponentPreset> thePresetList) throws
|
||||||
|
JAXBException {
|
||||||
|
|
||||||
JAXBContext binder = JAXBContext.newInstance(OpenRocketComponentDTO.class);
|
JAXBContext binder = JAXBContext.newInstance(OpenRocketComponentDTO.class);
|
||||||
Marshaller marshaller = binder.createMarshaller();
|
Marshaller marshaller = binder.createMarshaller();
|
||||||
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
|
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
|
||||||
StringWriter sw = new StringWriter();
|
StringWriter sw = new StringWriter();
|
||||||
|
|
||||||
marshaller.marshal(toOpenRocketComponentDTO(theMaterialList, thePresetList), sw);
|
marshaller.marshal(toOpenRocketComponentDTO(theMaterialList, thePresetList), sw);
|
||||||
return sw.toString();
|
return sw.toString();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method unmarshals from a Reader that is presumed to be open on an XML file in .orc format.
|
* This method unmarshals from a Reader that is presumed to be open on an XML file in .orc format.
|
||||||
*
|
*
|
||||||
* @param is an open reader; StringBufferInputStream could not be used because it's deprecated and does not handle
|
* @param is an open reader; StringBufferInputStream could not be used because it's deprecated and does not handle UTF
|
||||||
* UTF characters correctly
|
* characters correctly
|
||||||
*
|
*
|
||||||
* @return a list of ComponentPresets
|
* @return a list of ComponentPresets
|
||||||
*
|
*
|
||||||
* @throws InvalidComponentPresetException
|
* @throws InvalidComponentPresetException
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public List<ComponentPreset> unmarshalFromOpenRocketComponent(Reader is) throws JAXBException, InvalidComponentPresetException {
|
public List<ComponentPreset> unmarshalFromOpenRocketComponent(Reader is) throws JAXBException,
|
||||||
return fromOpenRocketComponent(is).asComponentPresets();
|
InvalidComponentPresetException {
|
||||||
}
|
return fromOpenRocketComponent(is).asComponentPresets();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Write an XML representation of a list of presets.
|
* Write an XML representation of a list of presets.
|
||||||
*
|
*
|
||||||
* @param dest the stream to write the data to
|
* @param dest the stream to write the data to
|
||||||
* @param theMaterialList the list of materials to be included
|
* @param theMaterialList the list of materials to be included
|
||||||
* @param thePresetList the list of presets to be included
|
* @param thePresetList the list of presets to be included
|
||||||
* @throws JAXBException
|
*
|
||||||
* @throws IOException thrown if the stream could not be written
|
* @throws JAXBException
|
||||||
*/
|
* @throws IOException thrown if the stream could not be written
|
||||||
public void save(OutputStream dest, List<Material> theMaterialList, List<ComponentPreset> thePresetList) throws IOException, JAXBException {
|
*/
|
||||||
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(dest, "UTF-8"));
|
public void save(OutputStream dest, List<Material> theMaterialList, List<ComponentPreset> thePresetList) throws
|
||||||
writer.write(marshalToOpenRocketComponent(theMaterialList, thePresetList));
|
IOException,
|
||||||
writer.flush();
|
JAXBException {
|
||||||
writer.close();
|
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(dest, "UTF-8"));
|
||||||
}
|
writer.write(marshalToOpenRocketComponent(theMaterialList, thePresetList));
|
||||||
|
writer.flush();
|
||||||
|
writer.close();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read from an open Reader instance XML in .orc format and reconstruct an OpenRocketComponentDTO instance.
|
* Read from an open Reader instance XML in .orc format and reconstruct an OpenRocketComponentDTO instance.
|
||||||
*
|
*
|
||||||
* @param is an open Reader; assumed to be opened on a file of XML in .orc format
|
* @param is an open Reader; assumed to be opened on a file of XML in .orc format
|
||||||
*
|
*
|
||||||
* @return the OpenRocketComponentDTO that is a POJO representation of the XML; null if the data could not be read
|
* @return the OpenRocketComponentDTO that is a POJO representation of the XML; null if the data could not be read or
|
||||||
* or was in an invalid format
|
* was in an invalid format
|
||||||
*/
|
*/
|
||||||
private OpenRocketComponentDTO fromOpenRocketComponent(Reader is) throws JAXBException {
|
private OpenRocketComponentDTO fromOpenRocketComponent(Reader is) throws JAXBException {
|
||||||
JAXBContext bind = JAXBContext.newInstance(OpenRocketComponentDTO.class);
|
JAXBContext bind = JAXBContext.newInstance(OpenRocketComponentDTO.class);
|
||||||
Unmarshaller unmarshaller = bind.createUnmarshaller();
|
Unmarshaller unmarshaller = bind.createUnmarshaller();
|
||||||
return (OpenRocketComponentDTO) unmarshaller.unmarshal(is);
|
return (OpenRocketComponentDTO) unmarshaller.unmarshal(is);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Root conversion method. It iterates over all subcomponents.
|
* Root conversion method. It iterates over all subcomponents.
|
||||||
*
|
*
|
||||||
* @return a corresponding ORC representation
|
* @return a corresponding ORC representation
|
||||||
*/
|
*/
|
||||||
private OpenRocketComponentDTO toOpenRocketComponentDTO(List<Material> theMaterialList, List<ComponentPreset> thePresetList) {
|
private OpenRocketComponentDTO toOpenRocketComponentDTO(List<Material> theMaterialList, List<ComponentPreset> thePresetList) {
|
||||||
OpenRocketComponentDTO rsd = new OpenRocketComponentDTO();
|
OpenRocketComponentDTO rsd = new OpenRocketComponentDTO();
|
||||||
|
|
||||||
if (theMaterialList != null) {
|
if (theMaterialList != null) {
|
||||||
for (Material material : theMaterialList) {
|
for (Material material : theMaterialList) {
|
||||||
rsd.addMaterial(new MaterialDTO(material));
|
rsd.addMaterial(new MaterialDTO(material));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (thePresetList != null) {
|
if (thePresetList != null) {
|
||||||
for (ComponentPreset componentPreset : thePresetList) {
|
for (ComponentPreset componentPreset : thePresetList) {
|
||||||
rsd.addComponent(toComponentDTO(componentPreset));
|
rsd.addComponent(toComponentDTO(componentPreset));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rsd;
|
return rsd;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory method that maps a preset to the corresponding DTO handler.
|
* Factory method that maps a preset to the corresponding DTO handler.
|
||||||
*
|
*
|
||||||
* @param thePreset the preset for which a handler will be found
|
* @param thePreset the preset for which a handler will be found
|
||||||
*
|
*
|
||||||
* @return a subclass of BaseComponentDTO that can be used for marshalling/unmarshalling a preset; null if not found
|
* @return a subclass of BaseComponentDTO that can be used for marshalling/unmarshalling a preset; null if not found
|
||||||
* for the preset type
|
* for the preset type
|
||||||
*/
|
*/
|
||||||
private static BaseComponentDTO toComponentDTO(ComponentPreset thePreset) {
|
private static BaseComponentDTO toComponentDTO(ComponentPreset thePreset) {
|
||||||
switch (thePreset.getType()) {
|
switch (thePreset.getType()) {
|
||||||
case BODY_TUBE:
|
case BODY_TUBE:
|
||||||
return new BodyTubeDTO(thePreset);
|
return new BodyTubeDTO(thePreset);
|
||||||
case TUBE_COUPLER:
|
case TUBE_COUPLER:
|
||||||
return new TubeCouplerDTO(thePreset);
|
return new TubeCouplerDTO(thePreset);
|
||||||
case NOSE_CONE:
|
case NOSE_CONE:
|
||||||
return new NoseConeDTO(thePreset);
|
return new NoseConeDTO(thePreset);
|
||||||
case TRANSITION:
|
case TRANSITION:
|
||||||
return new TransitionDTO(thePreset);
|
return new TransitionDTO(thePreset);
|
||||||
case BULK_HEAD:
|
case BULK_HEAD:
|
||||||
return new BulkHeadDTO(thePreset);
|
return new BulkHeadDTO(thePreset);
|
||||||
case CENTERING_RING:
|
case CENTERING_RING:
|
||||||
return new CenteringRingDTO(thePreset);
|
return new CenteringRingDTO(thePreset);
|
||||||
case ENGINE_BLOCK:
|
case ENGINE_BLOCK:
|
||||||
return new EngineBlockDTO(thePreset);
|
return new EngineBlockDTO(thePreset);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user