
package de.ivu.elect.exchange.person;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.ivu.elect.business.person.entity.Geschlecht;

public interface DestatisPersonendaten {

  Logger LOG = LoggerFactory.getLogger(DestatisPersonendaten.class);

  static void warn(String msg) {
    LOG.warn(msg);
  }

  static Geschlecht internGeschlecht(String code) {
    String codeNormalized = lowerCase(trimToEmpty(code));

    switch (codeNormalized) {
      case "w" :
        return Geschlecht.WEIBLICH;
      case "m" :
        return Geschlecht.MAENNLICH;
      case "d" :
        return Geschlecht.DIVERS;

      default :
        break;
    }

    if (isNotBlank(codeNormalized)) {
      warn("Geschlecht übermittelt, aber nicht gemappt! [code = " + code + ", codeNormalized = " + codeNormalized + "]");
    }

    return Geschlecht.UNBEKANNT;
  }

  static String externGeschlecht(Geschlecht geschlecht) {
    if (geschlecht != null) {
      if (geschlecht.isWeiblich()) {
        return "w";
      }

      if (geschlecht.isMaennlich()) {
        return "m";
      }

      if (geschlecht.isDivers()) {
        return "d";
      }

      if (geschlecht.isKeineEintragung()) {
        return "k";
      }
    }

    return "";
  }
}
