
package de.ivu.elect.presentation.hilfe;

import java.util.Locale;

import javax.annotation.Nullable;

import de.ivu.elect.business.lokalisierung.entity.LokalisierungLocale;

public enum OnlineHilfeSprache {

  DEUTSCH {

    @Override
    public String getOnlineHilfePath() {
      return "";
    }

    @Override
    protected Locale getLocale() {
      return LokalisierungLocale.DEUTSCH.getLocale();
    }
  },
  ENGLISCH {

    @Override
    public String getOnlineHilfePath() {
      return "/en";
    }

    @Override
    protected Locale getLocale() {
      return LokalisierungLocale.ENGLISCH.getLocale();
    }
  },
  FRANZOESISCH {

    @Override
    public String getOnlineHilfePath() {
      return "/fr";
    }

    @Override
    protected Locale getLocale() {
      return LokalisierungLocale.FRANZOESISCH.getLocale();
    }
  },
  NIEDELAENDISCH {

    @Override
    public String getOnlineHilfePath() {
      return "/nl";
    }

    @Override
    protected Locale getLocale() {
      return LokalisierungLocale.NIEDERLAENDISCH.getLocale();
    }
  };

  public abstract String getOnlineHilfePath();

  protected abstract Locale getLocale();

  @Nullable
  public static OnlineHilfeSprache fromLocale(Locale locale) {
    if (locale != null) {
      for (OnlineHilfeSprache sprache : values()) {
        String language = sprache.getLocale().getLanguage();

        if (sprache.getLocale().equals(locale) || language.equalsIgnoreCase(locale.getLanguage())) {
          return sprache;
        }
      }
    }

    return null;
  }
}
