TaxonomySpeciesDTO.java

/*
 * Copyright 2026 Global Crop Diversity Trust
 * Licensed under the Apache License, Version 2.0
 * See LICENSE file in project root folder or http://www.apache.org/licenses/LICENSE-2.0
 */

package org.gringlobal.api.model;

import java.time.Instant;

import org.gringlobal.custom.validation.javax.CodeValueField;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class TaxonomySpeciesDTO extends CooperatorOwnedDTO {

	private Long grinId;

	private String alternateName;

	@CodeValueField(value = "TAXONOMY_FERTILIZATION_METHOD")
	private String commonFertilizationCode;

	private CooperatorInfo curator1Cooperator;

	private CooperatorInfo curator2Cooperator;

	private TaxonomySpeciesInfo currentTaxonomySpecies;

	private String formaAuthority;

	private String formaName;

	private String formaRankType;

	private Boolean isFormaHybrid = false;

	private Boolean isNamePending = false;

	private Boolean isSpecificHybrid = false;

	private Boolean isSubspecificHybrid = false;

	private Boolean isVarietalHybrid = false;

	private Boolean isSubvarietalHybrid = false;

	@CodeValueField(value = "ACCESSION_LIFE_FORM")
	private String lifeFormCode;

	private String name;

	private String nameAuthority;

	private Instant nameVerifiedDate;

	private Integer nomenNumber;

	private String note;

	private SiteInfo priority1Site;

	private SiteInfo priority2Site;

	private String protologue;

	private String protologueVirtualPath;

	@CodeValueField(value = "TAXONOMY_RESTRICTION")
	private String restrictionCode;

	private String siteNote;

	private String speciesAuthority;

	private String speciesName;

	private String subspeciesAuthority;

	private String subspeciesName;

	private String subvarietyAuthority;

	private String subvarietyName;

	@CodeValueField(value = "TAXONOMY_SPECIES_QUALIFIER")
	private String synonymCode;

	private TaxonomyGenusInfo taxonomyGenus;

	private String varietyAuthority;

	private String varietyName;

	private CooperatorInfo verifierCooperator;

	private String hybridParentage;

	private Boolean isWebVisible = false;

	public TaxonomySpeciesDTO(Long id) {
		this.id = id;
	}
}