package de.geis.printserver;

import java.nio.file.FileSystems;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import java.util.concurrent.TimeUnit;

public class FileSystemWatcher extends Thread {
	@SuppressWarnings("null")
	public void startWatcher() throws Exception {
		WatchService watchService = FileSystems.getDefault().newWatchService();
		//Lade Property Dateien die nicht abgearbeitet wurden
		PropertyDaten propertyDaten = new PropertyDaten();
		propertyDaten.loadConfigDatein();
		
		//Watchkey init
		WatchKey watchKey = Paths.get(Parameters.getConfigFolder().toURI()).register(watchService, 
				StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_MODIFY);
		
		while(true) {
			watchKey = watchService.take();
			TimeUnit.MILLISECONDS.sleep(25);
			
			if (watchKey != null) {
				//Lade Config von Property Datei
				propertyDaten.loadConfigDatein();
			}
			
			watchKey.reset();
		}
	}

	public static void main( String[] args ) {
		 
	}

	@Override
	public void run() {		
		try {
			
			startWatcher();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}
