package fi.hsl.parkandride.core.service;
import java.beans.Introspector;
import java.io.InputStream;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TranslationService {
private static final Logger log = LoggerFactory.getLogger(TranslationService.class);
private JsonNode translations;
public TranslationService() {
try (InputStream translStream = getClass().getResourceAsStream("/static/assets/translations-fi.json")) {
translations = new ObjectMapper().readTree(translStream);
} catch (Exception e) {
log.warn("Failed to read translation file", e);
}
}
public String translate(Enum<?> value) {
if (value == null) {
return null;
}
String translationGroup = Introspector.decapitalize(value.getClass().getSimpleName());
JsonNode node = translations.path(translationGroup).path(value.name());
if (node.isMissingNode()) {
node = translations.findValue(value.name());
}
if (node != null) {
node = node.get("label");
}
return node != null ? node.asText() : value.name();
}
}