fc6893195a1cdfd78f0114ba8b9488070f7783b8
[debian/openrocket] / core / src / net / sf / openrocket / preset / xml / OpenRocketComponentLoader.java
1 package net.sf.openrocket.preset.xml;
2
3 import java.io.InputStream;
4 import java.io.InputStreamReader;
5 import java.util.Collection;
6 import java.util.List;
7 import java.util.Set;
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                 Set<String> favorites = Application.getPreferences().getComponentFavorites();
28
29                 try {
30                         List<ComponentPreset> presets;
31                         presets = (new OpenRocketComponentSaver().unmarshalFromOpenRocketComponent( new InputStreamReader (stream))).asComponentPresets();
32                         for( ComponentPreset preset : presets ) {
33                                 if ( favorites.contains(preset.preferenceKey())) {
34                                         preset.setFavorite(true);
35                                 }
36                         }                               
37                         log.debug("ComponentPreset file " + filename + " contained " + presets.size() + " presets");
38                         return presets;
39                 } catch (JAXBException e) {
40                         throw new BugException("Unable to parse file: "+ filename, e);
41                 } catch (InvalidComponentPresetException e) {
42                         throw new BugException("Unable to parse file: "+ filename, e);
43                 }
44
45         }
46
47 }