X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fapplication%2FProjectInserter.java;h=a3fb0da755badf79b474008b5570e056bfe18979;hb=593eba180ca6538a680810651f127fbcf0a620a3;hp=eb5abdabba965ab138574300e9bbd977e87e8960;hpb=51ef8ebc341e6ec53237bbeb18860ff77e591ac4;p=jSite.git diff --git a/src/de/todesbaum/jsite/application/ProjectInserter.java b/src/de/todesbaum/jsite/application/ProjectInserter.java index eb5abda..a3fb0da 100644 --- a/src/de/todesbaum/jsite/application/ProjectInserter.java +++ b/src/de/todesbaum/jsite/application/ProjectInserter.java @@ -30,6 +30,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.concurrent.CountDownLatch; import java.util.logging.Level; import java.util.logging.Logger; @@ -392,7 +393,6 @@ public class ProjectInserter implements FileScannerListener, Runnable { checkReport.addIssue("error.no-files-to-insert", true); } Set fileNames = new HashSet(); - long totalSize = 0; for (Entry fileOptionEntry : fileOptionEntries) { FileOption fileOption = fileOptionEntry.getValue(); if (!fileOption.isInsert() && !fileOption.isInsertRedirect()) { @@ -407,9 +407,32 @@ public class ProjectInserter implements FileScannerListener, Runnable { if (!fileNames.add(fileName)) { checkReport.addIssue("error.duplicate-file", true, fileName); } - if (fileOption.isInsert()) { - totalSize += new File(project.getLocalPath(), fileName).length(); + } + long totalSize = 0; + FileScanner fileScanner = new FileScanner(project); + final CountDownLatch completionLatch = new CountDownLatch(1); + fileScanner.addFileScannerListener(new FileScannerListener() { + + @Override + public void fileScannerFinished(FileScanner fileScanner) { + completionLatch.countDown(); + } + }); + new Thread(fileScanner).start(); + while (completionLatch.getCount() > 0) { + try { + completionLatch.await(); + } catch (InterruptedException ie1) { + /* TODO: logging */ + } + } + for (ScannedFile scannedFile : fileScanner.getFiles()) { + String fileName = scannedFile.getFilename(); + FileOption fileOption = project.getFileOption(fileName); + if ((fileOption != null) && !fileOption.isInsert()) { + continue; } + totalSize += new File(project.getLocalPath(), fileName).length(); } if (totalSize > 2 * 1024 * 1024) { checkReport.addIssue("warning.site-larger-than-2-mib", false); @@ -420,6 +443,7 @@ public class ProjectInserter implements FileScannerListener, Runnable { /** * {@inheritDoc} */ + @Override public void run() { fireProjectInsertStarted(); List files = fileScanner.getFiles(); @@ -525,6 +549,7 @@ public class ProjectInserter implements FileScannerListener, Runnable { /** * {@inheritDoc} */ + @Override public void fileScannerFinished(FileScanner fileScanner) { if (!fileScanner.isError()) { new Thread(this).start(); @@ -574,6 +599,7 @@ public class ProjectInserter implements FileScannerListener, Runnable { /** * {@inheritDoc} */ + @Override public Iterator iterator() { return issues.iterator(); }