A little refactoring of ComponentPreset xml file parsing since android does not support JAXB.

This commit is contained in:
Kevin Ruland 2012-05-10 14:38:36 +00:00
parent 0076b5ac3b
commit 7681d40b76
3 changed files with 50 additions and 44 deletions

View File

@ -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

View File

@ -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);
}
}
}

View File

@ -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);