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;
|
package net.sf.openrocket.database;
|
||||||
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
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.ComponentPreset;
|
||||||
import net.sf.openrocket.preset.InvalidComponentPresetException;
|
|
||||||
import net.sf.openrocket.preset.xml.OpenRocketComponentSaver;
|
|
||||||
import net.sf.openrocket.startup.Application;
|
import net.sf.openrocket.startup.Application;
|
||||||
import net.sf.openrocket.util.BugException;
|
|
||||||
|
|
||||||
public class ComponentPresetDatabase extends Database<ComponentPreset> implements ComponentPresetDao {
|
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() {
|
public ComponentPresetDatabase() {
|
||||||
super(new ComponentPresetLoader());
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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.gui.util.SimpleFileFilter;
|
||||||
import net.sf.openrocket.logging.LogHelper;
|
import net.sf.openrocket.logging.LogHelper;
|
||||||
import net.sf.openrocket.preset.ComponentPreset;
|
import net.sf.openrocket.preset.ComponentPreset;
|
||||||
|
import net.sf.openrocket.preset.xml.OpenRocketComponentLoader;
|
||||||
import net.sf.openrocket.util.Pair;
|
import net.sf.openrocket.util.Pair;
|
||||||
|
|
||||||
public class ConcurrentComponentPresetDatabaseLoader {
|
public class ConcurrentComponentPresetDatabaseLoader {
|
||||||
@ -115,7 +116,7 @@ public class ConcurrentComponentPresetDatabaseLoader {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
ComponentPresetDatabase.ComponentPresetLoader loader = new ComponentPresetDatabase.ComponentPresetLoader();
|
OpenRocketComponentLoader loader = new OpenRocketComponentLoader();
|
||||||
Collection<ComponentPreset> presets = loader.load(is, fileName);
|
Collection<ComponentPreset> presets = loader.load(is, fileName);
|
||||||
PresetWriter writer = new PresetWriter(presets);
|
PresetWriter writer = new PresetWriter(presets);
|
||||||
writerPool.execute(writer);
|
writerPool.execute(writer);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user