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

import java.util.Comparator;

import de.ivu.elect.util.NullComparator;

public class ReferendumOptionKumulierteStimmenByGruppeImGebietPositionAbgeleitetAndReferendumOptionPositionComparator implements Comparator<ReferendumOptionKumulierteStimmen> {

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

  public ReferendumOptionKumulierteStimmenByGruppeImGebietPositionAbgeleitetAndReferendumOptionPositionComparator() {
    super();
  }

  @Override
  public int compare(ReferendumOptionKumulierteStimmen o1, ReferendumOptionKumulierteStimmen o2) {
    if (o1 == null || o2 == null) {
      return NULL_COMPARATOR.compare(o1, o2);
    }

    int result = compareByPosition(o1.getGruppeImGebietPositionAbgeleitet(), o2.getGruppeImGebietPositionAbgeleitet());

    if (result != 0) {
      return result;
    }

    return compareByPosition(o1.getReferendumOptionPosition(), o2.getReferendumOptionPosition());
  }

  private int compareByPosition(Long o1, Long o2) {
    return Long.compare(o1, o2);
  }
}
