
package de.ivu.elect.jee.presentation.dynamicform;

public abstract class AbstractIntegerProperty extends AbstractNumberProperty<Integer> {

  protected AbstractIntegerProperty() {
    super();
  }

  @Override
  public long getMinValue() {
    return Integer.MIN_VALUE;
  }

  @Override
  public long getMaxValue() {
    return Integer.MAX_VALUE;
  }

  @Override
  public int getDefaultMaxLength() {
    if (getMinValue() >= 0) {
      long maxValue = getMaxValue();

      if (maxValue >= 0) {
        if (maxValue < 10L) {
          return 1;
        }

        if (maxValue < 100L) {
          return 2;
        }

        if (maxValue < 1000L) {
          return 3;
        }

        if (maxValue < 10000L) {
          return 5; // 4 + 1 * grouping!!!
        }

        if (maxValue < 100000L) {
          return 6;
        }

        if (maxValue < 1000000L) {
          return 7;
        }

        if (maxValue < 10000000L) {
          return 9; // 7 + 2 * grouping!!!
        }

        if (maxValue < 100000000L) {
          return 10;
        }

        if (maxValue < 1000000000L) {
          return 11;
        }

        if (maxValue <= Integer.MAX_VALUE) {
          return 13; // 10 + 3 * grouping!!!
        }
      }
    }

    return super.getDefaultMaxLength();
  }
}
