package de.ivu.elect.core.exchange.stimmen.csv.referendum;

import java.io.Serializable;

import de.ivu.elect.business.wahlvorschlag.entity.ReferendumOption;

public class ReferendumOptionFuerExportComparator implements java.util.Comparator<ReferendumOption>, Serializable {

  @Override
  public int compare(ReferendumOption o1, ReferendumOption o2) {

    int result = vergleicheGruppe(o1, o2);

    if (result == 0) {
      result = vergleichePosition(o1, o2);
    }
    return result;

  }

  private int vergleichePosition(ReferendumOption o1, ReferendumOption o2) {
    return o1.getPosition().compareTo(o2.getPosition());
  }

  private int vergleicheGruppe(ReferendumOption o1, ReferendumOption o2) {
    if (o1.getGruppeImGebiet().getRelativePosition() != null && o2.getGruppeImGebiet().getRelativePosition() != null) {
      return o1.getGruppeImGebiet().getRelativePosition().compareTo(o2.getGruppeImGebiet().getRelativePosition());
    }
    if (o1.getGruppeImGebiet().getRelativePosition() == null) {
      return 1;
    }
    return -1;
  }
}
