From 9590b197c5bc051da6e48a622d83576eaf2be7e2 Mon Sep 17 00:00:00 2001 From: koz01 <koz01@PCCPIT1V203-040.msad.vsb.cz> Date: Wed, 1 Dec 2021 10:52:58 +0100 Subject: [PATCH] lab11-solution --- pom.xml | 8 +++ src/main/java/cz/jezek/lab11/Match.java | 9 +++ src/main/java/cz/jezek/lab11/Oponents.java | 8 +++ src/main/java/cz/jezek/lab11/Player.java | 3 + src/main/java/cz/jezek/lab11/StreamMain.java | 57 ++++++++++++++++++- src/main/java/cz/jezek/lab11/Tournament.java | 22 ++++--- src/main/java/module-info.java | 2 + tournament.obj | Bin 0 -> 613 bytes tournament.xml | 27 +++++++++ 9 files changed, 122 insertions(+), 14 deletions(-) create mode 100644 tournament.obj create mode 100644 tournament.xml diff --git a/pom.xml b/pom.xml index 7364e80..7d9e06a 100644 --- a/pom.xml +++ b/pom.xml @@ -69,5 +69,13 @@ <artifactId>jakarta.xml.bind-api</artifactId> <version>3.0.1</version> </dependency> + + <!-- https://mvnrepository.com/artifact/org.eclipse.persistence/org.eclipse.persistence.moxy --> + <dependency> + <groupId>org.eclipse.persistence</groupId> + <artifactId>org.eclipse.persistence.moxy</artifactId> + <version>3.0.2</version> + </dependency> + </dependencies> </project> diff --git a/src/main/java/cz/jezek/lab11/Match.java b/src/main/java/cz/jezek/lab11/Match.java index 5b16674..5d373ee 100644 --- a/src/main/java/cz/jezek/lab11/Match.java +++ b/src/main/java/cz/jezek/lab11/Match.java @@ -3,18 +3,27 @@ package cz.jezek.lab11; import java.io.Serializable; import java.util.Objects; +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlElement; + public class Match implements Serializable{ private static final long serialVersionUID = 1L; + @XmlElement private Oponents oponents; + @XmlAttribute private int player1Scorel; + @XmlAttribute private int player2Scorel; + public Match() { + } + public Match(Player player1, int player1Scorel, Player player2, int player2Scorel) { this.oponents = new Oponents(player1, player2); this.player1Scorel = player1Scorel; diff --git a/src/main/java/cz/jezek/lab11/Oponents.java b/src/main/java/cz/jezek/lab11/Oponents.java index afc5a80..428893e 100644 --- a/src/main/java/cz/jezek/lab11/Oponents.java +++ b/src/main/java/cz/jezek/lab11/Oponents.java @@ -3,6 +3,8 @@ package cz.jezek.lab11; import java.io.Serializable; import java.util.Objects; +import jakarta.xml.bind.annotation.XmlElement; + public class Oponents implements Serializable{ /** @@ -10,9 +12,15 @@ public class Oponents implements Serializable{ */ private static final long serialVersionUID = 1L; + @XmlElement private Player player1; + + @XmlElement private Player player2; + public Oponents() { + } + public Oponents(Player player1, Player player2) { super(); this.player1 = player1; diff --git a/src/main/java/cz/jezek/lab11/Player.java b/src/main/java/cz/jezek/lab11/Player.java index f708162..ab7d0e6 100644 --- a/src/main/java/cz/jezek/lab11/Player.java +++ b/src/main/java/cz/jezek/lab11/Player.java @@ -13,6 +13,9 @@ public class Player implements Serializable{ RandomGenarator.selectRandom(RandomGenarator.SURNAMES)); } + public Player() { + } + public Player(String firstName, String lastName) { super(); this.firstName = firstName; diff --git a/src/main/java/cz/jezek/lab11/StreamMain.java b/src/main/java/cz/jezek/lab11/StreamMain.java index 494a809..7bde045 100644 --- a/src/main/java/cz/jezek/lab11/StreamMain.java +++ b/src/main/java/cz/jezek/lab11/StreamMain.java @@ -4,23 +4,27 @@ import static java.util.Comparator.comparingInt; import java.io.File; 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.util.Arrays; import java.util.Optional; +import org.eclipse.persistence.jaxb.MarshallerProperties; + import jakarta.xml.bind.JAXBContext; import jakarta.xml.bind.JAXBException; import jakarta.xml.bind.Marshaller; +import jakarta.xml.bind.Unmarshaller; public class StreamMain { public static void main(String[] args) { - Tournament tournament = loadTournament(); + System.setProperty("jakarta.xml.bind.JAXBContextFactory", "org.eclipse.persistence.jaxb.JAXBContextFactory"); + /*Tournament tournament = loadTournament(); if (tournament == null) { tournament = Tournament.generate(); } @@ -29,6 +33,28 @@ public class StreamMain { saveTournament(tournament); printTournamentAsXML(tournament); + printTournamentAsJSON(tournament); + + Tournament tournament2 = loadTournamentFromXML(); + + */ + Player p1 = new Player("Jonh", "Doe"); + Player p2 = new Player("Marry", "Jane"); + + Match m = new Match(p1, 0, p2, 0); + + Tournament t = new Tournament(Arrays.asList(p1,p2), Arrays.asList(m)); + saveTournament(t); + Tournament t2 = loadTournament(); + + System.out.print("p1 == m.oponents.player1 " + + (t2.getPlayers().get(0) == t2.getMatches().get(0).getOponents().getPlayer1())); + + printTournamentAsXML(t); + t2 = loadTournamentFromXML(); + System.out.print("p1 == m.oponents.player1 " + + (t2.getPlayers().get(0) == t2.getMatches().get(0).getOponents().getPlayer1())); + } @@ -102,10 +128,37 @@ public static Tournament loadTournament() { Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(tournament, System.out); + marshaller.marshal(tournament, new File("tournament.xml")); } catch (JAXBException e) { e.printStackTrace(); } } + private static void printTournamentAsJSON(Tournament tournament) { + try { + JAXBContext context = JAXBContext.newInstance(Tournament.class); + Marshaller marshaller = context.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); + marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, "application/json"); + marshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, true); + marshaller.marshal(tournament, System.out); + } catch (JAXBException e) { + e.printStackTrace(); + } + } + + + +private static Tournament loadTournamentFromXML() { + try { + JAXBContext context = JAXBContext.newInstance(Tournament.class); + Unmarshaller unmarshaller= context.createUnmarshaller(); + return (Tournament) unmarshaller.unmarshal(new File("tournament.xml")); + } catch (JAXBException e) { + e.printStackTrace(); + } + return null; +} + } diff --git a/src/main/java/cz/jezek/lab11/Tournament.java b/src/main/java/cz/jezek/lab11/Tournament.java index 66d9148..d213684 100644 --- a/src/main/java/cz/jezek/lab11/Tournament.java +++ b/src/main/java/cz/jezek/lab11/Tournament.java @@ -8,6 +8,9 @@ import java.util.Random; 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; @@ -17,12 +20,15 @@ public class Tournament implements Serializable{ private static final long serialVersionUID = 0L; - + + @XmlElement(name = "player") + @XmlElementWrapper(name = "players") private List<Player> players; + + @XmlElement(name = "match") + @XmlElementWrapper(name = "matches") private List<Match> matches; - - private String name = "turnaj"; private static Random rnd = new Random(); @@ -43,7 +49,7 @@ public class Tournament implements Serializable{ List<Match> matches = Stream.generate(() -> generateRandomMatch(players)) .filter(m -> m.getOponents().getPlayer1() != m.getOponents().getPlayer2()) - .limit(250) + .limit(30) .collect(Collectors.toList()); @@ -59,14 +65,6 @@ public class Tournament implements Serializable{ } - public void setName(String name) { - this.name = name; - } - - public String getName() { - return name; - } - public List<Player> getPlayers() { return players; } diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 59a012f..6e38030 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -2,6 +2,8 @@ module cz.jezek.lab10 { requires transitive javafx.controls; requires javafx.fxml; requires jakarta.xml.bind; + requires java.sql; + requires org.eclipse.persistence.moxy; opens cz.jezek.lab11; exports cz.jezek.lab11; } \ No newline at end of file diff --git a/tournament.obj b/tournament.obj new file mode 100644 index 0000000000000000000000000000000000000000..d71f9ba749edf52cb9f33e56af3abb2a87930339 GIT binary patch literal 613 zcmZvaJ5Iwu5QfLjlOiG_pkQi5Y0GISLW4vDatKloO{$HxBsPw1))R0dL5)P015i=Y zP||P%8afVvH~<a1Yv+N%g{{%d{Qt~1e)@z$#6Ytrx=SbYLib3|H1*S9#C$TOK0^Aa zkh7pPBxnz4giy6yaz%_0I-X%U5jHKziw1<XB;ygkZ*-73exK(`p-0A)MVD|3N*r>> zEzz%wetn-YGLE+8M`(RK?!CU<72j1*x}Xq*T6ama-E*mp%{Uw}sCTW*;4Lv=^Q?M* zJ>B{GRsrIWFQ9P4_5Ui<<rKc%Aykqf&5j)~>doUu5?fFX!ocT9`1%_6H6$=Y0yEla ziqAD8#y#s9&so*NR-Lmk5$ajh6G?5suOawVB)^S}bW-|Dc;(z-5gzlah&Jw2_Q+Bk zhY0zjz#kyw4gxA~vx-n?5yr+MMSOnFB8or3mDxN;zWE1vI;47|J-keJpJ&WfVOkZh F+7F5twafqj literal 0 HcmV?d00001 diff --git a/tournament.xml b/tournament.xml new file mode 100644 index 0000000..3bda513 --- /dev/null +++ b/tournament.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tournament> + <players> + <player> + <firstName>Jonh</firstName> + <lastName>Doe</lastName> + </player> + <player> + <firstName>Marry</firstName> + <lastName>Jane</lastName> + </player> + </players> + <matches> + <match player1Scorel="0" player2Scorel="0"> + <oponents> + <player1> + <firstName>Jonh</firstName> + <lastName>Doe</lastName> + </player1> + <player2> + <firstName>Marry</firstName> + <lastName>Jane</lastName> + </player2> + </oponents> + </match> + </matches> +</tournament> -- GitLab