diff --git a/pom.xml b/pom.xml index 2b9412c35866a10aa29d27c6cbf60fa2171344f9..5fca367e32261284719852fa937daa5ad33a9654 100644 --- a/pom.xml +++ b/pom.xml @@ -33,5 +33,31 @@ <version>5.5.2</version> <scope>test</scope> </dependency> + <dependency> + <groupId>javax.xml.bind</groupId> + <artifactId>jaxb-api</artifactId> + <version>2.3.0</version> + </dependency> + <dependency> + <groupId>com.sun.xml.bind</groupId> + <artifactId>jaxb-core</artifactId> + <version>3.0.2</version> + </dependency> + <dependency> + <groupId>com.sun.xml.bind</groupId> + <artifactId>jaxb-impl</artifactId> + <version>3.0.2</version> + </dependency> + <!-- https://mvnrepository.com/artifact/javax.activation/activation --> + <dependency> + <groupId>javax.activation</groupId> + <artifactId>activation</artifactId> + <version>1.1.1</version> + </dependency> + <dependency> + <groupId>jakarta.xml.bind</groupId> + <artifactId>jakarta.xml.bind-api</artifactId> + <version>3.0.1</version> + </dependency> </dependencies> </project> diff --git a/src/main/java/cz/jezek/lab11/StreamMain.java b/src/main/java/cz/jezek/lab11/StreamMain.java index 4eb29ae114e3b2028807f29323aa34070721c460..03bae2f6e4ce81bf1dc9ccb3761cd4e6bbb8ea92 100644 --- a/src/main/java/cz/jezek/lab11/StreamMain.java +++ b/src/main/java/cz/jezek/lab11/StreamMain.java @@ -1,19 +1,24 @@ package cz.jezek.lab11; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; +import java.io.OutputStream; import java.util.Comparator; import java.util.stream.Collectors; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Marshaller; + public class StreamMain { public static void main(String[] args) { - Tournament tournament = loadTournament(); + Tournament tournament = Tournament.generate(); - printStatAboutTournament(tournament); + //printStatAboutTournament(tournament); saveTournament(tournament); } @@ -72,9 +77,19 @@ public class StreamMain { } public static void saveTournament(Tournament tournament) { - try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("data.obj"))) { - oos.writeObject(tournament); + + try (OutputStream os = new FileOutputStream("tournament.xml")) { + JAXBContext context = JAXBContext.newInstance(Tournament.class); + Marshaller marshaller = context.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); + marshaller.marshal(tournament, System.out); + marshaller.marshal(tournament, os); + } catch (JAXBException exc) { + exc.printStackTrace(); + } catch (FileNotFoundException e) { + e.printStackTrace(); } catch (IOException e) { + // TODO Auto-generated catch block e.printStackTrace(); } } diff --git a/src/main/java/cz/jezek/lab11/Tournament.java b/src/main/java/cz/jezek/lab11/Tournament.java index 7831cdc0f3886306cf03b997d1c8426fc38c6999..90193bb67e3fb5eabddc5fabdf2aee1e60e07dc2 100644 --- a/src/main/java/cz/jezek/lab11/Tournament.java +++ b/src/main/java/cz/jezek/lab11/Tournament.java @@ -8,12 +8,27 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElementWrapper; +import jakarta.xml.bind.annotation.XmlRootElement; + +@XmlRootElement public class Tournament implements Serializable{ private static final long serialVersionUID = 1L; + @XmlElement(name = "player") + @XmlElementWrapper(name = "players") private List<Player> players; + + @XmlElement(name = "match") + @XmlElementWrapper(name = "matches") + private List<Match> matches; + + @XmlAttribute + private String name = "turnaj"; public static Tournament generate() { // TODO 1.a Generate a list of 10 random players using the stream and then filter so that it does not contain players with the same name @@ -33,6 +48,9 @@ public class Tournament implements Serializable{ return new Tournament(players, matches); } + public Tournament() { + } + public Tournament(List<Player> players, List<Match> matches) { this.players = players; this.matches = matches; diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 35757404f5d12da2642d679d3eb1b4ce681e75da..3a33b2a7ccd55e8ff9021d78608ff599e3920176 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,4 +1,6 @@ module cz.jezek.lab10 { - opens cz.jezek.lab11 to javafx.fxml; + opens cz.jezek.lab11 to javafx.fxml, jakarta.xml.bind; exports cz.jezek.lab11; + requires java.xml; + requires jakarta.xml.bind; } \ No newline at end of file diff --git a/tournament.xml b/tournament.xml new file mode 100644 index 0000000000000000000000000000000000000000..e464fcf355af5ee1a21f8865ad47ec0601925d16 --- /dev/null +++ b/tournament.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<tournament name="turnaj"> + <players> + <player> + <firstName>Ilse</firstName> + <lastName>Ĺ ĹĄastnĂ˝</lastName> + </player> + <player> + <firstName>Otakar</firstName> + <lastName>Hájek</lastName> + </player> + <player> + <firstName>Ivona</firstName> + <lastName>KratochvĂl</lastName> + </player> + <player> + <firstName>Marika</firstName> + <lastName>Zeman</lastName> + </player> + <player> + <firstName>ÄŚestmĂr</firstName> + <lastName>Navrátil</lastName> + </player> + <player> + <firstName>Samantha</firstName> + <lastName>Dušek</lastName> + </player> + <player> + <firstName>Rajmund</firstName> + <lastName>TichĂ˝</lastName> + </player> + <player> + <firstName>Ladislava</firstName> + <lastName>KopeckĂ˝</lastName> + </player> + <player> + <firstName>Johanka</firstName> + <lastName>Navrátil</lastName> + </player> + <player> + <firstName>Ĺ tefana</firstName> + <lastName>Ĺ imek</lastName> + </player> + </players> +</tournament>