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 File { @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 = "name of the file without file ending") private final String name; @Schema(description = "file name of the file") private final String fileName; @Schema(description = "mime type of this file") private final String mimeType; @JsonFormat(shape = JsonFormat.Shape.STRING) @Schema(description = "date which is used, for example, as a reference for deadlines") private final LocalDate date; @Schema(description = "size of the file in bytes") private final int size; @Schema(description = "SHA1 checksum of the file content in hexadecimal form", deprecated = true) private final String sha1Checksum; @Schema(description = "SHA512 checksum of the file content in hexadecimal form") private final String sha512Checksum; @Schema(description = "pure text representation of the file content if possible") private final String text; @NonNull @Schema(description = "URL to access the file", required = true) private final String accessUrl; @Schema(description = "URL to download the file") private final String downloadUrl; @Schema(description = "URL to an additional access possibility") private final String externalServiceUrl; @Schema(description = "URL to the master file from which this file was derived") private final String masterFile; @Schema(description = "List of URLs to files that were derived from this file") private final List derivativeFile; @Schema(description = "URL to the license for this file") private final String fileLicense; @Schema(description = "List of URLs to meetings this file is referenced in") private final List meeting; @Schema(description = "List of URLs to agenda items this file is referenced in") private final List agendaItem; @Schema(description = "URL to the person which uses this file as image") private final String person; @Schema(description = "List of URLs to papers this file is referenced in") private final List paper; }