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

import java.util.List;

import javax.faces.convert.Converter;

import de.ivu.elect.business.niederschrift.boundary.NiederschriftFormatter;
import de.ivu.elect.business.niederschrift.entity.Niederschrift;
import de.ivu.elect.business.niederschrift.entity.NiederschriftConstants;
import de.ivu.elect.business.niederschrift.entity.NiederschriftKorrekturConstants;
import de.ivu.elect.jee.faces.EntityConverter;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.jee.presentation.dynamicform.AbstractSelectOneMenuProperty;

public abstract class AbstractNiederschriftProperty extends AbstractSelectOneMenuProperty<Niederschrift> {

  protected final List<Niederschrift> niederschriftValues;
  private final Messages messages;
  private final NiederschriftFormatter niederschriftFormatter;

  public AbstractNiederschriftProperty(Messages messages, List<Niederschrift> niederschriftValues,
      NiederschriftFormatter niederschriftFormatter) {
    super();

    this.niederschriftValues = niederschriftValues;
    this.messages = messages;
    this.niederschriftFormatter = niederschriftFormatter;
  }

  @Override
  public Converter getDefaultConverter() {
    return EntityConverter.getInstance();
  }

  @Override
  public List<Niederschrift> getValues() {
    return niederschriftValues;
  }

  @Override
  public boolean getDefaultRequired() {
    return !NiederschriftKorrekturConstants.NIEDERSCHRIFT_ID_NULLABLE;
  }

  @Override
  public String getItemLabel(Niederschrift item) {
    return niederschriftFormatter.formatNiederschriftMitGebiet(item, messages);
  }

  @Override
  public String getDefaultLabel() {
    return getMessage(NiederschriftConstants.MESSAGE_KEY_ENTITY_EINZAHL);
  }
}
