
package de.ivu.elect.business.stimmeingabe.control;

import java.util.Collections;
import java.util.Comparator;

import de.ivu.elect.business.stimmeingabe.entity.Ergebniseingang;
import de.ivu.elect.util.NullComparator;

public class ErgebniseingangByEingangssequenznummerComparator implements Comparator<Ergebniseingang> {

  private static final Comparator<Object> NULL_COMPARATOR = NullComparator.NULL_BEFORE_NON_NULL_COMPARATOR;

  public static final Comparator<Ergebniseingang> ASCENDING = new ErgebniseingangByEingangssequenznummerComparator();

  public static final Comparator<Ergebniseingang> DESCENDING = Collections.reverseOrder(ASCENDING);

  public ErgebniseingangByEingangssequenznummerComparator() {
    super();
  }

  @Override
  public int compare(Ergebniseingang one, Ergebniseingang another) {
    if (one == null || another == null) {
      return NULL_COMPARATOR.compare(one, another);
    }

    if (one.getEingangssequenznummer() == null || another.getEingangssequenznummer() == null) {
      return NULL_COMPARATOR.compare(one.getEingangssequenznummer(), another.getEingangssequenznummer());
    }

    return one.getEingangssequenznummer().compareTo(another.getEingangssequenznummer());
  }
}
