package de.ivu.elect.presentation.ergebniskonflikt.table;

import de.ivu.elect.business.ergebniskonflikt.entity.ErgebnisKonflikt;
import de.ivu.elect.business.sitzberechnung.entity.OsvLegacyArtikelnummer;
import de.ivu.elect.business.sitzberechnung.entity.OsvLegacyKonfliktCustomData;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;


public class AbstractErgebnisKonfliktKonfliktBeschreibungColumn extends AbstractErgebnisKonfliktColumn<ErgebnisKonflikt> {
  String ARTIKEL = "Artikel";

  public AbstractErgebnisKonfliktKonfliktBeschreibungColumn(Messages messages, String header) {
    super(messages, header, ColumnType.STRING, ErgebnisKonflikt::getKonfliktBeschreibung);
  }

  public String getArtikel(ErgebnisKonflikt ergebnisKonflikt) {
    OsvLegacyArtikelnummer artikelnummer = ergebnisKonflikt.getCustomData(OsvLegacyKonfliktCustomData.class).getArtikelnummer();
    if (OsvLegacyArtikelnummer.UNBEKANNT.equals(artikelnummer)) {
      return "";
    }
    return ARTIKEL + " " + artikelnummer.toString();
  }

  public String getBeschreibung(ErgebnisKonflikt ergebnisKonflikt) {
    String konfliktBeschreibung = ergebnisKonflikt.getKonfliktBeschreibung();

    if (konfliktBeschreibung != null) {
      String[] split = konfliktBeschreibung.split("\n", 2);
      boolean startsWithArtikel = split[0].startsWith(ARTIKEL);
      if (split.length == 2 && startsWithArtikel) {
        return split[1];
      } else {
        if (!startsWithArtikel)
          return konfliktBeschreibung;
      }
    }
    return "";
  }

}
