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

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

import de.ivu.elect.business.kandidatur.entity.DirektkandidaturKumulierteStimmen;

public class DirektkandidaturKumulierteStimmenByGebietPositionUndPositionImGebietComparator
    implements
      Comparator<DirektkandidaturKumulierteStimmen>,
      Serializable {

  @Override
  public int compare(DirektkandidaturKumulierteStimmen o1, DirektkandidaturKumulierteStimmen o2) {
    int result = compareValue(o1.getGebiet().getPosition(), o2.getGebiet()
        .getPosition());
    if (result == 0) {
      result = compareValue(o1.getPositionImGebiet(), o2.getPositionImGebiet());
    }
    if (result == 0) {
      result = o1.getPk().compareTo(o2.getPk());
    }

    return result;
  }

  private int compareValue(Long position1, Long position2) {
    if (position1 == null) {
      if (position2 == null) {
        return 0;
      }
      return 1;
    }
    if (position2 == null) {
      return -1;
    }
    return position1.compareTo(position2);

  }
}
