001package org.gbif.api.model.collections.request;
002
003import jakarta.annotation.Nullable;
004import java.util.HashMap;
005import java.util.HashSet;
006import java.util.List;
007import java.util.Map;
008import java.util.Set;
009import lombok.Builder;
010import lombok.Data;
011import lombok.EqualsAndHashCode;
012import lombok.experimental.SuperBuilder;
013import org.gbif.api.model.common.paging.Pageable;
014import org.gbif.api.vocabulary.Country;
015import org.gbif.api.vocabulary.collections.CollectionFacetParameter;
016
017@EqualsAndHashCode(callSuper = true)
018@SuperBuilder
019@Data
020public class CollectionDescriptorsSearchRequest extends CollectionSearchRequest
021    implements FacetedSearchRequest<CollectionFacetParameter> {
022
023  @Nullable private List<String> usageKey;
024  @Nullable private List<String> usageName;
025  @Nullable private List<String> usageRank;
026  @Nullable private List<String> taxonKey;
027  @Nullable private List<Country> descriptorCountry;
028  @Nullable private List<String> individualCount;
029  @Nullable private List<String> identifiedBy;
030  @Nullable private List<String> dateIdentified;
031  @Nullable private List<String> typeStatus;
032  @Nullable private List<String> recordedBy;
033  @Nullable private List<String> discipline;
034  @Nullable private List<String> objectClassification;
035  @Nullable private List<String> biome;
036  @Nullable private List<String> biomeType;
037  @Nullable private List<String> issue;
038  @Nullable private List<String> taxonIssue;
039  @Nullable private String checklistKey;
040
041  @Builder.Default @Nullable private Set<CollectionFacetParameter> facets = new HashSet<>();
042  @Nullable private boolean multiSelectFacets;
043  @Nullable private Integer facetMinCount;
044  @Nullable private Integer facetLimit = 10;
045  @Nullable private Integer facetOffset;
046
047  // Holds the paging configuration for each requested facet
048  @Builder.Default @Nullable
049  private Map<CollectionFacetParameter, Pageable> facetPages = new HashMap<>();
050}