|  | package forestry.api.genetics; | 
|  |  | 
|  | /** | 
|  | * Biological classifications from domain down to genus. | 
|  | * | 
|  | * Used by the *alyzers to display hierarchies. | 
|  | */ | 
|  | public interface IClassification { | 
|  |  | 
|  | public enum EnumClassLevel { | 
|  |  | 
|  | DOMAIN(0x777fff, true), KINGDOM(0x77c3ff), PHYLUM(0x77ffb6, true), DIVISION(0x77ffb6, true), CLASS(0x7bff77), ORDER(0xbeff77), FAMILY(0xfffd77), | 
|  | SUBFAMILY(0xfffd77), TRIBE(0xfffd77), GENUS(0xffba77); | 
|  |  | 
|  | private int colour; | 
|  | private boolean isDroppable; | 
|  |  | 
|  | private EnumClassLevel(int colour) { | 
|  | this(colour, false); | 
|  | } | 
|  |  | 
|  | private EnumClassLevel(int colour, boolean isDroppable) { | 
|  | this.colour = colour; | 
|  | this.isDroppable = isDroppable; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * @return Colour to use for displaying this classification. | 
|  | */ | 
|  | public int getColour() { | 
|  | return colour; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * @return Indicates whether display of this classification level can be ommitted in case of space constraints. | 
|  | */ | 
|  | public boolean isDroppable() { | 
|  | return isDroppable; | 
|  | } | 
|  | } | 
|  |  | 
|  | /** | 
|  | * @return Level inside the full hierarchy this particular classification is located at. | 
|  | */ | 
|  | EnumClassLevel getLevel(); | 
|  |  | 
|  | /** | 
|  | * @return Unique String identifier. | 
|  | */ | 
|  | String getUID(); | 
|  |  | 
|  | /** | 
|  | * @return Localized branch name for user display. | 
|  | */ | 
|  | String getName(); | 
|  |  | 
|  | /** | 
|  | * A branch approximates a "genus" in real life. Real life examples: "Micrapis", "Megapis" | 
|  | * | 
|  | * @return flavour text (may be null) | 
|  | */ | 
|  | String getScientific(); | 
|  |  | 
|  | /** | 
|  | * @return Localized description of this branch. (May be null.) | 
|  | */ | 
|  | String getDescription(); | 
|  |  | 
|  | /** | 
|  | * @return Member groups of this one. | 
|  | */ | 
|  | IClassification[] getMemberGroups(); | 
|  |  | 
|  | /** | 
|  | * Adds subgroups to this group. | 
|  | */ | 
|  | void addMemberGroup(IClassification group); | 
|  |  | 
|  | /** | 
|  | * @return Member species of this group. | 
|  | */ | 
|  | IAlleleSpecies[] getMemberSpecies(); | 
|  |  | 
|  | /** | 
|  | * Used by the allele registry to populate internal collection of branch members on the fly. | 
|  | * | 
|  | * @param species | 
|  | */ | 
|  | void addMemberSpecies(IAlleleSpecies species); | 
|  |  | 
|  | /** | 
|  | * @return Parent classification, null if this is root. | 
|  | */ | 
|  | IClassification getParent(); | 
|  |  | 
|  | /** | 
|  | * Only used internally by the AlleleRegistry if this classification has been added to another one. | 
|  | * | 
|  | * @param parent | 
|  | */ | 
|  | void setParent(IClassification parent); | 
|  | } |