
package de.ivu.elect.business.gebietsbaum.entity;

import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.apache.commons.lang3.StringUtils.leftPad;
import static org.apache.commons.lang3.StringUtils.trimToEmpty;

public enum BundeslandKennzahl {
  SCHLESWIG_HOLSTEIN(1, "Schleswig-Holstein", "SH"),
  HAMBURG(2, "Hamburg", "HH"),
  NIEDERSACHSEN(3, "Niedersachsen", "NI"),
  BREMEN(4, "Bremen", "HB"),
  NORDRHEIN_WESTFALEN(5, "Nordrhein-Westfalen", "NW"),
  HESSEN(6, "Hessen", "HE"),
  RHEINLAND_PFALZ(7, "Rheinland-Pfalz", "RP"),
  BADEN_WUERTTEMBERG(8, "Baden-Württemberg", "BW"),
  BAYERN(9, "Bayern", "BY"),
  SAARLAND(10, "Saarland", "SL"),
  BERLIN(11, "Berlin", "BE"),
  BRANDENBURG(12, "Brandenburg", "BB"),
  MECKLENBURG_VORPOMMERN(13, "Mecklenburg-Vorpommern", "MV"),
  SACHSEN(14, "Sachsen", "SN"),
  SACHSEN_ANHALT(15, "Sachsen-Anhalt", "ST"),
  THUERINGEN(16, "Thüringen", "TH");

  private final long kennzahl;

  private final String bezeichnung;

  private final String kuerzel;

  BundeslandKennzahl(long kennzahl, String bezeichnung, String kuerzel) {
    this.kennzahl = kennzahl;

    this.bezeichnung = bezeichnung;
    this.kuerzel = kuerzel;
  }

  // ...weil wir alle Gebietsnummern als String speichern...
  public String getKennzahl() {
    return Long.toString(kennzahl);
  }

  public String getKennzahlFormatted() {
    return formatKennzahl(getKennzahl());
  }

  public String getBezeichnung() {
    return bezeichnung;
  }

  public String getKuerzel() {
    return kuerzel;
  }

  public static String formatKennzahl(String kennzahl) {
    if (isNotBlank(kennzahl)) {
      return leftPad(trimToEmpty(kennzahl), 2, "0");
    }

    return kennzahl;
  }
}
