package com.revolsys.util; import java.util.HashMap; import java.util.Map; public enum CompassDirection { E("East"), // N("North"), // NE("North East"), // NW("North West"), // S("South"), // SE("South East"), // SW("South West"), // W("West"); private static final Map<String, CompassDirection> ALIAS_MAP = new HashMap<>(); static { for (final CompassDirection direction : values()) { final String name = direction.name(); final String description = direction.getDescription(); addNameAlias(name, direction); addNameAlias(name.toLowerCase(), direction); addDescriptionAlias(description, direction); addDescriptionAlias(description.toLowerCase(), direction); addDescriptionAlias(description.toLowerCase(), direction); } } private static void addDescriptionAlias(final String description, final CompassDirection direction) { ALIAS_MAP.put(description, direction); ALIAS_MAP.put(description.replace(" ", ""), direction); } private static void addNameAlias(final String name, final CompassDirection direction) { ALIAS_MAP.put(name, direction); if (name.length() == 2) { ALIAS_MAP.put(name.substring(0, 0) + " " + name.substring(1), direction); } } public static CompassDirection getDirection(final String name) { final CompassDirection direction = ALIAS_MAP.get(name); if (direction == null && name != null) { return ALIAS_MAP.get(name.toUpperCase()); } return direction; } private String description; private CompassDirection(final String description) { this.description = description; } public String getDescription() { return this.description; } public String getName() { return name(); } }