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

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.kandidatur.entity.Kandidatur;
import de.ivu.elect.business.kandidatur.entity.Listenkandidatur;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.presentation.gebietsbaum.GebietNummerFormatter;
import de.ivu.elect.presentation.security.AbstractGebietSecurityFilter;

public class KandidaturVerknuepfungColumn extends AbstractKandidaturVerknuepfungColumn {

  private static final long serialVersionUID = 1L;

  public KandidaturVerknuepfungColumn(Messages messages, AbstractGebietSecurityFilter<Kandidatur> gebietSecurityFilter, GebietNummerFormatter gebietNummerFormatter) {
    this("Kandidatur-Verknuepfung", messages, gebietSecurityFilter, gebietNummerFormatter);
  }

  protected KandidaturVerknuepfungColumn(String id, Messages messages, AbstractGebietSecurityFilter<Kandidatur> gebietSecurityFilter, GebietNummerFormatter gebietNummerFormatter) {
    super(id, messages, "kandidatur.search.result.verknuepfung.column.header", gebietSecurityFilter, gebietNummerFormatter);
  }

  @Override
  protected String getKandidaturVerknuepftFormatted(Kandidatur kandidatur, Kandidatur kandidaturVerknuepft) {
    Gebiet gebiet = kandidaturVerknuepft.getGebiet();

    String kurzname = kandidaturVerknuepft.getGruppe().getKurznameAufGebiet(gebiet);
    String name = getNameNummer(gebiet); // ELECT-5267

    if (kandidaturVerknuepft.isListenkandidatur()) {
      Listenkandidatur listenkandidaturVerknuepft = (Listenkandidatur) kandidaturVerknuepft;

      return getMessage("kandidatur.search.result.verknuepfung.column.listenkandidatur.format", kurzname, name, listenkandidaturVerknuepft.getRelativePosition());
    }

    return getMessage("kandidatur.search.result.verknuepfung.column.direktkandidatur.format", kurzname, name);
  }
}
