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

solution

parent fe785201
No related merge requests found
......@@ -59,5 +59,12 @@
<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,6 +3,9 @@ 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{
/**
......@@ -10,10 +13,18 @@ public class Match implements Serializable{
*/
private static final long serialVersionUID = -7368303036334738923L;
@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;
......
......@@ -16,6 +16,9 @@ public class Player implements Serializable {
RandomGenerator.selectRandom(RandomGenerator.SURNAMES));
}
public Player() {
}
public Player(String firstName, String lastName) {
super();
this.firstName = firstName;
......
......@@ -4,14 +4,21 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
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 {
......@@ -21,6 +28,11 @@ public class StreamMain {
//printStatAboutTournament(tournament);
saveTournament(tournament);
saveTournamentAsJSON(tournament);
Tournament tournament2 = loadTournamentFromXML();
System.out.println(tournament2);
}
public static void printStatAboutTournament(Tournament tournament) {
......@@ -93,4 +105,51 @@ public class StreamMain {
e.printStackTrace();
}
}
public static void saveTournamentAsJSON(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 exc) {
exc.printStackTrace();
}
}
public static Tournament loadTournamentFromXML() {
try (InputStream is = new FileInputStream("tournament.xml")) {
JAXBContext context = JAXBContext.newInstance(Tournament.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Tournament result = (Tournament) unmarshaller.unmarshal(is);
Map<String,Player> tempPlayers =
result.getPlayers().stream()
.collect(Collectors.toMap(p -> p.getLastName() + ";" + p.getFirstName(),
p ->p ));
List<Match> tempMatches = new LinkedList<>(result.getMatches());
result.getMatches().clear();
for (Match m: tempMatches) {
String player1Key = m.getOponents().getPlayer1().getLastName() + ";" + m.getOponents().getPlayer1().getFirstName();
String player2Key = m.getOponents().getPlayer2().getLastName() + ";" + m.getOponents().getPlayer2().getFirstName();
result.getMatches().add(new Match(tempPlayers.get(player1Key), m.getPlayer1Scorel(), tempPlayers.get(player2Key), m.getPlayer2Scorel()));
}
} catch (JAXBException exc) {
exc.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
......@@ -24,7 +24,6 @@ public class Tournament implements Serializable{
@XmlElement(name = "match")
@XmlElementWrapper(name = "matches")
private List<Match> matches;
@XmlAttribute
......
......@@ -3,4 +3,5 @@ module cz.jezek.lab10 {
exports cz.jezek.lab11;
requires java.xml;
requires jakarta.xml.bind;
requires org.eclipse.persistence.moxy;
}
\ No newline at end of file
This diff is collapsed.
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