package de.ivu.elect.business.ergebnis.control;

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

import com.google.gson.Gson;
import de.ivu.elect.business.wahl.entity.NlWahlCustomData;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.sitzberechnung.osv.exchange.p22.OSVLegacyErgebnisDaten;

public class OSVLegacyErgebnisDatenParser {

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

  public static OSVLegacyErgebnisDaten parseOSVLegacyErgebnisDaten(Wahl wahl) {
    if (wahl == null) {
      LOG.warn("wahl ist leer");
      return new OSVLegacyErgebnisDaten();
    }

    return wahl.getCustomData(NlWahlCustomData.class)
        .getErgebnisCustomDataParsed(asString -> {
          if (StringUtils.isBlank(asString)) {
            LOG.warn("ergebnisCustomDataParsed ist leer"); // ELECT-11919 loggen
            return new OSVLegacyErgebnisDaten(); // ELECT-11919 Null-Objekt
          }
          return new Gson().fromJson(asString, OSVLegacyErgebnisDaten.class);
        });
  }
}
