package p13_pliki.tadeusz;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Iterator;
import java.util.List;

public class Posortuj2 {

	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 pokażę Wam zastosowanie iteratora do usunięnia wybranych elementów listy (od Java 8 można prościej - zob. następne wersje)
			for(Iterator<String> it = lines.iterator(); it.hasNext();) {
				String line = it.next();
				if(line.isBlank()) {
					it.remove();
				}
			}
			
			System.out.println("Sortowanie");
			// Tutaj posortujemy niestandardowo w oparciu o długość napisu
			// Comparator to jest taka maszynka, która gdy dostanie dwa obiekty do porównania,
			// to zwraca: wartość ujemną, jeśli lewy < prawy, wartość dodatnią, jeśli lewy > prawy, a 0 jeśli są równe
			lines.sort((lewy, prawy) -> lewy.length() - prawy.length());
			
			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();
		}
	}
}
