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