You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.2 KiB
86 lines
2.2 KiB
package de.geis.pdfdownloader;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.nio.file.FileSystems;
|
|
import java.nio.file.Paths;
|
|
import java.nio.file.StandardWatchEventKinds;
|
|
import java.nio.file.WatchEvent;
|
|
import java.nio.file.WatchKey;
|
|
import java.nio.file.WatchService;
|
|
import java.util.concurrent.Executors;
|
|
import java.util.concurrent.ThreadPoolExecutor;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
public class FileSystemWatcher extends Thread {
|
|
|
|
public void startWatcher() throws InterruptedException, IOException {
|
|
WatchService watchService = FileSystems.getDefault().newWatchService();
|
|
WatchKey watchKey = Paths.get(Parameters.getDownloadFolder().toURI()).register(watchService,
|
|
StandardWatchEventKinds.ENTRY_CREATE);
|
|
|
|
//Abarbeitung liegen gebliebene Files
|
|
File[] listoffiles = Parameters.getDownloadFolder().listFiles();
|
|
|
|
for(File file : listoffiles) {
|
|
PropertyDaten propertyDaten = new PropertyDaten(file.getName());
|
|
propertyDaten.run();
|
|
}
|
|
|
|
//Watcher start
|
|
while(true) {
|
|
watchKey = watchService.take();
|
|
if (watchKey != null) {
|
|
try {
|
|
TimeUnit.MILLISECONDS.sleep(25);
|
|
for (WatchEvent<?> event : watchKey.pollEvents()) {
|
|
if (event.kind().equals(StandardWatchEventKinds.ENTRY_CREATE)) {
|
|
System.out.println("--- START Sequenz --- " + event.context().toString());
|
|
normalJobPoolExecutor.submit(startSequenz(event));
|
|
}
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
watchKey.reset();
|
|
}
|
|
}
|
|
|
|
public static long DELAY = 10L;
|
|
private static ThreadPoolExecutor normalJobPoolExecutor;
|
|
|
|
//Erste Sequenz zum Property Laden starten.
|
|
public Runnable startSequenz(WatchEvent<?> event) {
|
|
PropertyDaten propertyDaten = new PropertyDaten(event.context().toString());
|
|
return propertyDaten;
|
|
}
|
|
|
|
public FileSystemWatcher() {
|
|
normalJobPoolExecutor = (ThreadPoolExecutor) Executors.newCachedThreadPool();
|
|
Runtime.getRuntime().addShutdownHook(new Thread() {
|
|
@Override
|
|
public void run() {
|
|
if (normalJobPoolExecutor != null) {
|
|
normalJobPoolExecutor.shutdown();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
try {
|
|
|
|
startWatcher();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
}
|
|
|
|
}
|