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

import java.util.Date;

import de.ivu.elect.business.person.entity.AbstractPersonendaten;
import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.wahl.entity.Wahltermin;
import de.ivu.elect.jee.presentation.dynamicform.AbstractIntegerProperty;

public class AlterProperty<E extends Personendaten> extends AbstractIntegerProperty {

  private final E personendaten;

  private final Date day;

  public AlterProperty(E personendaten) {
    this(personendaten, new Date());
  }

  public AlterProperty(E personendaten, Wahltermin wahltermin) {
    this(personendaten, wahltermin.getWahldatum());
  }

  public AlterProperty(E personendaten, Date day) {
    this.personendaten = personendaten;
    this.day = day;
  }

  public Date getDay() {
    return day;
  }

  @Override
  public boolean isReadonly() {
    return true;
  }

  @Override
  public Integer getValue() {
    return personendaten.getAlter(getDay());
  }

  @Override
  public void setValue(Integer value) {
    throw new UnsupportedOperationException("CANNOT set a readonly property");
  }

  @Override
  public boolean getDefaultRequired() {
    return false;
  }

  @Override
  public String getDefaultLabel() {
    return getMessage(AbstractPersonendaten.MESSAGE_KEY_ALTER_EINZAHL);
  }
}
