Germplasm.java

/*
 * Copyright 2020 Global Crop Diversity Trust
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.gringlobal.model.brapi;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * Germplasm as in http://docs.brapi.apiary.io/#reference/germplasm/germplasm-search-by-germplasmdbid
 *
 * @author Matija Obreza
 */
public class Germplasm implements Serializable {

	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = 1749102831677611702L;

	/// Internal db identifier Y
	@JsonProperty("germplasmDbId")
	private String id;

	/// A string that can be displayed to the user Y
	private String defaultDisplayName;

	/// This is the unique identifier for accessions within a genebank, and is assigned when a sample is entered into
	/// the genebank collection
	private String acceNumb;

	/// Name of the germplasm. It can be the prefered name and does not have to be unique
	@JsonProperty("germplasmName")
	private String acceName;

	/// Permanent identifier (e.g. URI, DOI, LSID)
	private String germplasmPUI;

	/// Cross name with optional selection history.
	private String pedigree;

	/// Seedlot identifier
	private String seedSource;

	/// List of other germplasm name
	private List<String> synonyms;

	/// Common name for the crop (e.g. wheat, rice, maize, cassava, banana)
	private String commonCropName;

	/// [MCPD] Institute that has bred the material. Note: The code may consist of the 3-letter ISO 3166 country code of
	/// the country where the institute is located plus a number (e.g. COL001) as recommended by FAO WIEWS Y
	@JsonProperty("instituteCode")
	private String instCode;

	/// [MCPD] Name of the institute (or person) that bred the material.
	@JsonProperty("instituteName")
	private String instName;

	/// [MCPD] 400) Breeding/research material 410) Breeder's line 411) Synthetic population 412) Hybrid 413) Founder
	/// stock/base population 414) Inbred line (parent of hybrid cultivar) 415) Segregating population 416) Clonal
	/// selection 420) Genetic stock 421) Mutant (e.g. induced/insertion mutants, tilling populations) 422) Cytogenetic
	/// stocks 423) Other genetic stocks (e.g. mapping populations)500) Advanced or improved cultivar (conventional
	/// breeding methods) 600) GMO (by genetic engineering) 999) Other
	@JsonProperty("biologicalStatusOfAccessionCode")
	private Integer sampStat;

	/// [MCPD] 3-letter ISO 3166-1 code of the country in which the sample was bred or selected (breeding lines, GMOs,
	/// segregating populations, hybrids, modern cultivars, etc.).
	@JsonProperty("countryOfOriginCode")
	private String origCty;

	/// [MCPD] If germplasm is maintained under different types of storage, multiple choices are allowed. 10) Seed
	/// collection 11) Short term 12) Medium term 13) Long term 20) Field collection 30) In vitro collection 40)
	/// Cryopreserved collection 50) DNA collection 99) Other (elaborate in REMARKS field)
	@JsonProperty("typeOfGermplasmStorageCode")
	private Collection<Integer> storage;

	/// [MCPD] Genus name for taxon. Initial uppercase letter required.
	@JsonProperty("germplasmGenus")
	private String genus;

	/// [MCPD] Specific epithet portion of the scientific name in lowercase letters.
	@JsonProperty("germplasmSpecies")
	private String species;

	/// [MCPD]
	@JsonProperty("speciesAuthority")
	private String spAuthor;

	/// [MCPD] Subtaxon can be used to store any additional taxonomic identifier. The following abbreviations are
	/// allowed: ‘subsp.’ (for subspecies); ‘convar.’ (for convariety); ‘var.’ (for variety); ‘f.’ (for form); ‘Group’
	/// (for ‘cultivar group’).
	private String subtaxa;

	private String subtAuthor;

	/**
	 * [MCPD] code of the donor institute and Identifier assigned to an accession by the donor, and permanent
	 * identifier.
	 */
	/// donors array of object

	/// [MCPD] Date on which the accession entered the collection where YYYY is the year, MM is the month and DD is the
	/// day. Missing data (MM or DD) should be indicated with hyphens or ‘00’ [double zero].
	@JsonProperty("acquisitionDate")
	private String acqDate;

	/**
	 * @return the id
	 */
	public String getId() {
		return id;
	}

	/**
	 * @param string the id to set
	 */
	public void setId(String string) {
		this.id = string;
	}

	/**
	 * @return the defaultDisplayName
	 */
	public String getDefaultDisplayName() {
		return defaultDisplayName;
	}

	/**
	 * @param defaultDisplayName the defaultDisplayName to set
	 */
	public void setDefaultDisplayName(String defaultDisplayName) {
		this.defaultDisplayName = defaultDisplayName;
	}

	/**
	 * @return the acceNumb
	 */
	public String getAcceNumb() {
		return acceNumb;
	}

	/**
	 * @param acceNumb the acceNumb to set
	 */
	public void setAcceNumb(String acceNumb) {
		this.acceNumb = acceNumb;
	}

	/**
	 * @return the acceName
	 */
	public String getAcceName() {
		return acceName;
	}

	/**
	 * @param acceName the acceName to set
	 */
	public void setAcceName(String acceName) {
		this.acceName = acceName;
	}

	/**
	 * @return the germplasmPUI
	 */
	public String getGermplasmPUI() {
		return germplasmPUI;
	}

	/**
	 * @param germplasmPUI the germplasmPUI to set
	 */
	public void setGermplasmPUI(String germplasmPUI) {
		this.germplasmPUI = germplasmPUI;
	}

	/**
	 * @return the pedigree
	 */
	public String getPedigree() {
		return pedigree;
	}

	/**
	 * @param pedigree the pedigree to set
	 */
	public void setPedigree(String pedigree) {
		this.pedigree = pedigree;
	}

	/**
	 * @return the seedSource
	 */
	public String getSeedSource() {
		return seedSource;
	}

	/**
	 * @param seedSource the seedSource to set
	 */
	public void setSeedSource(String seedSource) {
		this.seedSource = seedSource;
	}

	/**
	 * @return the synonyms
	 */
	public List<String> getSynonyms() {
		return synonyms;
	}

	/**
	 * @param synonyms the synonyms to set
	 */
	public void setSynonyms(List<String> synonyms) {
		this.synonyms = synonyms;
	}

	/**
	 * @return the commonCropName
	 */
	public String getCommonCropName() {
		return commonCropName;
	}

	/**
	 * @param commonCropName the commonCropName to set
	 */
	public void setCommonCropName(String commonCropName) {
		this.commonCropName = commonCropName;
	}

	/**
	 * @return the instCode
	 */
	public String getInstCode() {
		return instCode;
	}

	/**
	 * @param instCode the instCode to set
	 */
	public void setInstCode(String instCode) {
		this.instCode = instCode;
	}

	/**
	 * @return the instName
	 */
	public String getInstName() {
		return instName;
	}

	/**
	 * @param instName the instName to set
	 */
	public void setInstName(String instName) {
		this.instName = instName;
	}

	/**
	 * @return the sampStat
	 */
	public Integer getSampStat() {
		return sampStat;
	}

	/**
	 * @param sampStat the sampStat to set
	 */
	public void setSampStat(Integer sampStat) {
		this.sampStat = sampStat;
	}

	/**
	 * @return the origCty
	 */
	public String getOrigCty() {
		return origCty;
	}

	/**
	 * @param origCty the origCty to set
	 */
	public void setOrigCty(String origCty) {
		this.origCty = origCty;
	}

	/**
	 * @return the storage
	 */
	public Collection<Integer> getStorage() {
		return storage;
	}

	/**
	 * @param set the storage to set
	 */
	public void setStorage(Collection<Integer> set) {
		this.storage = set;
	}

	/**
	 * @return the genus
	 */
	public String getGenus() {
		return genus;
	}

	/**
	 * @param genus the genus to set
	 */
	public void setGenus(String genus) {
		this.genus = genus;
	}

	/**
	 * @return the species
	 */
	public String getSpecies() {
		return species;
	}

	/**
	 * @param species the species to set
	 */
	public void setSpecies(String species) {
		this.species = species;
	}

	/**
	 * @return the spAuthor
	 */
	public String getSpAuthor() {
		return spAuthor;
	}

	/**
	 * @param spAuthor the spAuthor to set
	 */
	public void setSpAuthor(String spAuthor) {
		this.spAuthor = spAuthor;
	}

	/**
	 * @return the subtaxa
	 */
	public String getSubtaxa() {
		return subtaxa;
	}

	/**
	 * @param subtaxa the subtaxa to set
	 */
	public void setSubtaxa(String subtaxa) {
		this.subtaxa = subtaxa;
	}

	/**
	 * @return the subtaxaAuthority
	 */
	public String getSubtAuthor() {
		return subtAuthor;
	}

	/**
	 * @param subtaxaAuthority the subtaxaAuthority to set
	 */
	public void setSubtAuthor(String subtaxaAuthority) {
		this.subtAuthor = subtaxaAuthority;
	}

	/**
	 * @return the acqDate
	 */
	public String getAcqDate() {
		return acqDate;
	}

	/**
	 * @param acqDate the acqDate to set
	 */
	public void setAcqDate(String acqDate) {
		this.acqDate = acqDate;
	}

}