package de.ivu.elect.exchange.wahl.mapper;

import java.io.Serializable;

import de.ivu.elect.business.personenpruefung.entity.PersonPruefungKonfiguration;
import de.ivu.elect.business.personenpruefung.entity.PersonPruefungKonfigurationPersonentyp;
import de.ivu.elect.business.personenpruefung.entity.PersonPruefungKonfigurationStatus;
import de.ivu.elect.business.personenpruefung.entity.PersonPruefungKonfigurationTyp;
import de.ivu.elect.jee.entity.Entity;
import de.ivu.elect.jee.entity.customdata.*;
import org.apache.commons.lang3.StringUtils;

public class PersonPruefungKonfigurationMapper implements Serializable {

  private static final long serialVersionUID = 1L;

  public PersonPruefungKonfiguration mappe(de.ivu.elect.interfaces.core.konfiguration.PersonPruefungKonfiguration from) {
    CustomData customData = EmptyCustomData.INSTANCE;
    if (StringUtils.isNotBlank(from.getCustomData())) {
      customData = new DefaultCustomData();
    }
    PersonPruefungKonfiguration to = new PersonPruefungKonfiguration(customData);
    to.setName(from.getName());
    to.setBeschreibung(from.getBeschreibung());
    to.setTyp(mappe(from.getTyp()));
    to.setPersonentyp(mappe(from.getPersonentyp()));
    to.setStatus(mappe(from.getStatus()));
    to.setCustomDataXml(from.getCustomData());
    return to;
  }

  public de.ivu.elect.interfaces.core.konfiguration.PersonPruefungKonfiguration mappe(PersonPruefungKonfiguration from) {
    de.ivu.elect.interfaces.core.konfiguration.PersonPruefungKonfiguration to = new de.ivu.elect.interfaces.core.konfiguration.PersonPruefungKonfiguration();
    to.setName(from.getName());
    to.setBeschreibung(from.getBeschreibung());
    to.setTyp(mappe(from.getTyp()));
    to.setPersonentyp(mappe(from.getPersonentyp()));
    to.setStatus(mappe(from.getStatus()));
    to.setCustomData(from.getCustomDataXml());
    return to;
  }

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

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

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

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

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

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

}
