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 = "The date the publication was added to the GBIF literature database.")
062  private Date added;
063
064  @Schema(description = "The publication date of the publication.  See also `year`, `month` and `day`.")
065  private Date published;
066
067  @Schema(description = "The day of publication. See also `published`.", minimum = "1", maximum = "31")
068  private Integer day;
069
070  @Schema(description = "Keys of GBIF downloads referenced by the publication.")
071  private List<String> gbifDownloadKey = new ArrayList<>();
072
073  @Schema(description = "Keys of GBIF occurrences directly mentioned by the paper.")
074  private List<Long> gbifOccurrenceKey = new ArrayList<>();
075
076  @Schema(description = "Keys of taxa from the GBIF Backbone Taxonomy that are the focus of the paper.")
077  private List<Integer> gbifTaxonKey = new ArrayList<>();
078
079  @Schema(description = "Keys of higher taxa from the GBIF Backbone Taxonomy that are the focus of the paper.")
080  private List<Integer> gbifHigherTaxonKey = new ArrayList<>();
081
082  @Schema(description = "A list of GBIF network keys relevant to the publication.")
083  private List<UUID> gbifNetworkKey = new ArrayList<>();
084
085  @Schema(description = "A list of GBIF project identifiers relevant to the publication.")
086  private List<String> gbifProjectIdentifier = new ArrayList<>();
087
088  @Schema(description = "A list of GBIF programmes relevant to the publication.")
089  private List<String> gbifProgramme = new ArrayList<>();
090
091  @Schema(description = "The manner in which GBIF is cited in a paper.")
092  private String citationType;
093
094  @Schema(description = "GBIF regions (political divisions) related to the publication.")
095  private Set<GbifRegion> gbifRegion = new HashSet<>();
096
097  @Schema(description = "GBIF identifier for this literature item.")
098  private UUID id;
099
100  @Schema(description = "Identifiers (such as DOIs) for the literature item.")
101  private Map<String, Object> identifiers = new HashMap<>();
102
103  @Schema(description = "Keywords assigned to the literature item.")
104  private List<String> keywords = new ArrayList<>();
105
106  @Schema(description = "The language of the publication.")
107  private Language language;
108
109  @Schema(description = "Type of literature, e.g. journal article.")
110  private LiteratureType literatureType;
111
112  @Schema(description = "The month of publication. See also `published`.", minimum = "1", maximum = "12")
113  private Integer month;
114
115  @Schema(description = "Unstructured notes.")
116  private String notes;
117
118  @Schema(description = "Whether the publication is open access.")
119  private boolean openAccess;
120
121  @Schema(description = "Whether the publication has been peer reviewed.")
122  private boolean peerReview;
123
124  @Schema(description = "The publisher of the paper.")
125  private String publisher;
126
127  @Schema(description = "Relevance to GBIF community, see [literature relevance](https://www.gbif.org/faq?question=literature-relevance).")
128  private Set<LiteratureRelevance> relevance = new HashSet<>();
129
130  @Schema(description = "Journal of publication.")
131  private String source;
132
133  @Schema(description = "Various tags applied to the literature.")
134  private List<String> tags = new ArrayList<>();
135
136  @Schema(description = "The title of the publication.")
137  private String title;
138
139  @Schema(description = "Topics of the publication.")
140  private Set<LiteratureTopic> topics = new HashSet<>();
141
142  @Schema(description = "The date this literature entry was last modified.")
143  private Date modified;
144
145  @Schema(description = "Websites associated with the publication.")
146  private List<String> websites = new ArrayList<>();
147
148  @Schema(description = "The year of publication.  See also `published`.")
149  private Integer year;
150
151  @Schema(name = "abstract", description = "The abstract from the publication.")
152  @JsonProperty("abstract")
153  public String getAbstract() {
154    return abstract_;
155  }
156
157  public void setAbstract(String abstract_) {
158    this.abstract_ = abstract_;
159  }
160
161}