X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=core%2Fsrc%2Fnet%2Fsf%2Fopenrocket%2Fpreset%2Fxml%2FOpenRocketComponentLoader.java;fp=core%2Fsrc%2Fnet%2Fsf%2Fopenrocket%2Fpreset%2Fxml%2FOpenRocketComponentLoader.java;h=a27712c7f0520da2727e2c9e31eedb07377b92f8;hb=9349577cdfdff682b2aabd6daa24fdc3a7449b58;hp=0000000000000000000000000000000000000000;hpb=30ba0a882f0c061176ba14dbf86d3d6fad096c02;p=debian%2Fopenrocket diff --git a/core/src/net/sf/openrocket/preset/xml/OpenRocketComponentLoader.java b/core/src/net/sf/openrocket/preset/xml/OpenRocketComponentLoader.java new file mode 100644 index 00000000..a27712c7 --- /dev/null +++ b/core/src/net/sf/openrocket/preset/xml/OpenRocketComponentLoader.java @@ -0,0 +1,44 @@ +package net.sf.openrocket.preset.xml; + +import java.io.BufferedInputStream; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Collection; +import java.util.List; + +import javax.xml.bind.JAXBException; + +import net.sf.openrocket.file.Loader; +import net.sf.openrocket.logging.LogHelper; +import net.sf.openrocket.preset.ComponentPreset; +import net.sf.openrocket.preset.InvalidComponentPresetException; +import net.sf.openrocket.startup.Application; +import net.sf.openrocket.util.BugException; + +public class OpenRocketComponentLoader implements Loader { + + private static final LogHelper log = Application.getLogger(); + + @Override + public Collection load(InputStream stream, String filename) { + + log.debug("Loading presets from file " + filename); + + if ( ! (stream instanceof BufferedInputStream) ) { + stream = new BufferedInputStream(stream); + } + + try { + List presets; + presets = (new OpenRocketComponentSaver().unmarshalFromOpenRocketComponent( new InputStreamReader (stream))).asComponentPresets(); + log.debug("ComponentPreset file " + filename + " contained " + presets.size() + " presets"); + return presets; + } catch (JAXBException e) { + throw new BugException("Unable to parse file: "+ filename, e); + } catch (InvalidComponentPresetException e) { + throw new BugException("Unable to parse file: "+ filename, e); + } + + } + +}