package es.uvigo.darwin.prottest.taxa;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* @author Andrew Rambaut
* @author Alexei Drummond
*
* @version $Id: TaxonomicLevel.java 185 2006-01-23 23:03:18Z rambaut $
*/
public class TaxonomicLevel {
/**
* A private constructor. TaxonomicLevel objects can only be created by the static TaxonomicLevel.getTaxonomicLevel()
* factory method.
* @param name the name of the taxonomic level
*/
private TaxonomicLevel(String name) {
this.name = name;
}
/**
* get the name of the taxonomic level
* @return the name
*/
public String getName() {
return name;
}
/**
* The name of this taxonomic level
*/
private final String name;
// Static factory methods
/**
* A static method that returns a TaxonomicLevel object with the given name. If this has
* already been created then the same instance will be returned.
* @param name the name of the taxonomic level
* @return the taxonomic level object
*/
public static TaxonomicLevel getTaxonomicLevel(String name) {
TaxonomicLevel taxonomicLevel = (TaxonomicLevel)taxonomicLevels.get(name);
if (taxonomicLevel == null) {
taxonomicLevel = new TaxonomicLevel(name);
taxonomicLevels.put(name, taxonomicLevel);
}
return taxonomicLevel;
}
/**
* Returns a Set containing all the currently created taxonomic levels.
* @return the set of taxonomic levels
*/
public static Set getTaxonomicLevels() {
return Collections.unmodifiableSet(taxonomicLevels.entrySet());
}
/**
* A hash map containing name, object pairs.
*/
private static Map<String, TaxonomicLevel> taxonomicLevels = new HashMap<String, TaxonomicLevel>();
}