
package de.ivu.elect.business.stimmeingabe.boundary;

import de.ivu.elect.business.ergebnis.entity.Stimmenart;
import de.ivu.elect.business.gruppeimgebiet.entity.GruppeImGebiet;
import de.ivu.elect.business.stimmeingabe.control.StimmeingabeErfassenContext;

public abstract class AbstractDirektwahlStimmeingabeGruppeStimmenModelBuilder extends AbstractStimmeingabeGruppeStimmenModelBuilder {

  private static final long serialVersionUID = 1L;

  public AbstractDirektwahlStimmeingabeGruppeStimmenModelBuilder() {
    super();
  }

  @Override
  protected boolean isStimmenartApplicable(GruppeImGebiet gruppeImGebiet, Stimmenart stimmenart, StimmeingabeErfassenContext context) {
    if (Stimmenart.LISTENSTIMME.equals(stimmenart)) {
      return false;
    }

    return super.isStimmenartApplicable(gruppeImGebiet, stimmenart, context);
  }

  @Override
  protected boolean isWahlvorschlagVorhanden(GruppeImGebiet gruppeImGebiet, StimmeingabeErfassenContext context) {
    return gruppeImGebiet.isPolitischeGruppe() && gruppeImGebiet.hatWahlvorschlagAufStimmzettelInUebergeordneterGebietshierarchie(context.getWahlvorschlaege());
  }
}
