001/* 002 * Licensed under the Apache License, Version 2.0 (the "License"); 003 * you may not use this file except in compliance with the License. 004 * You may obtain a copy of the License at 005 * 006 * http://www.apache.org/licenses/LICENSE-2.0 007 * 008 * Unless required by applicable law or agreed to in writing, software 009 * distributed under the License is distributed on an "AS IS" BASIS, 010 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 011 * See the License for the specific language governing permissions and 012 * limitations under the License. 013 */ 014package org.gbif.api.model.occurrence.search; 015 016import java.util.Date; 017import java.util.Optional; 018import java.util.UUID; 019 020import io.swagger.v3.oas.annotations.Hidden; 021 022import org.gbif.api.annotation.Experimental; 023import org.gbif.api.model.common.paging.Pageable; 024import org.gbif.api.model.common.search.FacetedSearchRequest; 025import org.gbif.api.util.IsoDateInterval; 026import org.gbif.api.vocabulary.BasisOfRecord; 027import org.gbif.api.vocabulary.Continent; 028import org.gbif.api.vocabulary.Country; 029import org.gbif.api.vocabulary.MediaType; 030import org.gbif.api.vocabulary.OccurrenceIssue; 031import org.gbif.api.vocabulary.OccurrenceStatus; 032 033/** Request class for issuing search request to the occurrence search service. */ 034public class OccurrenceSearchRequest extends FacetedSearchRequest<OccurrenceSearchParameter> { 035 036 public OccurrenceSearchRequest(Pageable page) { 037 super(page); 038 } 039 040 public OccurrenceSearchRequest() { 041 } 042 043 public void addOccurrenceIDFilter(String occurrenceID) { 044 addParameter(OccurrenceSearchParameter.OCCURRENCE_ID, occurrenceID); 045 } 046 047 public void addEstablishmentMeansFilter(String establishmentMeans) { 048 addParameter(OccurrenceSearchParameter.ESTABLISHMENT_MEANS, establishmentMeans); 049 } 050 051 public void addBasisOfRecordFilter(BasisOfRecord basisOfRecord) { 052 addParameter(OccurrenceSearchParameter.BASIS_OF_RECORD, basisOfRecord); 053 } 054 055 public void addTypeStatusFilter(String typeStatus) { 056 addParameter(OccurrenceSearchParameter.TYPE_STATUS, typeStatus); 057 } 058 059 public void addCatalogNumberFilter(String catalogNumber) { 060 addParameter(OccurrenceSearchParameter.CATALOG_NUMBER, catalogNumber); 061 } 062 063 public void addRecordedByFilter(String collectorName) { 064 addParameter(OccurrenceSearchParameter.RECORDED_BY, collectorName); 065 } 066 067 public void addIdentifiedByFilter(String collectorName) { 068 addParameter(OccurrenceSearchParameter.IDENTIFIED_BY, collectorName); 069 } 070 071 public void addRecordNumberFilter(String recordNumber) { 072 addParameter(OccurrenceSearchParameter.RECORD_NUMBER, recordNumber); 073 } 074 075 public void addCountryFilter(Country country) { 076 addParameter(OccurrenceSearchParameter.COUNTRY, country.getIso2LetterCode()); 077 } 078 079 public void addContinentFilter(Continent continent) { 080 addParameter(OccurrenceSearchParameter.CONTINENT, continent); 081 } 082 083 public void addDatasetKeyFilter(UUID datasetKey) { 084 addParameter(OccurrenceSearchParameter.DATASET_KEY, datasetKey.toString()); 085 } 086 087 public void addGeometryFilter(String geometryAsWkt) { 088 addParameter(OccurrenceSearchParameter.GEOMETRY, geometryAsWkt); 089 } 090 091 public void addDecimalLatitudeFilter(double latitude) { 092 addParameter(OccurrenceSearchParameter.DECIMAL_LATITUDE, latitude); 093 } 094 095 public void addDecimalLongitudeFilter(double longitude) { 096 addParameter(OccurrenceSearchParameter.DECIMAL_LONGITUDE, longitude); 097 } 098 099 public void addCoordinateUncertaintyInMetersFilter(double uncertainty) { 100 addParameter(OccurrenceSearchParameter.COORDINATE_UNCERTAINTY_IN_METERS, uncertainty); 101 } 102 103 public void addMonthFilter(int month) { 104 addParameter(OccurrenceSearchParameter.MONTH, month); 105 } 106 107 public void addDayFilter(int day) { 108 addParameter(OccurrenceSearchParameter.DAY, day); 109 } 110 111 public void addTaxonKeyFilter(String taxonKey) { 112 addParameter(OccurrenceSearchParameter.TAXON_KEY, taxonKey); 113 } 114 115 public void addKingdomKeyFilter(String kingdomKey) { 116 addParameter(OccurrenceSearchParameter.KINGDOM_KEY, kingdomKey); 117 } 118 119 public void addPhylumKeyFilter(String phylumKey) { 120 addParameter(OccurrenceSearchParameter.PHYLUM_KEY, phylumKey); 121 } 122 123 public void addClassKeyFilter(String classKey) { 124 addParameter(OccurrenceSearchParameter.CLASS_KEY, classKey); 125 } 126 127 public void addOrderKeyFilter(String orderKey) { 128 addParameter(OccurrenceSearchParameter.ORDER_KEY, orderKey); 129 } 130 131 public void addFamilyKeyFilter(String familyKey) { 132 addParameter(OccurrenceSearchParameter.FAMILY_KEY, familyKey); 133 } 134 135 public void addGenusKeyFilter(String genusKey) { 136 addParameter(OccurrenceSearchParameter.GENUS_KEY, genusKey); 137 } 138 139 public void addSubGenusKeyFilter(String subGenusKey) { 140 addParameter(OccurrenceSearchParameter.SUBGENUS_KEY, subGenusKey); 141 } 142 143 public void addSpeciesKeyFilter(String speciesKey) { 144 addParameter(OccurrenceSearchParameter.SPECIES_KEY, speciesKey); 145 } 146 147 public void addYearFilter(int year) { 148 addParameter(OccurrenceSearchParameter.YEAR, year); 149 } 150 151 public void addEventDateFilter(IsoDateInterval date) { 152 addParameter(OccurrenceSearchParameter.EVENT_DATE, date); 153 } 154 155 public void addLastInterpretedFilter(Date modified) { 156 addParameter(OccurrenceSearchParameter.LAST_INTERPRETED, modified); 157 } 158 159 public void addPublishingCountryFilter(Country country) { 160 addParameter(OccurrenceSearchParameter.PUBLISHING_COUNTRY, country.getIso2LetterCode()); 161 } 162 163 public void addInstitutionCodeFilter(String code) { 164 addParameter(OccurrenceSearchParameter.INSTITUTION_CODE, code); 165 } 166 167 public void addHasCoordinateFilter(boolean hasCoordinate) { 168 addParameter(OccurrenceSearchParameter.HAS_COORDINATE, hasCoordinate); 169 } 170 171 public void addSpatialIssueFilter(boolean hasSpatialIssue) { 172 addParameter(OccurrenceSearchParameter.HAS_GEOSPATIAL_ISSUE, hasSpatialIssue); 173 } 174 175 public void addIssueFilter(OccurrenceIssue issue) { 176 addParameter(OccurrenceSearchParameter.ISSUE, issue); 177 } 178 179 public void addElevationFilter(double elevation) { 180 addParameter(OccurrenceSearchParameter.ELEVATION, elevation); 181 } 182 183 public void addMediaTypeFilter(MediaType mediaType) { 184 addParameter(OccurrenceSearchParameter.MEDIA_TYPE, mediaType); 185 } 186 187 public void addRecordedByIdsFilter(String recordedByIds) { 188 addParameter(OccurrenceSearchParameter.RECORDED_BY_ID, recordedByIds); 189 } 190 191 public void addIdentifiedByIdsFilter(String identifiedByIds) { 192 addParameter(OccurrenceSearchParameter.IDENTIFIED_BY_ID, identifiedByIds); 193 } 194 195 public void addOccurrenceStatusFilter(OccurrenceStatus occurrenceStatus) { 196 addParameter(OccurrenceSearchParameter.OCCURRENCE_STATUS, occurrenceStatus); 197 } 198 199 public void addGadmGidFilter(String gadmGid) { 200 addParameter(OccurrenceSearchParameter.GADM_GID, gadmGid); 201 } 202 203 public void addGadmLevel0GidFilter(String gadm0) { 204 addParameter(OccurrenceSearchParameter.GADM_LEVEL_0_GID, gadm0); 205 } 206 207 public void addGadmLevel1GidFilter(String gadm1) { 208 addParameter(OccurrenceSearchParameter.GADM_LEVEL_1_GID, gadm1); 209 } 210 211 public void addGadmLevel2GidFilter(String gadm2) { 212 addParameter(OccurrenceSearchParameter.GADM_LEVEL_2_GID, gadm2); 213 } 214 215 public void addGadmLevel3GidFilter(String gadm3) { 216 addParameter(OccurrenceSearchParameter.GADM_LEVEL_3_GID, gadm3); 217 } 218 219 public void addGeologicalTimeFilter(String geologicalTimeConcept) { 220 addParameter(OccurrenceSearchParameter.GEOLOGICAL_TIME, geologicalTimeConcept); 221 } 222 223 public void addLithostratigraphyFilter(String lithostratigraphy) { 224 addParameter(OccurrenceSearchParameter.LITHOSTRATIGRAPHY, lithostratigraphy); 225 } 226 227 public void addBiostratigraphyFilter(String biostratigraphy) { 228 addParameter(OccurrenceSearchParameter.BIOSTRATIGRAPHY, biostratigraphy); 229 } 230 231 @Experimental 232 public void addInstitutionKeyFilter(String institutionKey) { 233 addParameter(OccurrenceSearchParameter.INSTITUTION_KEY, institutionKey); 234 } 235 236 @Experimental 237 public void addCollectionKeyFilter(String collectionKey) { 238 addParameter(OccurrenceSearchParameter.COLLECTION_KEY, collectionKey); 239 } 240 241 public void addDnaSequenceIDFilter(String dnaSequenceID) { 242 addParameter(OccurrenceSearchParameter.DNA_SEQUENCE_ID, dnaSequenceID); 243 } 244 245 @Experimental 246 public void addChecklistKeyFilter(String checklistKey) { 247 addParameter(OccurrenceSearchParameter.CHECKLIST_KEY, checklistKey); 248 } 249 250 @Experimental 251 public void addTaxonomicIssueFilter(String taxonomicIssue) { 252 addParameter(OccurrenceSearchParameter.TAXONOMIC_ISSUE, taxonomicIssue); 253 } 254}