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

import java.io.Serializable;
import java.util.Comparator;

import de.ivu.elect.business.gruppeimgebiet.control.GruppeImGebietByVorgegebenePositionComparator;
import de.ivu.elect.business.wahlvorschlag.entity.Wahlvorschlag;
import de.ivu.elect.util.NullComparator;

public class WahlvorschlagByVorgegebenePositionComparator implements Comparator<Wahlvorschlag>, Serializable {

  private static final long serialVersionUID = 1L;

  private static final GruppeImGebietByVorgegebenePositionComparator GRUPPE_IM_GEBIET_COMPARATOR = new GruppeImGebietByVorgegebenePositionComparator();

  public WahlvorschlagByVorgegebenePositionComparator() {
    super();
  }

  @Override
  public int compare(Wahlvorschlag one, Wahlvorschlag another) {
    if (one == null || another == null) {
      return NullComparator.NULL_BEFORE_NON_NULL_COMPARATOR.compare(one, another);
    }

    return compareByPosition(one.getGruppeImGebiet().getVorgegebenePosition(), another.getGruppeImGebiet().getVorgegebenePosition());
  }

  private int compareByPosition(Long one, Long another) {
    return GRUPPE_IM_GEBIET_COMPARATOR.compareByPosition(one, another);
  }
}
