diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 5a663f3..7373944 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -13,9 +13,9 @@ - - - + + + \ No newline at end of file diff --git a/MoviesCommon/src/main/java/at.technikumwien.movies/Actors.java b/MoviesCommon/src/main/java/at.technikumwien.movies/Actors.java index 25992db..aa6d8e1 100644 --- a/MoviesCommon/src/main/java/at.technikumwien.movies/Actors.java +++ b/MoviesCommon/src/main/java/at.technikumwien.movies/Actors.java @@ -23,21 +23,24 @@ import java.time.LocalDate; ) @XmlRootElement public class Actors { - @XmlAttribute(name = "id") @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(length = 100, nullable = false) + @XmlAttribute private String firstname; @Column(length = 100, nullable = false) + @XmlAttribute private String lastname; @Column(nullable = false) + @XmlAttribute private Sex sex; @Column(nullable = false) + @XmlAttribute private LocalDate birthdate; public Actors(String firstname, String lastname, Sex sex, LocalDate birthdate) { diff --git a/MoviesCommon/src/main/java/at.technikumwien.movies/Movies.java b/MoviesCommon/src/main/java/at.technikumwien.movies/Movies.java index 106fe28..fb31be4 100644 --- a/MoviesCommon/src/main/java/at.technikumwien.movies/Movies.java +++ b/MoviesCommon/src/main/java/at.technikumwien.movies/Movies.java @@ -4,6 +4,8 @@ import lombok.*; import javax.persistence.*; import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import java.util.Calendar; import java.util.List; @@ -24,11 +26,8 @@ import java.util.List; ) @XmlRootElement public class Movies { - // TODO: XmlAttributes may need different names - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @XmlAttribute private Long id; @Column(length = 100, nullable = false) @@ -56,10 +55,13 @@ public class Movies { name = "t_movies_actors", joinColumns = @JoinColumn(name = "fk_movies_id"), inverseJoinColumns = @JoinColumn(name = "fk_actors_id")) + @XmlElementWrapper(name = "actors") + @XmlElement(name = "actor") private List actors; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "fk_studios_id") + @XmlElement private Studios studio; public Movies(String title, String description, Genre genre, int length, int releaseyear) { diff --git a/MoviesCommon/src/main/java/at.technikumwien.movies/Studios.java b/MoviesCommon/src/main/java/at.technikumwien.movies/Studios.java index 903324b..c8f1ecc 100644 --- a/MoviesCommon/src/main/java/at.technikumwien.movies/Studios.java +++ b/MoviesCommon/src/main/java/at.technikumwien.movies/Studios.java @@ -3,6 +3,8 @@ package at.technikumwien.movies; import lombok.*; import javax.persistence.*; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; @Data @NoArgsConstructor @@ -10,22 +12,23 @@ import javax.persistence.*; @Entity @Table(name = "t_studios") +@XmlRootElement public class Studios { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(length = 100, nullable = false) + @XmlAttribute private String name; + @XmlAttribute private String countrycode; + + @XmlAttribute private String postcode; public Studios(String name, String countrycode, String postcode) { this(null, name, countrycode, postcode); } - - //TODO consider using - //@ManyToMany(mappedBy = 'at.technikumwien.movies.Studios') - //private List movies } diff --git a/MoviesWebApp/src/main/java/at/technikumwien/movies/LocalDateAdapter.java b/MoviesWebApp/src/main/java/at/technikumwien/movies/LocalDateAdapter.java new file mode 100644 index 0000000..7c05cab --- /dev/null +++ b/MoviesWebApp/src/main/java/at/technikumwien/movies/LocalDateAdapter.java @@ -0,0 +1,19 @@ +package at.technikumwien.movies; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +public class LocalDateAdapter extends XmlAdapter { + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); + + @Override + public LocalDate unmarshal(String s) throws Exception { + return LocalDate.parse(s, FORMATTER); + } + + @Override + public String marshal(LocalDate localDate) throws Exception { + return FORMATTER.format(localDate); + } +} diff --git a/MoviesWebApp/src/main/java/at/technikumwien/movies/package-info.java b/MoviesWebApp/src/main/java/at/technikumwien/movies/package-info.java index 6cba489..e3715ec 100644 --- a/MoviesWebApp/src/main/java/at/technikumwien/movies/package-info.java +++ b/MoviesWebApp/src/main/java/at/technikumwien/movies/package-info.java @@ -1,7 +1,8 @@ @XmlAccessorType(XmlAccessType.FIELD) +@XmlJavaTypeAdapter(LocalDateAdapter.class) package at.technikumwien.movies; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;