001package org.gbif.api.model.collections.request; 002 003import java.io.Serializable; 004import java.util.List; 005import javax.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 040 public Pageable getPage() { 041 return new PagingRequest(getOffset(), getLimit()); 042 } 043 044 public static DescriptorSearchRequestBuilder builder() { 045 return new CustomBuilder(); 046 } 047 048 public static class DescriptorSearchRequestBuilder { 049 long offset = PagingConstants.DEFAULT_PARAM_OFFSET; 050 int limit = PagingConstants.DEFAULT_PARAM_LIMIT; 051 052 public DescriptorSearchRequestBuilder offset(long offset) { 053 this.offset = offset; 054 return this; 055 } 056 057 public DescriptorSearchRequestBuilder limit(int limit) { 058 this.limit = limit; 059 return this; 060 } 061 } 062 063 public static class CustomBuilder extends DescriptorSearchRequestBuilder { 064 065 @Override 066 public DescriptorSearchRequest build() { 067 DescriptorSearchRequest descriptorSearchRequest = super.build(); 068 descriptorSearchRequest.setOffset(offset); 069 descriptorSearchRequest.setLimit(limit); 070 return descriptorSearchRequest; 071 } 072 } 073}