A little refactoring of ComponentPreset xml file parsing since android does not support JAXB.
This commit is contained in:
parent
0076b5ac3b
commit
7681d40b76
@ -1,58 +1,16 @@
|
||||
package net.sf.openrocket.database;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
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.preset.xml.OpenRocketComponentSaver;
|
||||
import net.sf.openrocket.startup.Application;
|
||||
import net.sf.openrocket.util.BugException;
|
||||
|
||||
public class ComponentPresetDatabase extends Database<ComponentPreset> implements ComponentPresetDao {
|
||||
|
||||
private static final LogHelper log = Application.getLogger();
|
||||
|
||||
public static class ComponentPresetLoader implements Loader<ComponentPreset> {
|
||||
|
||||
@Override
|
||||
public Collection<ComponentPreset> load(InputStream stream, String filename) {
|
||||
|
||||
log.debug("Loading presets from file " + filename);
|
||||
|
||||
Set<String> favorites = Application.getPreferences().getComponentFavorites();
|
||||
|
||||
try {
|
||||
List<ComponentPreset> presets;
|
||||
presets = new OpenRocketComponentSaver().unmarshalFromOpenRocketComponent( new InputStreamReader (stream));
|
||||
for( ComponentPreset preset : presets ) {
|
||||
if ( favorites.contains(preset.preferenceKey())) {
|
||||
preset.setFavorite(true);
|
||||
}
|
||||
}
|
||||
log.debug("ComponentPreset file " + filename + " contained " + presets.size() + " presets");
|
||||
return presets;
|
||||
} catch (JAXBException e) {
|
||||
throw new BugException("Unable to parser file: "+ filename, e);
|
||||
} catch (InvalidComponentPresetException e) {
|
||||
throw new BugException("Unable to parser file: "+ filename, e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public ComponentPresetDatabase() {
|
||||
super(new ComponentPresetLoader());
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -0,0 +1,47 @@
|
||||
package net.sf.openrocket.preset.xml;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
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<ComponentPreset> {
|
||||
|
||||
private static final LogHelper log = Application.getLogger();
|
||||
|
||||
@Override
|
||||
public Collection<ComponentPreset> load(InputStream stream, String filename) {
|
||||
|
||||
log.debug("Loading presets from file " + filename);
|
||||
|
||||
Set<String> favorites = Application.getPreferences().getComponentFavorites();
|
||||
|
||||
try {
|
||||
List<ComponentPreset> presets;
|
||||
presets = new OpenRocketComponentSaver().unmarshalFromOpenRocketComponent( new InputStreamReader (stream));
|
||||
for( ComponentPreset preset : presets ) {
|
||||
if ( favorites.contains(preset.preferenceKey())) {
|
||||
preset.setFavorite(true);
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -14,6 +14,7 @@ import net.sf.openrocket.file.iterator.FileIterator;
|
||||
import net.sf.openrocket.gui.util.SimpleFileFilter;
|
||||
import net.sf.openrocket.logging.LogHelper;
|
||||
import net.sf.openrocket.preset.ComponentPreset;
|
||||
import net.sf.openrocket.preset.xml.OpenRocketComponentLoader;
|
||||
import net.sf.openrocket.util.Pair;
|
||||
|
||||
public class ConcurrentComponentPresetDatabaseLoader {
|
||||
@ -115,7 +116,7 @@ public class ConcurrentComponentPresetDatabaseLoader {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
ComponentPresetDatabase.ComponentPresetLoader loader = new ComponentPresetDatabase.ComponentPresetLoader();
|
||||
OpenRocketComponentLoader loader = new OpenRocketComponentLoader();
|
||||
Collection<ComponentPreset> presets = loader.load(is, fileName);
|
||||
PresetWriter writer = new PresetWriter(presets);
|
||||
writerPool.execute(writer);
|
||||
|
Loading…
x
Reference in New Issue
Block a user