package de.twomartens.oparlservice.entity; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.time.LocalDate; import java.time.ZonedDateTime; import java.util.List; @Builder @Getter @ToString @EqualsAndHashCode @AllArgsConstructor(access = AccessLevel.PRIVATE) @NoArgsConstructor(force = true, access = AccessLevel.PRIVATE) @JsonInclude(JsonInclude.Include.NON_NULL) public class Paper { @NonNull @Schema(required = true, description = "The unique identifier of the object") private final String id; @NonNull @Schema(required = true, description = "Namespace URL to the object type schema") private final String type; @NonNull @JsonFormat(shape = JsonFormat.Shape.STRING) @Schema(required = true, description = "Date and time of the creation of the object") private final ZonedDateTime created; @NonNull @JsonFormat(shape = JsonFormat.Shape.STRING) @Schema(required = true, description = "Date and time of the last update of the object") private final ZonedDateTime modified; @Schema(description = "URL to the license") private String license; @Schema(description = "Categorization of the object") private String keyword; @Schema(description = "URL of a website that presents the object in the browser") private String web; @Schema(description = "True, if the object was deleted") private final boolean deleted; @Schema(description = "URL to the body this paper belongs to") private final String body; @Schema(description = "name of this paper") private final String name; @Schema(description = "official identifier to uniquely identify this paper") private final String reference; @JsonFormat(shape = JsonFormat.Shape.STRING) @Schema(description = "date which is used, for example, as a reference for deadlines") private final LocalDate date; @Schema(description = "type of this paper", example = "Beantwortung einer Anfrage") private final String paperType; @Schema(description = "List of URLs to related papers") private final List relatedPaper; @Schema(description = "List of URLs to superordinate papers") private final List superordinatedPaper; @Schema(description = "List of URLs to subordinate papers") private final List subordinatedPapers; @Schema(description = "main file for this paper") private final File mainFile; @Schema(description = "additional files for this paper with exception of mainFile") private final List auxiliaryFile; @Schema(description = "List of locations related to this paper") private final List location; @Schema(description = "List of URLs to authors of this paper") private final List originatorPerson; @Schema(description = "List of URLs to organizations that authored this paper") private final List originatorOrganization; @Schema(description = "List of URLs to organizations responsible for content of or response to this paper") private final List underDirectionOf; @Schema(description = "List of consultations for this paper") private final List consultation; }