
package de.ivu.elect.presentation.wahlrechtspruefung;

import javax.inject.Named;

import de.ivu.elect.business.wahlrechtspruefung.entity.Pruefkriterium;
import de.ivu.elect.business.wahlrechtspruefung.entity.PruefkriteriumProperties;
import de.ivu.elect.business.wahlrechtspruefung.entity.PruefkriteriumProperties.PruefkriteriumBezugMitLeererAuswahlProperty;
import de.ivu.elect.jee.faces.PreConditionCheck;
import de.ivu.elect.jee.presentation.dynamicform.FormBuilder;
import de.ivu.elect.jee.presentation.search.AbstractSearchParameters;
import de.ivu.elect.presentation.hilfe.OnlineHilfeId;
import de.ivu.elect.presentation.security.AbstractGebietSecurityFilter;

@OnlineHilfeId("299")
@Named(AbstractPruefkriteriumSearchView.COMPONENT_NAME)
public class PruefkriteriumSearchView extends AbstractPruefkriteriumSearchView {

  private static final long serialVersionUID = 1L;

  public PruefkriteriumSearchView() {
    super();
  }

  @PreConditionCheck
  public String checkCondition() {
    if (!isWahlSelected()) {
      addErrorMessage("wahl.selected.missing");

      return getStartViewId();
    }

    return null;
  }

  @Override
  protected AbstractGebietSecurityFilter<Pruefkriterium> getGebietSecurityFilter() {
    return KEIN_GEBIET_SECURITY_FILTER;
  }

  @Override
  public void presetSearchParameters() {
    getSearchParameters().setWahl(getSelectedWahl());
  }

  @Override
  public void addProperties(FormBuilder formBuilder) {
    PruefkriteriumProperties pruefkriteriumProperties = getSearchParameters().getPruefkriterium().getProperties();

    String wildcardTooltip = getMessage(AbstractSearchParameters.WILDCARD_TOOLTIP_MSG_KEY);

    formBuilder.addProperty(new PruefkriteriumBezugMitLeererAuswahlProperty(getSearchParameters().getPruefkriterium())).optional();
    formBuilder.addProperty(pruefkriteriumProperties.getKategorieProperty()).withTooltip(wildcardTooltip);
    formBuilder.addProperty(pruefkriteriumProperties.getUnterkategorieProperty()).withTooltip(wildcardTooltip);
    formBuilder.addProperty(pruefkriteriumProperties.getTeilDerSofortpruefungProperty());
    formBuilder.addProperty(pruefkriteriumProperties.getWahlrechtlichRelevantProperty());
  }
}
