import java.io.IOException;
import java.nio.file.Path;
import java.util.Scanner;
import java.util.concurrent.BlockingQueue;

// Trazi fajlove sa zadatom kljucnom recju 

public class SearchTask implements Runnable {

	private BlockingQueue<Path> queue;
	private String keyword;

	// konstruise SearchTask
	public SearchTask(BlockingQueue<Path> queue, String keyword) {
		this.queue = queue;
		this.keyword = keyword;
	}

	@Override
	public void run() {
		try {
			boolean done = false;
			while (!done) {
				Path file = queue.take();

				if (file == FileEnumerationTask.DUMMY) {
					queue.put(file);
					done = true;
				} else
					search(file);
			}
		} catch (InterruptedException e) {
		}
	}

	// pretrazuje fajl u potrazi za kljucnom recju
	public void search(Path file) {
		try (Scanner in = new Scanner(file)) {
			int lineNumber = 0;
			while (in.hasNextLine()) {
				lineNumber++;
				String line = in.nextLine();
				if (line.contains(keyword))
					System.out.printf("%s:%d:%s%n", file.getFileName(), lineNumber, line);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
