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.literature.search; 015 016import org.gbif.api.model.literature.LiteratureRelevance; 017import org.gbif.api.model.literature.LiteratureTopic; 018import org.gbif.api.model.literature.LiteratureType; 019import org.gbif.api.vocabulary.Country; 020import org.gbif.api.vocabulary.GbifRegion; 021import org.gbif.api.vocabulary.Language; 022 023import java.util.ArrayList; 024import java.util.Date; 025import java.util.HashMap; 026import java.util.HashSet; 027import java.util.List; 028import java.util.Map; 029import java.util.Set; 030import java.util.UUID; 031 032import com.fasterxml.jackson.annotation.JsonProperty; 033 034import io.swagger.v3.oas.annotations.media.Schema; 035 036import lombok.AccessLevel; 037import lombok.Getter; 038import lombok.Setter; 039 040@Getter 041@Setter 042@SuppressWarnings("unused") 043public class LiteratureSearchResult { 044 045 @Getter(AccessLevel.NONE) 046 @Setter(AccessLevel.NONE) 047 private String abstract_; 048 049 @Schema(description = "The date the literature item was found by GBIF's staff or automated processes.") 050 private String discovered; 051 052 @Schema(description = "The authors of the publication.") 053 private List<Map<String, Object>> authors = new ArrayList<>(); 054 055 @Schema(description = "Countries or areas of focus of the study.") 056 private Set<Country> countriesOfCoverage = new HashSet<>(); 057 058 @Schema(description = "Countries or areas of institution with which authors are affiliated.") 059 private Set<Country> countriesOfResearcher = new HashSet<>(); 060 061 @Schema(description = "Country of the publisher whose dataset is referenced in publication.") 062 private Set<Country> publishingCountry = new HashSet<>(); 063 064 @Schema(description = "The date the publication was added to the GBIF literature database.") 065 private Date added; 066 067 @Schema(description = "The publication date of the publication. See also `year`, `month` and `day`.") 068 private Date published; 069 070 @Schema(description = "The day of publication. See also `published`.", minimum = "1", maximum = "31") 071 private Integer day; 072 073 @Schema(description = "Keys of GBIF downloads referenced by the publication.") 074 private List<String> gbifDownloadKey = new ArrayList<>(); 075 076 @Schema(description = "Keys of GBIF occurrences directly mentioned by the paper.") 077 private List<Long> gbifOccurrenceKey = new ArrayList<>(); 078 079 @Schema(description = "Keys of taxa from the GBIF Backbone Taxonomy that are the focus of the paper.") 080 private List<Integer> gbifTaxonKey = new ArrayList<>(); 081 082 @Schema(description = "Keys of higher taxa from the GBIF Backbone Taxonomy that are the focus of the paper.") 083 private List<Integer> gbifHigherTaxonKey = new ArrayList<>(); 084 085 @Schema(description = "A list of GBIF network keys relevant to the publication.") 086 private List<UUID> gbifNetworkKey = new ArrayList<>(); 087 088 @Schema(description = "A list of GBIF project identifiers relevant to the publication.") 089 private List<String> gbifProjectIdentifier = new ArrayList<>(); 090 091 @Schema(description = "A list of GBIF programmes relevant to the publication.") 092 private List<String> gbifProgramme = new ArrayList<>(); 093 094 @Schema(description = "The manner in which GBIF is cited in a paper.") 095 private String citationType; 096 097 @Schema(description = "GBIF regions (political divisions) related to the publication.") 098 private Set<GbifRegion> gbifRegion = new HashSet<>(); 099 100 @Schema(description = "GBIF identifier for this literature item.") 101 private UUID id; 102 103 @Schema(description = "Identifiers (such as DOIs) for the literature item.") 104 private Map<String, Object> identifiers = new HashMap<>(); 105 106 @Schema(description = "Keywords assigned to the literature item.") 107 private List<String> keywords = new ArrayList<>(); 108 109 @Schema(description = "The language of the publication.") 110 private Language language; 111 112 @Schema(description = "Type of literature, e.g. journal article.") 113 private LiteratureType literatureType; 114 115 @Schema(description = "The month of publication. See also `published`.", minimum = "1", maximum = "12") 116 private Integer month; 117 118 @Schema(description = "Unstructured notes.") 119 private String notes; 120 121 @Schema(description = "Whether the publication is open access.") 122 private boolean openAccess; 123 124 @Schema(description = "Whether the publication has been peer reviewed.") 125 private boolean peerReview; 126 127 @Schema(description = "The publisher of the paper.") 128 private String publisher; 129 130 @Schema(description = "Relevance to GBIF community, see [literature relevance](https://www.gbif.org/faq?question=literature-relevance).") 131 private Set<LiteratureRelevance> relevance = new HashSet<>(); 132 133 @Schema(description = "Journal of publication.") 134 private String source; 135 136 @Schema(description = "Various tags applied to the literature.") 137 private List<String> tags = new ArrayList<>(); 138 139 @Schema(description = "The title of the publication.") 140 private String title; 141 142 @Schema(description = "Topics of the publication.") 143 private Set<LiteratureTopic> topics = new HashSet<>(); 144 145 @Schema(description = "The date this literature entry was last modified.") 146 private Date modified; 147 148 @Schema(description = "Websites associated with the publication.") 149 private List<String> websites = new ArrayList<>(); 150 151 @Schema(description = "The year of publication. See also `published`.") 152 private Integer year; 153 154 @Schema(name = "abstract", description = "The abstract from the publication.") 155 @JsonProperty("abstract") 156 public String getAbstract() { 157 return abstract_; 158 } 159 160 public void setAbstract(String abstract_) { 161 this.abstract_ = abstract_; 162 } 163 164}