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 {
}
});
- loaderPool = Executors.newFixedThreadPool(15, new ThreadFactory() {
+ loaderPool = Executors.newFixedThreadPool(3, new ThreadFactory() {
int threadCount = 0;
@Override
public Thread newThread(Runnable r) {
Thread t = new Thread(r,"PresetLoaderPool-" + threadCount++);
+ t.setPriority(Thread.MIN_PRIORITY);
return t;
}
public void await() throws InterruptedException {
latch.await();
loaderPool.shutdown();
- loaderPool.awaitTermination(10, TimeUnit.SECONDS);
+ loaderPool.awaitTermination(90, TimeUnit.SECONDS);
writerPool.shutdown();
- writerPool.awaitTermination(10, TimeUnit.SECONDS);
- iterator.close();
+ writerPool.awaitTermination(90, TimeUnit.SECONDS);
+ if ( iterator != null ) {
+ iterator.close();
+ }
long end = System.currentTimeMillis();
log.debug("Time to load presets: " + (end-startTime) + "ms " + presetCount + " loaded from " + fileCount + " files");
}
iterator = DirectoryIterator.findDirectory(SYSTEM_PRESET_DIR,
new SimpleFileFilter("", false, "orc"));
- if (iterator == null) {
- throw new IllegalStateException("Component preset directory " + SYSTEM_PRESET_DIR +
- " not found, distribution built wrong");
- }
-
- while( iterator.hasNext() ) {
- Pair<String,InputStream> f = iterator.next();
- FileLoader loader = new FileLoader( f.getV(), f.getU() );
- loaderPool.execute(loader);
- fileCount ++;
+ if (iterator != null) {
+ while( iterator.hasNext() ) {
+ Pair<String,InputStream> f = iterator.next();
+ FileLoader loader = new FileLoader( f.getV(), f.getU() );
+ loaderPool.execute(loader);
+ fileCount ++;
+ }
}
-
latch.countDown();
}
}
@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);