package p19_napisy.regex;

import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class AnalizaLogow3 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("Podaj fragment nazwy pakietu: ");
		String pakiet = sc.nextLine();
		
		// Jeśli wyrażenie regularne ma być używane wielokrotnie, np. w pętli, to opłaca się je "skompilować".
		// quote jest po to, aby znaki specjalne - gdyby występowały w tekście - nie miały znaczenia w wyrażeniu regularnym
		// W tej wersji "interesujące fragmenty" biorę w nawiasy okrągłe, aby później odczytać jako grupy
		
		String regex = "^(\\d{4}-\\d{2}-\\d{2}) (\\d{2}:\\d{2}):\\d{2}\\|(\\w+)\\|([^|]*" + Pattern.quote(pakiet) + "[^|]*)\\|";
		// System.out.println("regex: " + regex);
		Pattern pattern = Pattern.compile(regex);
		
		try(BufferedReader input = Files.newBufferedReader(Paths.get("pliki/history.log"))) {
			String line;
			while((line = input.readLine()) != null) {
				Matcher m = pattern.matcher(line);
				if(m.find()) {
					// System.out.println(m.group());
					System.out.printf("Data: %s, godzina %s, pakiet: %s, akcja: %s\n",
							m.group(1), m.group(2), m.group(4), m.group(3));
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		};
	}

}
