X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=core%2Fsrc%2Fnet%2Fsf%2Fopenrocket%2Fstartup%2FConcurrentComponentPresetDatabaseLoader.java;h=3a70b7e505a27fe660c4452d03e9ff6042797187;hb=ad5f7d00bae736b56692b55db75bbdff6f772b9c;hp=a97d688cd0f69b57f1e18d59c46188b5a47a7717;hpb=591e4f3ee829d43dbced0f281b41fafa8ea71a30;p=debian%2Fopenrocket diff --git a/core/src/net/sf/openrocket/startup/ConcurrentComponentPresetDatabaseLoader.java b/core/src/net/sf/openrocket/startup/ConcurrentComponentPresetDatabaseLoader.java index a97d688c..3a70b7e5 100644 --- a/core/src/net/sf/openrocket/startup/ConcurrentComponentPresetDatabaseLoader.java +++ b/core/src/net/sf/openrocket/startup/ConcurrentComponentPresetDatabaseLoader.java @@ -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 { @@ -48,7 +49,7 @@ public class ConcurrentComponentPresetDatabaseLoader { } }); - loaderPool = Executors.newFixedThreadPool(15, new ThreadFactory() { + loaderPool = Executors.newFixedThreadPool(3, new ThreadFactory() { int threadCount = 0; @Override public Thread newThread(Runnable r) { @@ -69,10 +70,12 @@ public class ConcurrentComponentPresetDatabaseLoader { 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"); } @@ -87,18 +90,14 @@ public class ConcurrentComponentPresetDatabaseLoader { 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 f = iterator.next(); - FileLoader loader = new FileLoader( f.getV(), f.getU() ); - loaderPool.execute(loader); - fileCount ++; + if (iterator != null) { + while( iterator.hasNext() ) { + Pair f = iterator.next(); + FileLoader loader = new FileLoader( f.getV(), f.getU() ); + loaderPool.execute(loader); + fileCount ++; + } } - latch.countDown(); } } @@ -115,7 +114,7 @@ public class ConcurrentComponentPresetDatabaseLoader { @Override public void run() { - ComponentPresetDatabase.ComponentPresetLoader loader = new ComponentPresetDatabase.ComponentPresetLoader(); + OpenRocketComponentLoader loader = new OpenRocketComponentLoader(); Collection presets = loader.load(is, fileName); PresetWriter writer = new PresetWriter(presets); writerPool.execute(writer);