package de.ivu.elect.business.auffaelligkeit.entity;

import java.util.List;
import java.util.Locale;

import de.ivu.elect.business.ergebnis.entity.Stimmenart;
import de.ivu.elect.business.gruppe.entity.PolitischeGruppe;
import de.ivu.elect.jee.faces.Messages;


import static java.util.Arrays.asList;

public class AuffaelligkeitBemerkungVertauschteParteistimmen extends AuffaelligkeitBemerkung {

  private Stimmenart stimmenart;
  private PolitischeGruppe erstePolitischeGruppe;
  private PolitischeGruppe zweitePolitischeGruppe;

  public AuffaelligkeitBemerkungVertauschteParteistimmen(double auffaelligkeitsskala, Stimmenart stimmenart, PolitischeGruppe erstePolitischeGruppe, PolitischeGruppe zweitePolitischeGruppe) {
    super(auffaelligkeitsskala);
    this.stimmenart = stimmenart;
    this.erstePolitischeGruppe = erstePolitischeGruppe;
    this.zweitePolitischeGruppe = zweitePolitischeGruppe;
  }

  @Override
  public String getAuffaelligkeitBemerkungAlsString(Locale locale, Messages messages) {
    return messages.getMessageForMessageKey("stimmen.auffaelligkeit.suche.bemerkungen.vertauschete.parteistimmen",
        messages.getMessageForMessageKey("stimmen.auffaelligkeit.suche.bemerkungen.stimmenart." + stimmenart.toString().toLowerCase()),
        getKurzNameWennVorhanden(erstePolitischeGruppe),
        getKurzNameWennVorhanden(zweitePolitischeGruppe));
  }

  @Override
  public List<PolitischeGruppe> getInvolvedPartys() {
    return asList(erstePolitischeGruppe, zweitePolitischeGruppe);
  }

  private String getKurzNameWennVorhanden(PolitischeGruppe politischeGruppe) {
    if (politischeGruppe.getKurzname() != null) {
      return politischeGruppe.getKurzname();
    }
    return politischeGruppe.getName();
  }
}