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

import java.util.Comparator;

import de.ivu.elect.business.veranstaltung.entity.Teilnahme;
import de.ivu.elect.business.wahlausschuss.control.WahlausschussmitgliedDefaultComparator;
import de.ivu.elect.business.wahlausschuss.entity.Wahlausschussmitglied;

public class CoreTeilnahmeComparator extends TeilnahmeDefaultComparator {

  private static final long serialVersionUID = 1L;

  private static final Comparator<Wahlausschussmitglied> WAHLAUSSCHUSSMITGLIED_DEFAULT_COMPARATOR = new WahlausschussmitgliedDefaultComparator();

  public CoreTeilnahmeComparator() {
    super();
  }

  @Override
  public int compare(Teilnahme one, Teilnahme another) {
    int result = compareByTeilnehmerRolle(one, another);

    if (result == 0 && one.getPersonendaten().isInstanceOf(Wahlausschussmitglied.class)
        && another.getPersonendaten().isInstanceOf(Wahlausschussmitglied.class)) {
      Wahlausschussmitglied w1 = one.getPersonendaten().castTo(Wahlausschussmitglied.class).getEntity();
      Wahlausschussmitglied w2 = another.getPersonendaten().castTo(Wahlausschussmitglied.class).getEntity();

      result = WAHLAUSSCHUSSMITGLIED_DEFAULT_COMPARATOR.compare(w1, w2);
    }

    if (result == 0) {
      super.compare(one, another);
    }

    return result;
  }
}
