TranslationUtil.java
package fr.avenirsesr.portfolio.api.infrastructure.adapter.util;
import fr.avenirsesr.portfolio.api.domain.exception.LanguageException;
import fr.avenirsesr.portfolio.api.domain.model.enums.ELanguage;
import fr.avenirsesr.portfolio.api.infrastructure.adapter.model.TranslationEntity;
import fr.avenirsesr.portfolio.api.infrastructure.context.RequestContext;
import fr.avenirsesr.portfolio.api.infrastructure.context.RequestData;
import java.util.Optional;
import java.util.Set;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class TranslationUtil {
public static <T extends TranslationEntity> T getTranslation(Set<T> translations) {
var preferredLanguage =
Optional.ofNullable(RequestContext.get())
.map(RequestData::preferredLanguage)
.orElse(ELanguage.FALLBACK);
return translations.stream()
.filter(t -> t.getLanguage().equals(preferredLanguage))
.findFirst()
.orElseGet(
() ->
translations.stream()
.filter(t -> t.getLanguage().equals(ELanguage.FALLBACK))
.findFirst()
.orElseThrow(LanguageException::new));
}
}