Lekcja 11

Serializacja

Czasem czytanie wiersz po wierszu to za mało.

I. Zapis do pliku


Zadanie 0

Dodaj nową zależność do projektu:


<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.10.4</version>
</dependency>
Zadanie 1

Utwórz POJO o nazwie Song, która będzie posiadała pola: tytuł (String), podtytuł (String), autor (String), rok (Integer), obraz (String) oraz MusicLibrary z jednym polem: listą piosenek (List<Song>).

Zadanie 2

Dana jest klasa WriteDataToFile. Napisz metodę musicLibraryToFile, która zapisze obiekt do pliku podanego jako drugi argument.


public class WriteDataToFile {

    public static void main(String[] args) throws IOException {
        List<Song> songs = new ArrayList<>();
        songs.add(new Song("Stayin' alive", "A, a, a, a, stain' alive!", "Bee Gees", 1977, "https://static.stereogum.com/uploads/2019/11/The-Bee-Gees-Stayin-Alive-1574874474-800x536.jpg"));
        songs.add(new Song("Killing Me Softly With Her Song", "Take It Easy", "Perry Como", 1990, "https://ecsmedia.pl/c/killing-me-softly-with-her-song-w-iext53741608.jpg"));
        songs.add(new Song("Hotel California", " Live at the Summit, Houston, Texas", "Eagles", 1976, "https://image.ceneostatic.pl/data/products/56635000/i-the-eagles-hotel-california-40th-anniversary-remastered-edition-cd.jpg"));
        songs.add(new Song("Rainbow in the Dark", "When I see lightning, you know it always brings me down", "Dio", 1983, "https://i.pinimg.com/736x/0a/97/ff/0a97ff3a726843248d3603e4777e6840.jpg"));

        MusicLibrary musicLibrary = new MusicLibrary(songs);
        musicLibraryToFile(musicLibrary, "data.xml");
    }
}                    
                
Zadanie 3

Dana jest klasa ReadDataFromFile. Napisz metodę readMusicLibraryFrom, która będzie czytać obiekt z pliku.


public class ReadDataFromFile {

    public static void main(String[] args) throws IOException {
        MusicLibrary musicLibrary = readMusicLibraryFrom("data.xml");
        for (Song s: musicLibrary.getSongs()) {
            System.out.println(s);
        }
    }
}                  
                
Zadanie 4

Przygotuj widok .fxml, który będzie zawierał ScrollPane z VBoxem w środku. Nadaj fx:id dla VBoxa i utwórz dla niego zmienną w kontrolerze widoku.

Zadanie 5

W metodzie initialize kontrolera użyj ReadDataFromFile.readMusicLibraryFrom("data.xml") do zaczytania biblioteki muzycznej. Następnie za pomocą kodu stwórz kontrolki, które zostaną dodane do VBoxa. Ich zadanie to wyświetlenie każdej piosenki.

Efekt końcowy lekcji 11: Biblioteka muzyczna

Poglądowy efekt końcowy