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

import java.util.Arrays;

import de.ivu.elect.business.gebietsbaum.boundary.GebietsartTemplate;

/**
 * NICHT ERWEITERN, NICHT FÜR NEUE KUNDEN ALS VORLAGE VERWENDEN(!)
 */
public enum DefaultGebietsart implements GebietsartTemplate {

  STIMMBEZIRK {
    @Override
    public GebietsartIcon getGebietsartIcon() {
      return GebietsartIcon.WAHLLOKAL;
    }

    @Override
    public String getGebietsartTitle() {
      return "Stimmbezirk";
    }

    @Override
    public String getGebietsartName() {
      return "STIMMBEZIRK";
    }

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

    @Override
    public long getSortierPosition() {
      return 100;
    }

    @Override
    public GebietsartBezirksart getGebietsartBezirksart() {
      return GebietsartBezirksart.STIMMBEZIRK;
    }
  },

  BRIEFWAHLBEZIRK {
    @Override
    public GebietsartIcon getGebietsartIcon() {
      return GebietsartIcon.BRIEFWAHLLOKAL;
    }

    @Override
    public String getGebietsartTitle() {
      return "Briefwahlbezirk";
    }

    @Override
    public String getGebietsartName() {
      return "BRIEFWAHLBEZIRK";
    }

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

    @Override
    public long getSortierPosition() {
      return 101;
    }

    @Override
    public GebietsartBezirksart getGebietsartBezirksart() {
      return GebietsartBezirksart.BRIEFWAHLBEZIRK;
    }
  },

  RESERVERBEZIRK {
    @Override
    public GebietsartIcon getGebietsartIcon() {
      return GebietsartIcon.RESERVEPOOL;
    }

    @Override
    public String getGebietsartTitle() {
      return "Reservepool";
    }

    @Override
    public String getGebietsartName() {
      return "RESERVEPOOL";
    }

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

    @Override
    public long getSortierPosition() {
      return 102;
    }

    @Override
    public GebietsartBezirksart getGebietsartBezirksart() {
      return GebietsartBezirksart.RESERVEBEZIRK;
    }
  };

  private DefaultGebietsart() {
  }

  @Override
  public String getDarstellung() {
    return new Gebietsart().getDarstellung();
  }

  public static DefaultGebietsart findByGebietsartBezirksart(GebietsartBezirksart bezirksart) {
    return Arrays.stream(values()).filter(value -> bezirksart.equals(value.getGebietsartBezirksart())).findFirst().orElse(null);
  }
}
