
package de.ivu.elect.exchange.wahl;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.ivu.elect.business.gebietsbaum.entity.GebietSystemGebietsebene;
import de.ivu.elect.business.gebietsbaum.entity.Gebietsart;
import de.ivu.elect.business.gebietsbaum.entity.GebietsartBezirksart;
import de.ivu.elect.business.gebietsbaum.entity.GebietsartIcon;
import de.ivu.elect.business.gebietsbaum.entity.Gebietsarteigenschaft;
import de.ivu.elect.business.wahl.entity.CommonWahlart;
import de.ivu.elect.business.wahl.entity.ErgebnisartUmschaltbar;
import de.ivu.elect.business.wahl.entity.UmgangAWerte;
import de.ivu.elect.business.wahl.entity.UmgangBWerte;
import de.ivu.elect.business.wahl.entity.UmgangGueltigeWerte;
import de.ivu.elect.business.wahl.entity.WahlKonfiguration;
import de.ivu.elect.business.wahl.entity.Wahlart;
import de.ivu.elect.business.wahl.entity.WahlartDokumentvorlagen;
import de.ivu.elect.business.wahl.entity.WahlartSitzberechnungsalgorithmus;
import de.ivu.elect.business.wahl.entity.WahlartStimmenProWaehlerArt;
import de.ivu.elect.business.wahl.entity.WahlartSystemGebietsebene;
import de.ivu.elect.business.wahl.entity.WahlberechtigungImAusland;
import de.ivu.elect.business.wahl.entity.Zulassungspruefung;
import de.ivu.elect.interfaces.core.konfiguration.Bezirksart;
import de.ivu.elect.interfaces.core.konfiguration.Icon;
import de.ivu.elect.interfaces.core.konfiguration.StimmenProWaehlerArt;

public class WahlKonfigurationMapper implements Serializable {

  private static final Logger LOG = LoggerFactory.getLogger(WahlKonfigurationMapper.class);

  private static final long serialVersionUID = 1L;

  public WahlKonfigurationMapper() {
    super();
  }

  public WahlKonfiguration mappe(de.ivu.elect.interfaces.core.konfiguration.WahlKonfiguration wahlKonfiguration) {
    List<Wahlart> wahlarten = wahlKonfiguration.getWahlarten().stream().map(this::mappe).collect(Collectors.toCollection(() -> new ArrayList<>(wahlKonfiguration.getWahlarten().size())));

    List<Gebietsart> gebietsarten = wahlKonfiguration.getGebietsarten().stream().map(this::mappe).collect(Collectors.toCollection(() -> new ArrayList<>(wahlKonfiguration.getGebietsarten().size())));

    List<Gebietsarteigenschaft> gebietsarteigenschaften = wahlKonfiguration.getGebietsarteigenschaften().stream().map(this::mappe)
        .collect(Collectors.toCollection(() -> new ArrayList<>(wahlKonfiguration.getGebietsarteigenschaften().size())));

    return new WahlKonfiguration(wahlarten, gebietsarten, gebietsarteigenschaften);
  }

  public de.ivu.elect.interfaces.core.konfiguration.WahlKonfiguration mappe(WahlKonfiguration wahlKonfiguration) {
    List<de.ivu.elect.interfaces.core.konfiguration.Wahlart> wahlarten = wahlKonfiguration.getWahlarten().stream().sorted(Comparator.comparing(Wahlart::getName)).map(this::mappe)
        .collect(Collectors.toCollection(() -> new ArrayList<>(wahlKonfiguration.getWahlarten().size())));

    List<de.ivu.elect.interfaces.core.konfiguration.Gebietsart> gebietsarten = wahlKonfiguration.getGebietsarten().stream().sorted(Comparator.comparing(Gebietsart::getName)).map(this::mappe)
        .collect(Collectors.toCollection(() -> new ArrayList<>(wahlKonfiguration.getGebietsarten().size())));

    List<de.ivu.elect.interfaces.core.konfiguration.Gebietsarteigenschaft> gebietsarteigenschaften = wahlKonfiguration
        .getGebietsarteigenschaften().stream().sorted(Comparator.comparing(Gebietsarteigenschaft::getWahlart, Comparator.comparing(Wahlart::getName))
            .thenComparing(Gebietsarteigenschaft::getGebietsart, Comparator.comparing(Gebietsart::getName)))
        .map(this::mappe).collect(Collectors.toCollection(() -> new ArrayList<>(wahlKonfiguration.getGebietsarteigenschaften().size())));

    de.ivu.elect.interfaces.core.konfiguration.WahlKonfiguration result = new de.ivu.elect.interfaces.core.konfiguration.WahlKonfiguration();
    result.setGebietsarten(gebietsarten);
    result.setWahlarten(wahlarten);
    result.setGebietsarteigenschaften(gebietsarteigenschaften);

    return result;
  }

  public de.ivu.elect.interfaces.core.konfiguration.Gebietsarteigenschaft mappe(Gebietsarteigenschaft from) {
    de.ivu.elect.interfaces.core.konfiguration.Gebietsarteigenschaft result = new de.ivu.elect.interfaces.core.konfiguration.Gebietsarteigenschaft();

    result.setGebietsartName(from.getGebietsart().getName());
    result.setWahlartName(from.getWahlart().getName());
    result.setBriefwahlgebiet(from.getBriefwahlgebiet());
    result.setDirektwahlgebiet(from.getDirektwahlgebiet());
    result.setErfassungsgebiet(from.getErfassungsgebiet());
    result.setErgebnisRelevant(from.getErgebnisRelevantDeprecated());
    result.setListenkandidatenWaehlbar(from.getListenkandidatenWaehlbar());
    result.setListenwahlgebiet(from.getListenwahlgebiet());
    result.setReferendumgebiet(from.getReferendumgebiet());
    result.setWahlgebiet(from.getWahlgebiet());
    if (from.getWahlartBeiAufteilung() != null) {
      result.setWahlartBeiAufteilung(from.getWahlartBeiAufteilung().getName());
    }

    return result;
  }

  public Gebietsarteigenschaft mappe(de.ivu.elect.interfaces.core.konfiguration.Gebietsarteigenschaft from) {
    Gebietsarteigenschaft result = new Gebietsarteigenschaft();

    Gebietsart gebietsart = new Gebietsart();
    gebietsart.setName(from.getGebietsartName());

    result.setGebietsart(gebietsart);

    Wahlart wahlart = new Wahlart();
    wahlart.setName(from.getWahlartName());

    result.setWahlart(wahlart);

    result.setBriefwahlgebiet(from.getBriefwahlgebiet());
    result.setDirektwahlgebiet(from.getDirektwahlgebiet());
    result.setErfassungsgebiet(from.getErfassungsgebiet());
    result.setErgebnisRelevantDeprecated(from.getErgebnisRelevant());
    result.setListenkandidatenWaehlbar(from.getListenkandidatenWaehlbar());
    result.setListenwahlgebiet(from.getListenwahlgebiet());
    result.setReferendumgebiet(from.getReferendumgebiet());
    result.setWahlgebiet(from.getWahlgebiet());
    if (StringUtils.isNotBlank(from.getWahlartBeiAufteilung())) {
      Wahlart wahlart1BeiAufteilung = new Wahlart();
      wahlart1BeiAufteilung.setName(from.getWahlartBeiAufteilung());
      result.setWahlartBeiAufteilung(wahlart1BeiAufteilung);
    }

    return result;
  }

  public Gebietsart mappe(de.ivu.elect.interfaces.core.konfiguration.Gebietsart from) {
    Gebietsart result = new Gebietsart();
    result.setName(from.getName());
    result.setPosition(from.getPosition());
    result.setIcon(mappe(from.getIcon()));
    result.setTitel(from.getTitel());
    result.setKennzeichen(from.getKennzeichen());
    result.setBezirksart(mappe(from.getBezirksart()));
    if (StringUtils.isNotBlank(from.getDarstellung())) {
      result.setDarstellung(from.getDarstellung());
    }
    if (StringUtils.isNotBlank(from.getSystemGebietsebene())) {
      result.setSystemGebietsebene(GebietSystemGebietsebene.valueOf(from.getSystemGebietsebene()));
    }

    return result;
  }

  public de.ivu.elect.interfaces.core.konfiguration.Gebietsart mappe(Gebietsart from) {
    de.ivu.elect.interfaces.core.konfiguration.Gebietsart result = new de.ivu.elect.interfaces.core.konfiguration.Gebietsart();
    result.setName(from.getName());
    result.setPosition(from.getPosition());
    result.setIcon(mappe(from.getIcon()));
    result.setTitel(from.getTitel());
    result.setKennzeichen(from.getKennzeichen());
    result.setBezirksart(mappe(from.getBezirksart()));
    result.setDarstellung(from.getDarstellung());
    result.setSystemGebietsebene(from.getSystemGebietsebene().name());

    return result;
  }

  public Wahlart mappe(de.ivu.elect.interfaces.core.konfiguration.Wahlart from) {
    Wahlart result = new Wahlart();
    result.setName(from.getName());
    result.setTitel(from.getTitel());
    if (result.getTitel() == null) { // nicht "" (blank)
      result.setTitel(result.getName()); // Legacy...
    }

    result.setKurzname(from.getKurzname());
    result.setKennzeichen(from.getKennzeichen());

    if (from.getAnzahlStimmzettel() != null) { // Abwärtskompatibilität
      result.setAnzahlStimmzettel(from.getAnzahlStimmzettel());
    }

    result.setCommonWahlart(mappe(from.getCommonWahlart()));
    result.setFarbe(from.getFarbe());
    result.setGruppenvereinigungenErlaubt(Boolean.TRUE.equals(from.getGruppenvereinigungenErlaubt()));
    result.setLeereListenErlaubt(Boolean.TRUE.equals(from.getLeereListenErlaubt()));
    result.setListenverbindungenErlaubt(Boolean.TRUE.equals(from.getListenverbindungenErlaubt()));
    result.setMaxAnzahlErsatzkandidaturen(from.getAnzahlErsatzkandidaten());
    result.setGruppenreihenfolgeVorgegeben(from.getGruppenreihenfolgeVorgegeben());
    result.setAnzahlStimmenProWaehlerArt(mappe(from.getStimmenProWaehlerArt()));
    result.setAnzahlStimmenProWaehler(from.getAnzahlStimmenProWaehler());
    result.setMaxAnzahlNennungen(from.getMaxAnzahlNennungen());

    result.setUmgangAPruefkennzeichenVorlaeufig(mappe(from.getUmgangAPruefkennzeichenVorlaeufig()));
    result.setUmgangAPruefkennzeichenEndgueltig(mappe(from.getUmgangAPruefkennzeichenEndgueltig()));
    result.setUmgangAOhneWahlscheinVorlaeufig(mappe(from.getUmgangA1Vorlaeufig()));
    result.setUmgangAOhneWahlscheinEndgueltig(mappe(from.getUmgangA1Endgueltig()));
    result.setUmgangAMitWahlscheinVorlaeufig(mappe(from.getUmgangA2Vorlaeufig()));
    result.setUmgangAMitWahlscheinEndgueltig(mappe(from.getUmgangA2Endgueltig()));
    result.setUmgangANichtImWaehlerverzeichnisVorlaeufig(mappe(from.getUmgangA3Vorlaeufig()));
    result.setUmgangANichtImWaehlerverzeichnisEndgueltig(mappe(from.getUmgangA3Endgueltig()));
    result.setUmgangAGesamtVorlaeufig(mappe(from.getUmgangAGesamtVorlaeufig()));
    result.setUmgangAGesamtEndgueltig(mappe(from.getUmgangAGesamtEndgueltig()));
    result.setUmgangBOhneWahlscheinVorlaeufig(mappe(from.getUmgangB1Vorlaeufig()));
    result.setUmgangBOhneWahlscheinEndgueltig(mappe(from.getUmgangB1Endgueltig()));
    result.setUmgangBMitWahlscheinVorlaeufig(mappe(from.getUmgangB2Vorlaeufig()));
    result.setUmgangBMitWahlscheinEndgueltig(mappe(from.getUmgangB2Endgueltig()));
    result.setUmgangBGesamtVorlaeufig(mappe(from.getUmgangBGesamtVorlaeufig()));
    result.setUmgangBGesamtEndgueltig(mappe(from.getUmgangBGesamtEndgueltig()));
    result.setUmgangGueltigeVorlaeufig(mappe(from.getUmgangGueltigeVorlaeufig()));
    result.setUmgangGueltigeEndgueltig(mappe(from.getUmgangGueltigeEndgueltig()));
    result.setUmgangUngueltigeVorlaeufig(mappe(from.getUmgangUngueltigeVorlaeufig()));
    result.setUmgangUngueltigeEndgueltig(mappe(from.getUmgangUngueltigeEndgueltig()));
    result.setZulassungspruefung(mappe(from.getZulassungspruefung()));

    result.setWahlbezeichnungLang(from.getWahlbezeichnungLang());
    result.setWahlausschussbezeichnung(from.getWahlausschussbezeichnung());
    result.setZuWaehlendesGremium(from.getZuWaehlendesGremium());

    if (from.getErgebnisartUmschaltbar() != null) {
      result.setErgebnisartUmschaltbar(mappe(from.getErgebnisartUmschaltbar()));
    }

    if (from.getErgebniseingangUebernahmeArt() != null) {
      result.setErfassungUebernahmeArt(mappe(from.getErgebniseingangUebernahmeArt()));
    }
    if (from.getErgebniseingangUebernahmeManuell() != null) {
      result.setErfassungUebernahmeManuell(mappe(from.getErgebniseingangUebernahmeManuell()));
    }

    if (StringUtils.isNotBlank(from.getDokumentvorlagen())) {
      result.setDokumentvorlagen(WahlartDokumentvorlagen.valueOf(from.getDokumentvorlagen()));
    }

    if (StringUtils.isNotBlank(from.getSitzberechnungsalgorithmus())) {
      result.setSitzberechnungsalgorithmus(WahlartSitzberechnungsalgorithmus.valueOf(from.getSitzberechnungsalgorithmus()));
    }

    if (StringUtils.isNotBlank(from.getSystemGebietsebene())) {
      result.setSystemGebietsebene(WahlartSystemGebietsebene.valueOf(from.getSystemGebietsebene()));
    }

    if (from.getWahlberechtigungImAusland() != null) /* Abwärtskompatibel */ {
      result.setWahlberechtigungImAusland(mappe(from.getWahlberechtigungImAusland()));
    }

    return result;
  }

  public ErgebnisartUmschaltbar mappe(de.ivu.elect.interfaces.core.konfiguration.ErgebnisartUmschaltbar ergebnisartUmschaltbar) {
    return ErgebnisartUmschaltbar.valueOf(ergebnisartUmschaltbar.name());
  }

  public de.ivu.elect.business.wahl.entity.WahlErgebniseingangUebernahmeArt mappe(de.ivu.elect.interfaces.core.konfiguration.WahlErgebniseingangUebernahmeArt e) {
    return de.ivu.elect.business.wahl.entity.WahlErgebniseingangUebernahmeArt.valueOf(e.name());
  }

  public de.ivu.elect.interfaces.core.konfiguration.WahlErgebniseingangUebernahmeArt mappe(de.ivu.elect.business.wahl.entity.WahlErgebniseingangUebernahmeArt e) {
    return de.ivu.elect.interfaces.core.konfiguration.WahlErgebniseingangUebernahmeArt.valueOf(e.name());
  }

  public de.ivu.elect.business.wahl.entity.WahlErgebniseingangUebernahmeManuell mappe(de.ivu.elect.interfaces.core.konfiguration.WahlErgebniseingangUebernahmeManuell e) {
    return de.ivu.elect.business.wahl.entity.WahlErgebniseingangUebernahmeManuell.valueOf(e.name());
  }

  public de.ivu.elect.interfaces.core.konfiguration.WahlErgebniseingangUebernahmeManuell mappe(de.ivu.elect.business.wahl.entity.WahlErgebniseingangUebernahmeManuell e) {
    return de.ivu.elect.interfaces.core.konfiguration.WahlErgebniseingangUebernahmeManuell.valueOf(e.name());
  }

  public de.ivu.elect.interfaces.core.konfiguration.ErgebnisartUmschaltbar mappe(ErgebnisartUmschaltbar ergebnisartUmschaltbar) {
    return de.ivu.elect.interfaces.core.konfiguration.ErgebnisartUmschaltbar.valueOf(ergebnisartUmschaltbar.name());
  }

  public de.ivu.elect.interfaces.core.konfiguration.Wahlart mappe(Wahlart from) {
    de.ivu.elect.interfaces.core.konfiguration.Wahlart result = new de.ivu.elect.interfaces.core.konfiguration.Wahlart();
    result.setName(from.getName());
    if (StringUtils.isBlank(from.getTitel())) {
      result.setTitel("");// Unterscheidung zu Legacy...
    } else {
      result.setTitel(from.getTitel());
    }
    result.setKurzname(from.getKurzname());
    result.setKennzeichen(from.getKennzeichen());
    result.setAnzahlStimmzettel(from.getAnzahlStimmzettel());

    result.setCommonWahlart(mappe(from.getCommonWahlart()));
    result.setFarbe(from.getFarbe());
    result.setGruppenvereinigungenErlaubt(from.getGruppenvereinigungenErlaubt());
    result.setListenverbindungenErlaubt(from.getListenverbindungenErlaubt());
    result.setLeereListenErlaubt(from.getLeereListenErlaubt());
    result.setAnzahlErsatzkandidaten(from.getMaxAnzahlErsatzkandidaturen());
    result.setGruppenreihenfolgeVorgegeben(from.getGruppenreihenfolgeVorgegeben());
    result.setStimmenProWaehlerArt(mappe(from.getAnzahlStimmenProWaehlerArt()));
    result.setAnzahlStimmenProWaehler(from.getAnzahlStimmenProWaehler());
    result.setMaxAnzahlNennungen(from.getMaxAnzahlNennungen());

    result.setUmgangAPruefkennzeichenVorlaeufig(mappe(from.getUmgangAPruefkennzeichenVorlaeufig()));
    result.setUmgangAPruefkennzeichenEndgueltig(mappe(from.getUmgangAPruefkennzeichenEndgueltig()));
    result.setUmgangA1Vorlaeufig(mappe(from.getUmgangAOhneWahlscheinVorlaeufig()));
    result.setUmgangA1Endgueltig(mappe(from.getUmgangAOhneWahlscheinEndgueltig()));
    result.setUmgangA2Vorlaeufig(mappe(from.getUmgangAMitWahlscheinVorlaeufig()));
    result.setUmgangA2Endgueltig(mappe(from.getUmgangAMitWahlscheinEndgueltig()));
    result.setUmgangA3Vorlaeufig(mappe(from.getUmgangANichtImWaehlerverzeichnisVorlaeufig()));
    result.setUmgangA3Endgueltig(mappe(from.getUmgangANichtImWaehlerverzeichnisEndgueltig()));
    result.setUmgangAGesamtVorlaeufig(mappe(from.getUmgangAGesamtVorlaeufig()));
    result.setUmgangAGesamtEndgueltig(mappe(from.getUmgangAGesamtEndgueltig()));
    result.setUmgangB1Vorlaeufig(mappe(from.getUmgangBOhneWahlscheinVorlaeufig()));
    result.setUmgangB1Endgueltig(mappe(from.getUmgangBOhneWahlscheinEndgueltig()));
    result.setUmgangB2Vorlaeufig(mappe(from.getUmgangBMitWahlscheinVorlaeufig()));
    result.setUmgangB2Endgueltig(mappe(from.getUmgangBMitWahlscheinEndgueltig()));
    result.setUmgangBGesamtVorlaeufig(mappe(from.getUmgangBGesamtVorlaeufig()));
    result.setUmgangBGesamtEndgueltig(mappe(from.getUmgangBGesamtEndgueltig()));
    result.setUmgangGueltigeVorlaeufig(mappe(from.getUmgangGueltigeVorlaeufig()));
    result.setUmgangGueltigeEndgueltig(mappe(from.getUmgangGueltigeEndgueltig()));
    result.setUmgangUngueltigeVorlaeufig(mappe(from.getUmgangUngueltigeVorlaeufig()));
    result.setUmgangUngueltigeEndgueltig(mappe(from.getUmgangUngueltigeEndgueltig()));
    result.setZulassungspruefung(mappe(from.getZulassungspruefung()));
    result.setSitzberechnungsalgorithmus(from.getSitzberechnungsalgorithmus().name());
    result.setDokumentvorlagen(from.getDokumentvorlagen().name());
    result.setSystemGebietsebene(from.getSystemGebietsebene().name());

    result.setWahlbezeichnungLang(from.getWahlbezeichnungLang());
    result.setWahlausschussbezeichnung(from.getWahlausschussbezeichnung());
    result.setZuWaehlendesGremium(from.getZuWaehlendesGremium());

    result.setErgebnisartUmschaltbar(mappe(from.getErgebnisartUmschaltbar()));
    result.setWahlberechtigungImAusland(mappe(from.getWahlberechtigungImAusland()));

    result.setErgebniseingangUebernahmeArt(mappe(from.getErfassungUebernahmeArt()));
    result.setErgebniseingangUebernahmeManuell(mappe(from.getErfassungUebernahmeManuell()));

    return result;
  }

  public GebietsartBezirksart mappe(Bezirksart bezirksart) {
    return GebietsartBezirksart.valueOf(bezirksart.name());
  }

  public Bezirksart mappe(GebietsartBezirksart bezirksart) {
    return Bezirksart.valueOf(bezirksart.name());
  }

  public CommonWahlart mappe(de.ivu.elect.interfaces.core.konfiguration.CommonWahlart commonWahlart) {
    return CommonWahlart.valueOf(commonWahlart.name());
  }

  public de.ivu.elect.interfaces.core.konfiguration.CommonWahlart mappe(CommonWahlart commonWahlart) {
    return de.ivu.elect.interfaces.core.konfiguration.CommonWahlart.valueOf(commonWahlart.name());
  }

  public Icon mappe(GebietsartIcon icon) {
    return Icon.valueOf(icon.name());
  }

  public GebietsartIcon mappe(Icon icon) {
    return GebietsartIcon.valueOf(icon.name());
  }

  public WahlartStimmenProWaehlerArt mappe(StimmenProWaehlerArt stimmenProWaehlerArt) {
    return WahlartStimmenProWaehlerArt.valueOf(stimmenProWaehlerArt.name());
  }

  public StimmenProWaehlerArt mappe(WahlartStimmenProWaehlerArt stimmenProWaehlerArt) {
    return StimmenProWaehlerArt.valueOf(stimmenProWaehlerArt.name());
  }

  public UmgangAWerte mappe(de.ivu.elect.interfaces.core.konfiguration.UmgangAWerte umgangAWerte) {
    return UmgangAWerte.valueOf(umgangAWerte.name());
  }

  public de.ivu.elect.interfaces.core.konfiguration.UmgangAWerte mappe(UmgangAWerte umgangAWerte) {
    return de.ivu.elect.interfaces.core.konfiguration.UmgangAWerte.valueOf(umgangAWerte.name());
  }

  public UmgangBWerte mappe(de.ivu.elect.interfaces.core.konfiguration.UmgangBWerte umgangBWerte) {
    return UmgangBWerte.valueOf(umgangBWerte.name());
  }

  public de.ivu.elect.interfaces.core.konfiguration.UmgangBWerte mappe(UmgangBWerte umgangBWerte) {
    return de.ivu.elect.interfaces.core.konfiguration.UmgangBWerte.valueOf(umgangBWerte.name());
  }

  public UmgangGueltigeWerte mappe(de.ivu.elect.interfaces.core.konfiguration.UmgangGueltigeWerte umgangGueltigeWerte) {
    return UmgangGueltigeWerte.valueOf(umgangGueltigeWerte.name());
  }

  public de.ivu.elect.interfaces.core.konfiguration.UmgangGueltigeWerte mappe(UmgangGueltigeWerte umgangGueltigeWerte) {
    return de.ivu.elect.interfaces.core.konfiguration.UmgangGueltigeWerte.valueOf(umgangGueltigeWerte.name());
  }

  public Zulassungspruefung mappe(de.ivu.elect.interfaces.core.konfiguration.Zulassungspruefung zulassungspruefung) {
    return Zulassungspruefung.valueOf(zulassungspruefung.name());
  }

  public de.ivu.elect.interfaces.core.konfiguration.Zulassungspruefung mappe(Zulassungspruefung zulassungspruefung) {
    return de.ivu.elect.interfaces.core.konfiguration.Zulassungspruefung.valueOf(zulassungspruefung.name());
  }

  public WahlberechtigungImAusland mappe(de.ivu.elect.interfaces.core.konfiguration.WahlberechtigungImAusland wahlberechtigungImAusland) {
    return WahlberechtigungImAusland.valueOf(wahlberechtigungImAusland.name());
  }

  public de.ivu.elect.interfaces.core.konfiguration.WahlberechtigungImAusland mappe(WahlberechtigungImAusland wahlberechtigungImAusland) {
    return de.ivu.elect.interfaces.core.konfiguration.WahlberechtigungImAusland.valueOf(wahlberechtigungImAusland.name());
  }
}
