
package de.ivu.elect.presentation.wahlvorschlag.form;

import java.util.Collection;

import javax.inject.Inject;

import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.WahlParameterLoader;
import de.ivu.elect.business.wahlvorschlag.entity.Wahlvorschlag;
import de.ivu.elect.business.wahlvorschlag.entity.Wahlvorschlagsdokument;
import de.ivu.elect.jee.presentation.dynamicform.AbstractLongProperty;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.presentation.ViewFormBuilder;

public class WahlvorschlagsdokumenteViewFormBuilder extends ViewFormBuilder {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient WahlParameterLoader wahlParameterLoader;

  public WahlvorschlagsdokumenteViewFormBuilder() {
    super();
  }

  public void addProperties(FormBuilder formBuilder, Wahl wahl, Wahlvorschlag wahlvorschlag, Collection<Wahlvorschlagsdokument> wahlvorschlagsdokumente, boolean readonly) {
    Collection<Wahlvorschlagsdokument> wahlvorschlagsdokumenteEditable = Wahlvorschlagsdokument.filterWahlvorschlagsdokumenteEditable(wahlParameterLoader, wahl, wahlvorschlag,
        wahlvorschlagsdokumente);

    if (!wahlvorschlagsdokumenteEditable.isEmpty()) {
      formBuilder.addSeparator("wahlvorschlag.create.wahlvorschlagdokumente.anzahl.separator");

      for (Wahlvorschlagsdokument wahlvorschlagsdokument : wahlvorschlagsdokumenteEditable) {
        AbstractLongProperty anzahlProperty = wahlvorschlagsdokument.getProperties().getAnzahlProperty();

        formBuilder.addProperty(anzahlProperty) //
            .withLabel(getWahlvorschlagdokumentAnzahlLabelMessage(wahlvorschlagsdokument)) //
            .withReadonly(readonly);
      }
    }
  }

  private String getWahlvorschlagdokumentAnzahlLabelMessage(Wahlvorschlagsdokument wahlvorschlagsdokument) {
    return getMessage(wahlvorschlagsdokument.getWahlvorschlagsdokumentArt());
  }
}
