X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=core%2Fsrc%2Fnet%2Fsf%2Fopenrocket%2Fstartup%2FConcurrentComponentPresetDatabaseLoader.java;h=79838ece20c021febf11b407b5f12fbceae2184d;hb=4095cb0dd61a75b7b6b0bd811f8e803af5b27919;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..79838ece 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,11 +49,12 @@ 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; } @@ -69,10 +71,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 +91,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 +115,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);