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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.sf.openrocket.file.Loader;
import net.sf.openrocket.preset.ComponentPreset;
import net.sf.openrocket.preset.InvalidComponentPresetException;
import net.sf.openrocket.util.BugException;
public class OpenRocketComponentLoader implements Loader<ComponentPreset> {
private static final Logger log = LoggerFactory.getLogger(OpenRocketComponentLoader.class);
@Override
public Collection<ComponentPreset> load(InputStream stream, String filename) {
log.debug("Loading presets from file " + filename);
if ( ! (stream instanceof BufferedInputStream) ) {
stream = new BufferedInputStream(stream);
}
try {
List<ComponentPreset> 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);
}
}
}