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

import static java.util.Objects.nonNull;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.apache.commons.lang3.StringUtils.trimToEmpty;

import de.ivu.elect.business.gebietsbaum.boundary.WahlverwaltungGebietInformation;

public interface WahlverwaltungGebietInformationArt {

  String toArt();

  default boolean equalsGebietsart(Gebiet gebiet) {
    return equalsGebietsart(toArt(), gebiet);
  }

  static boolean equalsGebietsart(String gebietsartName, Gebiet gebiet) {
    return nonNull(gebiet) && nonNull(gebiet.getGebietsart()) && equalsArt(gebietsartName, gebiet.getGebietsart().getName());
  }

  default boolean equalsGebietsgruppierungArt(Gebietsgruppierung gebietsgruppierung) {
    return equalsGebietsgruppierungArt(toArt(), gebietsgruppierung);
  }

  static boolean equalsGebietsgruppierungArt(String gebietsgruppierungArt, Gebietsgruppierung gebietsgruppierung) {
    return nonNull(gebietsgruppierung) && equalsArt(gebietsgruppierungArt, gebietsgruppierung.getGebietsgruppierungArt());
  }

  default boolean equalsArt(WahlverwaltungGebietInformation wahlverwaltungGebietInformation) {
    return equalsArt(toArt(), wahlverwaltungGebietInformation);
  }

  static boolean equalsArt(String art, WahlverwaltungGebietInformation wahlverwaltungGebietInformation) {
    return nonNull(wahlverwaltungGebietInformation) && equalsArt(art, wahlverwaltungGebietInformation.getArt());
  }

  static boolean equalsArt(String one, String another) {
    return isNotBlank(one) && trimToEmpty(one).equalsIgnoreCase(trimToEmpty(another));
  }
}
