
package de.ivu.elect.dokumente.ergebnis.adapter;

import static org.apache.commons.lang3.StringUtils.trimToEmpty;

public class Fraction {

  public static final Fraction UNDEFINED = new Fraction(0, -1);

  private final long zaehler;

  private final long nenner;

  public Fraction(long zaehler, long nenner) {
    super();

    this.zaehler = zaehler;
    this.nenner = nenner;
  }

  public long getNenner() {
    return nenner;
  }

  public long getZaehler() {
    return zaehler;
  }

  @Override
  public String toString() {
    return formatGemischterBruch();
  }

  public String formatGemischterBruch() {
    return trimToEmpty(formatGemischterBruchGanzzahl() + " " + formatGemischterBruchBruch());
  }

  public String formatGemischterBruchGanzzahl() {
    if (nenner > 0) {
      long quotient = zaehler / nenner;

      if (quotient > 0) {
        return String.valueOf(quotient);
      }
    }

    return "";
  }

  public String formatGemischterBruchBruch() {
    if (nenner > 0) {
      long rest = zaehler % nenner;

      if (rest > 0) {
        return rest + "/" + nenner;
      }
    }

    return "";
  }
}
