create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / preset / xml / OpenRocketComponentLoader.java
1 package net.sf.openrocket.preset.xml;
2
3 import java.io.BufferedInputStream;
4 import java.io.InputStream;
5 import java.io.InputStreamReader;
6 import java.util.Collection;
7 import java.util.List;
8
9 import javax.xml.bind.JAXBException;
10
11 import net.sf.openrocket.file.Loader;
12 import net.sf.openrocket.logging.LogHelper;
13 import net.sf.openrocket.preset.ComponentPreset;
14 import net.sf.openrocket.preset.InvalidComponentPresetException;
15 import net.sf.openrocket.startup.Application;
16 import net.sf.openrocket.util.BugException;
17
18 public class OpenRocketComponentLoader  implements Loader<ComponentPreset> {
19
20         private static final LogHelper log = Application.getLogger();
21
22         @Override
23         public Collection<ComponentPreset> load(InputStream stream,     String filename) {
24
25                 log.debug("Loading presets from file " + filename);
26                 
27                 if ( ! (stream instanceof BufferedInputStream) ) {
28                         stream = new BufferedInputStream(stream);
29                 }
30
31                 try {
32                         List<ComponentPreset> presets;
33                         presets = (new OpenRocketComponentSaver().unmarshalFromOpenRocketComponent( new InputStreamReader (stream))).asComponentPresets();
34                         log.debug("ComponentPreset file " + filename + " contained " + presets.size() + " presets");
35                         return presets;
36                 } catch (JAXBException e) {
37                         throw new BugException("Unable to parse file: "+ filename, e);
38                 } catch (InvalidComponentPresetException e) {
39                         throw new BugException("Unable to parse file: "+ filename, e);
40                 }
41
42         }
43
44 }