package p13_pliki.tadeusz;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.text.Collator;
import java.util.List;
import java.util.Locale;

public class Posortuj3 {

	public static void main(String[] args) {
		try {
			System.out.println("Czytanie pliku");
			List<String> lines = Files.readAllLines(Path.of("pan_tadeusz.txt"));
			
			System.out.println("Filtrowanie");
			// Tutaj usunięcie wcięć oraz pustych linii zrobimy operacjami, które pojawiły się w Java 8
			lines.replaceAll(String::strip);
			// lines.replaceAll(String::toUpperCase);
			lines.removeIf(String::isBlank);
			
			System.out.println("Sortowanie");
			// Tutaj korzystamy z klasy Collator, która pozwala porównywać napisy zgodnie z alfabetem narodowym.
			// Domyślnie Collator bierze pod uwagę bieżące ustawienia regionalne komputera / aplikacji
			// lines.sort(Collator.getInstance());

			// Alfabet konkretnego języka - poprzez parametr Locale
			// lines.sort(Collator.getInstance(Locale.FRANCE));
			
			// lines.sort(Collator.getInstance(new Locale("pl", "PL")));
			// od Java 21 już nie za pomocą new, tylko tak:
			lines.sort(Collator.getInstance(Locale.of("pl", "PL")));
			// lines.sort(Collator.getInstance(Locale.of("en", "US")));
			
			System.out.println("Zapis pliku");
			Files.write(Path.of("pan_tadeusz_sort.txt"), lines);
			
			System.out.println("Gotowe. Zapisano " + lines.size() + " linii");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
