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

import java.util.Comparator;

import de.ivu.elect.business.gebietsbaum.control.GebietByNummerComparator;
import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gebietsbaum.entity.Wahldurchfuehrungsgebiet;
import de.ivu.elect.util.NullComparator;

public class NiederschriftByGebietNummerComparator implements Comparator<Niederschrift> {

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

  private static final Comparator<Gebiet> GEBIET_BY_NUMMER_COMPARATOR = GebietByNummerComparator.ASCENDING;

  public NiederschriftByGebietNummerComparator() {
    super();
  }

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

    return compareByGebiet(one.getWahldurchfuehrungsgebiet(), another.getWahldurchfuehrungsgebiet());
  }

  private int compareByGebiet(Wahldurchfuehrungsgebiet one, Wahldurchfuehrungsgebiet another) {
    return GEBIET_BY_NUMMER_COMPARATOR.compare(one, another);
  }
}
