public enum StoreCode { BR(Language.pt_BR, Subdomain.BR, Language.pt_BR, Language.en), US(Language.en_US, Subdomain.WWW, Language.en_US) // .... ; private final Language defaultLanguage; private final Language [] supportedLanguages; private final Subdomain subdomain; StoreCode(Language defaultLanguage, Subdomain subdomain, Language ... supportedLanguages) { this.defaultLanguage = defaultLanguage; this.subdomain = subdomain; this.supportedLanguages = supportedLanguages; } public Language getDefaultLanguage() { return defaultLanguage; } public Subdomain getSubdomain() { return subdomain; } public Language[] getSupportedLanguages() { return supportedLanguages; } }
lunes, 14 de marzo de 2016
Enums: Campos de arreglo
Usando arreglos en campos del enum. En este ejemplo utilizado para agragar los lenguajes soportados por una tienda.
viernes, 12 de febrero de 2016
Enums: Buscando valores de manera invertida
Un tip interesante para simplificar la búsqueda en un enum por alguna de sus propiedades. En este ejemplo tenemos un enum para tiendas de países. Una de sus propiedades es el subdominio. Si queremos tener un método para retornar el valor de la tienda usando como entrada el subdominio, podemos preparar un mapa de manera estática donde la llave es el subdominio.
public enum CountryStore { AD(Language.en, Measures.METRIC, Subdomain.AND), AE(Language.en, Measures.METRIC, Subdomain.AE), AF(Language.en, Measures.METRIC, Subdomain.AF), ... private final Language defaultLanguage; private final Measures defaultMeasure; private final Subdomain subdomain; CountryStore(Language defaultLanguage, Measures defaultMeasure, Subdomain subdomain) { this.defaultLanguage = defaultLanguage; this.defaultMeasure = defaultMeasure; this.subdomain = subdomain; } private final static Map<String, StoreCode> subdomainMap; static { // Reverse lookup preparation for subdomains. Map<String, CountryStore> smap = new HashMap<String, CountryStore>(); for(CountryStore store: CountryStore.values()) { smap.put(store.getSubdomain().name().toLowerCase(), store); } subdomainMap = Collections.unmodifiableMap(smap); } public static CountryStore fromSubdomain(String subdomain) { return subdomain == null ? null : subdomainMap.get(subdomain.toLowerCase()); } }
Suscribirse a:
Entradas (Atom)