package com.airlock.iam.common.api.domain.model.user;

import com.airlock.iam.elog.api.ELogger;
import com.airlock.iam.elog.api.ELoggerFactory;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Locale;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;

public final class CurrentLocale {
   private static final ELogger LOG = ELoggerFactory.getLogger(CurrentLocale.class);
   private Locale locale;

   public Locale get() {
      return this.locale;
   }

   public String getLanguage() {
      return this.locale.getLanguage();
   }

   public Optional<String> getCountry() {
      return this.locale.getCountry().isEmpty() ? Optional.empty() : Optional.of(this.locale.getCountry());
   }

   public void update(Locale newLocale) {
      if (newLocale != null) {
         if (!StringUtils.isBlank(newLocale.getLanguage())) {
            LOG.info("Updating current locale to \"%s\"".formatted(newLocale));
            this.locale = newLocale;
         }
      }
   }

   @SuppressFBWarnings(justification = "generated code")
   public CurrentLocale(Locale locale) {
      this.locale = locale;
   }
}
