package org.gbif.checklistbank.model;
import org.gbif.api.model.common.LinneanClassification;
import org.gbif.api.model.common.LinneanClassificationKeys;
import org.gbif.api.util.ClassificationUtils;
import org.gbif.api.vocabulary.Rank;
import javax.annotation.Nullable;
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
public class Classification implements LinneanClassificationKeys, LinneanClassification {
// for LinneanClassificationKeys
private Integer kingdomKey;
private Integer phylumKey;
private Integer classKey;
private Integer orderKey;
private Integer familyKey;
private Integer genusKey;
private Integer subgenusKey;
private Integer speciesKey;
// for LinneanClassification
private String kingdom;
private String phylum;
private String clazz;
private String order;
private String family;
private String genus;
private String subgenus;
private String species;
@Override
public Integer getKingdomKey() {
return kingdomKey;
}
@Override
public void setKingdomKey(Integer kingdomKey) {
this.kingdomKey = kingdomKey;
}
@Override
public Integer getPhylumKey() {
return phylumKey;
}
@Override
public void setPhylumKey(Integer phylumKey) {
this.phylumKey = phylumKey;
}
@Override
public Integer getClassKey() {
return classKey;
}
@Override
public void setClassKey(Integer classKey) {
this.classKey = classKey;
}
@Override
public Integer getOrderKey() {
return orderKey;
}
@Override
public void setOrderKey(Integer orderKey) {
this.orderKey = orderKey;
}
@Override
public Integer getFamilyKey() {
return familyKey;
}
@Override
public void setFamilyKey(Integer familyKey) {
this.familyKey = familyKey;
}
@Override
public Integer getGenusKey() {
return genusKey;
}
@Override
public void setGenusKey(Integer genusKey) {
this.genusKey = genusKey;
}
@Override
public Integer getSubgenusKey() {
return subgenusKey;
}
@Override
public void setSubgenusKey(Integer subgenusKey) {
this.subgenusKey = subgenusKey;
}
@Override
public Integer getSpeciesKey() {
return speciesKey;
}
@Override
public void setSpeciesKey(Integer speciesKey) {
this.speciesKey = speciesKey;
}
@Nullable
@Override
public String getClazz() {
return clazz;
}
@Override
public void setClazz(String clazz) {
this.clazz = clazz;
}
@Nullable
@Override
public String getFamily() {
return family;
}
@Override
public void setFamily(String family) {
this.family = family;
}
@Nullable
@Override
public String getGenus() {
return genus;
}
@Override
public void setGenus(String genus) {
this.genus = genus;
}
@Nullable
@Override
public String getKingdom() {
return kingdom;
}
@Override
public void setKingdom(String kingdom) {
this.kingdom = kingdom;
}
@Nullable
@Override
public String getOrder() {
return order;
}
@Override
public void setOrder(String order) {
this.order = order;
}
@Nullable
@Override
public String getPhylum() {
return phylum;
}
@Override
public void setPhylum(String phylum) {
this.phylum = phylum;
}
@Nullable
@Override
public String getSpecies() {
return species;
}
@Override
public void setSpecies(String species) {
this.species = species;
}
@Nullable
@Override
public String getSubgenus() {
return subgenus;
}
@Override
public void setSubgenus(String subgenus) {
this.subgenus = subgenus;
}
@Override
public Integer getHigherRankKey(Rank rank) {
return ClassificationUtils.getHigherRankKey(this, rank);
}
@Nullable
@Override
public String getHigherRank(Rank rank) {
return ClassificationUtils.getHigherRank(this, rank);
}
@Override
public int hashCode() {
return Objects.hashCode(
kingdomKey,
phylumKey,
classKey,
orderKey,
familyKey,
genusKey,
subgenusKey,
speciesKey,
kingdom,
phylum,
clazz,
order,
family,
genus,
subgenus,
species);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Classification other = (Classification) obj;
return Objects.equal(this.kingdomKey, other.kingdomKey)
&& Objects.equal(this.phylumKey, other.phylumKey)
&& Objects.equal(this.classKey, other.classKey)
&& Objects.equal(this.orderKey, other.orderKey)
&& Objects.equal(this.familyKey, other.familyKey)
&& Objects.equal(this.genusKey, other.genusKey)
&& Objects.equal(this.subgenusKey, other.subgenusKey)
&& Objects.equal(this.speciesKey, other.speciesKey)
&& Objects.equal(this.kingdom, other.kingdom)
&& Objects.equal(this.phylum, other.phylum)
&& Objects.equal(this.clazz, other.clazz)
&& Objects.equal(this.order, other.order)
&& Objects.equal(this.family, other.family)
&& Objects.equal(this.genus, other.genus)
&& Objects.equal(this.subgenus, other.subgenus)
&& Objects.equal(this.species, other.species);
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("kingdomKey", kingdomKey)
.add("phylumKey", phylumKey)
.add("classKey", classKey)
.add("orderKey", orderKey)
.add("familyKey", familyKey)
.add("genusKey", genusKey)
.add("subgenusKey", subgenusKey)
.add("speciesKey", speciesKey)
.add("kingdom", kingdom)
.add("phylum", phylum)
.add("class", clazz)
.add("order", order)
.add("family", family)
.add("genus", genus)
.add("subgenus", subgenus)
.add("species", species)
.toString();
}
}