package com.belladati.sdk.util.impl; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import com.belladati.sdk.util.Localizable; import com.fasterxml.jackson.databind.JsonNode; public class LocalizationImpl implements Localizable { private final String name; private final Map<String, String> l10n; public LocalizationImpl(JsonNode json) { this.name = json.get("name").asText(); Map<String, String> l10n = new HashMap<String, String>(); if (json.hasNonNull("localization")) { JsonNode locNode = json.get("localization"); for (Iterator<Entry<String, JsonNode>> iterator = locNode.fields(); iterator.hasNext();) { Entry<String, JsonNode> entry = iterator.next(); if (entry.getValue().isTextual()) { l10n.put(entry.getKey().toLowerCase(Locale.ENGLISH), entry.getValue().asText()); } } } this.l10n = Collections.unmodifiableMap(l10n); } @Override public String getName(Locale locale) { String loc = l10n.get(locale.getLanguage().toLowerCase(Locale.ENGLISH)); return loc != null ? loc : name; } @Override public boolean hasLocalization(Locale locale) { return l10n.containsKey(locale.getLanguage().toLowerCase(Locale.ENGLISH)); } }