001package org.gbif.api.model.collections.request; 002 003import java.io.Serializable; 004import java.util.Date; 005import java.util.List; 006import javax.annotation.Nullable; 007import lombok.AllArgsConstructor; 008import lombok.Builder; 009import lombok.Data; 010import lombok.NoArgsConstructor; 011import org.gbif.api.model.common.paging.Pageable; 012import org.gbif.api.model.common.paging.PageableBase; 013import org.gbif.api.model.common.paging.PagingConstants; 014import org.gbif.api.model.common.paging.PagingRequest; 015import org.gbif.api.vocabulary.Country; 016import org.gbif.api.vocabulary.Rank; 017 018@Data 019@NoArgsConstructor 020@AllArgsConstructor 021@Builder 022public class DescriptorSearchRequest extends PageableBase implements Serializable { 023 024 @Nullable private String q; 025 @Nullable private Long descriptorGroupKey; 026 @Nullable private List<Integer> usageKey; 027 @Nullable private List<String> usageName; 028 @Nullable private List<Rank> usageRank; 029 @Nullable private List<Integer> taxonKey; 030 @Nullable private List<Country> country; 031 @Nullable private String individualCount; 032 @Nullable private List<String> identifiedBy; 033 @Nullable private Date dateIdentified; 034 @Nullable private Date dateIdentifiedFrom; 035 @Nullable private Date dateIdentifiedBefore; 036 @Nullable private List<String> typeStatus; 037 @Nullable private List<String> recordedBy; 038 @Nullable private List<String> discipline; 039 @Nullable private List<String> objectClassification; 040 @Nullable private List<String> issues; 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}