
package de.ivu.elect.business.entschaedigung.entity;

import de.ivu.elect.jee.presentation.dynamicform.AbstractBooleanProperty;
import de.ivu.elect.jee.presentation.dynamicform.AbstractLongProperty;

public abstract class AbstractAnzahlBooleanProperty extends AbstractBooleanProperty {

  private final AbstractLongProperty anzahlLongProperty;

  public AbstractAnzahlBooleanProperty(AbstractLongProperty anzahlLongProperty) {
    super();

    this.anzahlLongProperty = anzahlLongProperty;
  }

  @Override
  public boolean getDefaultRequired() {
    return anzahlLongProperty.getDefaultRequired();
  }

  @Override
  public Boolean getDefaultValue() {
    return asBooleanValue(anzahlLongProperty.getDefaultValue());
  }

  @Override
  public Boolean getValue() {
    return asBooleanValue(anzahlLongProperty.getValue());
  }

  @Override
  public void setValue(Boolean value) {
    if (Boolean.TRUE.equals(value)) {
      setValue(1L);
    } else {
      setValue(0L);
    }
  }

  protected void setValue(Long value) {
    anzahlLongProperty.setValue(value);
  }

  private boolean asBooleanValue(Long value) {
    return value != null && value.compareTo(1L) == 0;
  }
}
