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

import de.ivu.elect.business.gebietsbaum.boundary.NlGebietDarstellungNummerFormatter;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gebietsbaum.entity.GebietConstants;
import de.ivu.elect.business.gebietsbaum.entity.NlGebietsart;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamictable.ColumnType;

public class NlGebietDarstellungNummerColumn extends AbstractGebietColumn<Gebiet> {

  private static final long serialVersionUID = 1L;

  public NlGebietDarstellungNummerColumn(Messages messages, NlGebietDarstellungNummerFormatter nlGebietDarstellungNummerFormatter) {
    super("Nl-Gebiet-Darstellung-Nummer-Column", messages, GebietConstants.MESSAGE_KEY_NUMMER_EINZAHL, ColumnType.STRING, gebiet -> {
      Object result = new GebietNummerBezirkOderNummerColumn(messages).getValue(gebiet);

      if (result instanceof String) {
        String nummer = (String) result;

        for (NlGebietsart nlGebietsart : NlGebietsart.values()) {
          if (nlGebietsart.equalsGebiet(gebiet)) {
            return nlGebietDarstellungNummerFormatter.formatiereNummer(nlGebietsart, nummer);
          }
        }
      }

      return result;
    });
  }
}
