package protocolP2P; import java.util.HashMap; import java.util.Map; import tools.BytesArrayTools; /** HashAlgorithm enum. * @author Louis Royer * @author Flavien Haas * @author JS Auge * @version 1.0 */ public enum HashAlgorithm { SHA512("SHA-512"), MD5("MD5"); private String name; /* To be able to convert name to enum */ private static final Map BY_NAME = new HashMap<>(); /* Initialization of HashMap */ static { for (HashAlgorithm h: values()) { assert !BY_NAME.containsKey(h.name) : "Duplicate in " + HashAlgorithm.class.getCanonicalName(); BY_NAME.put(h.name, h); } } private HashAlgorithm(String name) { this.name = name; } public String getName() { return name; } /** Gives enum from name. * @param name name of the hash * @return enum element * @throws InterlanError */ protected static HashAlgorithm fromName(String name) throws InternalError { HashAlgorithm h = BY_NAME.get(BytesArrayTools.cleanStrings(name)); assert h != null : "Bad algorithm name: " + name; if (h == null) { throw new InternalError(); } return h; } }