Skip to content
Snippets Groups Projects
Commit 9590b197 authored by koz01's avatar koz01
Browse files

lab11-solution

parent 1fac18f7
No related merge requests found
......@@ -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>
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
}
}
......@@ -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;
}
......
......@@ -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
File added
<?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>
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment