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

import java.util.List;

import javax.inject.Inject;

import de.ivu.elect.business.stimmeingabe.boundary.AbstractStimmeingabeErfassenModelBuilder;
import de.ivu.elect.business.stimmeingabe.boundary.AbstractStimmeingabeReferendumVorlageStimmenModelBuilder;
import de.ivu.elect.business.stimmeingabe.boundary.DefaultStimmeingabeKopfzahlModelBuilder;
import de.ivu.elect.business.stimmeingabe.boundary.StimmeingabeGruppeStimmenErfassenModelContext;
import de.ivu.elect.business.stimmeingabe.boundary.StimmeingabeReferendumOptionStimmenErfassenModelBuilder;
import de.ivu.elect.business.stimmeingabe.control.StimmeingabeErfassenContext;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabeReferendumVorlageStimmen;
import de.ivu.elect.business.stimmeingabe.entity.StimmeingabeReferendumVorlageStimmenErfassenModel;

public abstract class AbstractReferendumVorlageStimmeingabeErfassenModelBuilder extends AbstractStimmeingabeErfassenModelBuilder implements StimmeingabeReferendumOptionStimmenErfassenModelBuilder {

  private static final long serialVersionUID = 1L;

  @Inject
  private transient DefaultStimmeingabeKopfzahlModelBuilder stimmeingabeKopfzahlModelBuilder;

  public AbstractReferendumVorlageStimmeingabeErfassenModelBuilder() {
    super();
  }

  @Override
  protected DefaultStimmeingabeKopfzahlModelBuilder getStimmeingabeKopfzahlModelBuilder() {
    return stimmeingabeKopfzahlModelBuilder;
  }

  protected abstract AbstractStimmeingabeReferendumVorlageStimmenModelBuilder getStimmeingabeReferendumVorlageStimmenModelBuilder();

  @Override
  public StimmeingabeReferendumVorlageStimmenErfassenModel createReferendumVorlageStimmenErfassenModel(StimmeingabeErfassenContext context) {
    return getStimmeingabeReferendumVorlageStimmenModelBuilder().createModelStimmeingabeReferendumVorlageStimmen(context);
  }

  @Override
  public List<StimmeingabeReferendumVorlageStimmen> layoutStimmeingabenReferendumVorlageStimmen(StimmeingabeReferendumVorlageStimmenErfassenModel model,
      StimmeingabeGruppeStimmenErfassenModelContext context) {
    return getStimmeingabeReferendumVorlageStimmenModelBuilder().layoutModelStimmeingabeReferendumVorlageStimmen(model, context);
  }
}
