package uk.ac.ox.zoo.seeg.abraid.mp.common.domain; import javax.persistence.*; /** * Represents the extent class (e.g. presence, absence) of an administrative unit. * The admin unit will either be AdminUnitGlobal or AdminUnitTropical, depending on the property of the DiseaseGroup. * Copyright (c) 2014 University of Oxford */ @MappedSuperclass public abstract class AbstractAdminUnitDiseaseExtentClass { // The primary key. @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; // The global administrative unit. @ManyToOne @JoinColumn(name = "global_gaul_code") private AdminUnitGlobal adminUnitGlobal; // The tropical administrative unit. @ManyToOne @JoinColumn(name = "tropical_gaul_code") private AdminUnitTropical adminUnitTropical; // The disease extent class. @ManyToOne @JoinColumn(name = "disease_extent_class", nullable = false) private DiseaseExtentClass diseaseExtentClass; protected AbstractAdminUnitDiseaseExtentClass() { } protected AbstractAdminUnitDiseaseExtentClass(AbstractAdminUnitDiseaseExtentClass adminUnitExtentClass) { adminUnitGlobal = adminUnitExtentClass.getAdminUnitGlobal(); adminUnitTropical = adminUnitExtentClass.getAdminUnitTropical(); diseaseExtentClass = adminUnitExtentClass.getDiseaseExtentClass(); } public Integer getId() { return id; } public AdminUnitGlobal getAdminUnitGlobal() { return adminUnitGlobal; } public void setAdminUnitGlobal(AdminUnitGlobal adminUnitGlobal) { this.adminUnitGlobal = adminUnitGlobal; } public AdminUnitTropical getAdminUnitTropical() { return adminUnitTropical; } public void setAdminUnitTropical(AdminUnitTropical adminUnitTropical) { this.adminUnitTropical = adminUnitTropical; } /** * The AdminUnitGlobal or the AdminUnitTropical, whichever of the pair is not null. * @return The (global or tropical) admin unit. */ public AdminUnitGlobalOrTropical getAdminUnitGlobalOrTropical() { return (adminUnitGlobal == null) ? adminUnitTropical : adminUnitGlobal; } /** * Sets the global or tropical admin unit. * @param adminUnit The global or tropical admin unit. */ public void setAdminUnitGlobalOrTropical(AdminUnitGlobalOrTropical adminUnit) { if (adminUnit instanceof AdminUnitGlobal) { setAdminUnitGlobal((AdminUnitGlobal) adminUnit); } else if (adminUnit instanceof AdminUnitTropical) { setAdminUnitTropical((AdminUnitTropical) adminUnit); } } public DiseaseExtentClass getDiseaseExtentClass() { return diseaseExtentClass; } public void setDiseaseExtentClass(DiseaseExtentClass diseaseExtentClass) { this.diseaseExtentClass = diseaseExtentClass; } ///COVERAGE:OFF - generated code ///CHECKSTYLE:OFF AvoidInlineConditionalsCheck|LineLengthCheck|MagicNumberCheck|NeedBracesCheck - generated code @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof AbstractAdminUnitDiseaseExtentClass)) return false; AbstractAdminUnitDiseaseExtentClass that = (AbstractAdminUnitDiseaseExtentClass) o; if (adminUnitGlobal != null ? !adminUnitGlobal.equals(that.adminUnitGlobal) : that.adminUnitGlobal != null) return false; if (adminUnitTropical != null ? !adminUnitTropical.equals(that.adminUnitTropical) : that.adminUnitTropical != null) return false; if (diseaseExtentClass != null ? !diseaseExtentClass.equals(that.diseaseExtentClass) : that.diseaseExtentClass != null) return false; if (id != null ? !id.equals(that.id) : that.id != null) return false; return true; } @Override public int hashCode() { int result = id != null ? id.hashCode() : 0; result = 31 * result + (adminUnitGlobal != null ? adminUnitGlobal.hashCode() : 0); result = 31 * result + (adminUnitTropical != null ? adminUnitTropical.hashCode() : 0); result = 31 * result + (diseaseExtentClass != null ? diseaseExtentClass.hashCode() : 0); return result; } ///CHECKSTYLE:ON ///COVERAGE:ON }