1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package de.kaiserpfalzedv.services.dnb.model;
19
20 import java.time.LocalDate;
21 import java.util.ArrayList;
22 import java.util.HashMap;
23 import java.util.HashSet;
24 import java.util.List;
25 import java.util.Map;
26 import java.util.Set;
27
28 import com.fasterxml.jackson.annotation.JsonInclude;
29
30 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
31 import jakarta.validation.constraints.Size;
32 import lombok.AllArgsConstructor;
33 import lombok.Builder;
34 import lombok.EqualsAndHashCode;
35 import lombok.Getter;
36 import lombok.NoArgsConstructor;
37 import lombok.ToString;
38 import lombok.experimental.SuperBuilder;
39 import lombok.extern.jackson.Jacksonized;
40
41
42
43
44
45
46
47 @SuppressFBWarnings(value = {"EI_EXPOSE_REP","EI_EXPOSE_REP2"}, justification = "lombok provided @Getter are created")
48 @Jacksonized
49 @SuperBuilder(toBuilder = true)
50 @AllArgsConstructor
51 @NoArgsConstructor
52 @Getter
53 @ToString(onlyExplicitlyIncluded = true)
54 @EqualsAndHashCode(onlyExplicitlyIncluded = true)
55 @JsonInclude(JsonInclude.Include.NON_ABSENT)
56 public class Book {
57 @ToString.Include
58 private String ean;
59 @ToString.Include
60 @Builder.Default
61 private List<String> isbns = new ArrayList<>();
62
63 @ToString.Include
64 @Size(max = 1024)
65 private String title;
66 @ToString.Include
67 @Size(max = 1024)
68 private String subTitle;
69 @Size(max = 1024)
70 private String remainderOfTitle;
71
72 @ToString.Include
73 @Builder.Default
74 private List<String> authors = new ArrayList<>();
75
76 @ToString.Include
77 private String publisher;
78 private String placeOfPublication;
79 private LocalDate dateOfPublication;
80
81 @Size(max = 1024)
82 private String physicalDescription;
83 private String termsOfAvailability;
84 @ToString.Include
85 private String series;
86 private String edition;
87 private String formOfProduct;
88 @Builder.Default
89 private List<String> bibliographyNumbers = new ArrayList<>();
90 @Builder.Default
91 private List<String> formKeywords = new ArrayList<>();
92 @Builder.Default
93 private Set<String> deweyDecimalClassifications = new HashSet<>();
94 private Boolean containedInInventory;
95 private String source;
96 @Builder.Default
97 private Map<String, String> inventoryUris = new HashMap<>();
98 }