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