001package org.gbif.api.model.collections.request; 002 003import java.io.Serializable; 004import java.util.List; 005import jakarta.annotation.Nullable; 006import lombok.AllArgsConstructor; 007import lombok.Builder; 008import lombok.Data; 009import lombok.NoArgsConstructor; 010import org.gbif.api.model.common.paging.Pageable; 011import org.gbif.api.model.common.paging.PageableBase; 012import org.gbif.api.model.common.paging.PagingConstants; 013import org.gbif.api.model.common.paging.PagingRequest; 014import org.gbif.api.vocabulary.Country; 015 016@Data 017@NoArgsConstructor 018@AllArgsConstructor 019@Builder 020public class DescriptorSearchRequest extends PageableBase implements Serializable { 021 022 @Nullable private String q; 023 @Nullable private Long descriptorGroupKey; 024 @Nullable private List<String> usageKey; 025 @Nullable private List<String> usageName; 026 @Nullable private List<String> usageRank; 027 @Nullable private List<String> taxonKey; 028 @Nullable private List<Country> country; 029 @Nullable private List<String> individualCount; 030 @Nullable private List<String> identifiedBy; 031 @Nullable private List<String> dateIdentified; 032 @Nullable private List<String> typeStatus; 033 @Nullable private List<String> recordedBy; 034 @Nullable private List<String> discipline; 035 @Nullable private List<String> objectClassification; 036 @Nullable private List<String> biome; 037 @Nullable private List<String> biomeType; 038 @Nullable private List<String> issues; 039 @Nullable private List<String> taxonIssues; 040 @Nullable private String checklistKey; 041 042 public Pageable getPage() { 043 return new PagingRequest(getOffset(), getLimit()); 044 } 045 046 public static DescriptorSearchRequestBuilder builder() { 047 return new CustomBuilder(); 048 } 049 050 public static class DescriptorSearchRequestBuilder { 051 long offset = PagingConstants.DEFAULT_PARAM_OFFSET; 052 int limit = PagingConstants.DEFAULT_PARAM_LIMIT; 053 054 public DescriptorSearchRequestBuilder offset(long offset) { 055 this.offset = offset; 056 return this; 057 } 058 059 public DescriptorSearchRequestBuilder limit(int limit) { 060 this.limit = limit; 061 return this; 062 } 063 } 064 065 public static class CustomBuilder extends DescriptorSearchRequestBuilder { 066 067 @Override 068 public DescriptorSearchRequest build() { 069 DescriptorSearchRequest descriptorSearchRequest = super.build(); 070 descriptorSearchRequest.setOffset(offset); 071 descriptorSearchRequest.setLimit(limit); 072 return descriptorSearchRequest; 073 } 074 } 075}