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

Xml support

parent 0fb33319
Branches
No related merge requests found
...@@ -33,5 +33,31 @@ ...@@ -33,5 +33,31 @@
<version>5.5.2</version> <version>5.5.2</version>
<scope>test</scope> <scope>test</scope>
</dependency> </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> </dependencies>
</project> </project>
package cz.jezek.lab11; package cz.jezek.lab11;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; import java.io.OutputStream;
import java.util.Comparator; import java.util.Comparator;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Marshaller;
public class StreamMain { public class StreamMain {
public static void main(String[] args) { public static void main(String[] args) {
Tournament tournament = loadTournament(); Tournament tournament = Tournament.generate();
printStatAboutTournament(tournament); //printStatAboutTournament(tournament);
saveTournament(tournament); saveTournament(tournament);
} }
...@@ -72,9 +77,19 @@ public class StreamMain { ...@@ -72,9 +77,19 @@ public class StreamMain {
} }
public static void saveTournament(Tournament tournament) { 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) { } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
} }
......
...@@ -8,12 +8,27 @@ import java.util.List; ...@@ -8,12 +8,27 @@ import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; 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{ public class Tournament implements Serializable{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@XmlElement(name = "player")
@XmlElementWrapper(name = "players")
private List<Player> players; private List<Player> players;
@XmlElement(name = "match")
@XmlElementWrapper(name = "matches")
private List<Match> matches; private List<Match> matches;
@XmlAttribute
private String name = "turnaj";
public static Tournament generate() { 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 // 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{ ...@@ -33,6 +48,9 @@ public class Tournament implements Serializable{
return new Tournament(players, matches); return new Tournament(players, matches);
} }
public Tournament() {
}
public Tournament(List<Player> players, List<Match> matches) { public Tournament(List<Player> players, List<Match> matches) {
this.players = players; this.players = players;
this.matches = matches; this.matches = matches;
......
module cz.jezek.lab10 { 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; exports cz.jezek.lab11;
requires java.xml;
requires jakarta.xml.bind;
} }
\ No newline at end of file
<?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>
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