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

import static org.apache.commons.lang3.StringUtils.equalsIgnoreCase;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.apache.commons.lang3.StringUtils.trimToEmpty;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gebietsbaum.entity.Gebietsart;
import de.ivu.elect.business.gebietsbaum.entity.GebietsartBezirksart;
import de.ivu.elect.business.gebietsbaum.entity.GebietsartIcon;

@Deprecated // nicht mehr verwenden
public interface GebietsartTemplate {

  GebietsartIcon getGebietsartIcon();

  String getGebietsartTitle();

  String getGebietsartName();

  String getKennzeichen();

  long getSortierPosition();

  GebietsartBezirksart getGebietsartBezirksart();

  default boolean isErfassungsgebiet() {
    return getGebietsartBezirksart().isErfassungsgebiet();
  }

  default boolean isBriefwahlbezirk() {
    return getGebietsartBezirksart().isBriefwahlbezirk();
  }

  default boolean isReservebezirk() {
    return getGebietsartBezirksart().isReservebezirk();
  }

  default boolean isStimmbezirk() {
    return getGebietsartBezirksart().isStimmbezirk();
  }

  /**
   * @param gebiet
   *          , dessen Gebietsart verglichen wird
   * @return <code>true</code>, wenn meine Gebietsart gleich der Gebietsart von <code>gebiet</code> ist.
   */
  default boolean equalsGebiet(Gebiet gebiet) {
    return gebiet != null && equalsGebietsart(gebiet.getGebietsart());
  }

  default boolean equalsGebietsart(Gebietsart gebietsart) {
    return gebietsart != null && equalsGebietsart(gebietsart.getName());
  }

  default boolean equalsGebietsart(String gebietsartName) {
    return isNotBlank(getGebietsartName()) && equalsIgnoreCase(trimToEmpty(getGebietsartName()), trimToEmpty(gebietsartName));
  }

  String getDarstellung();
}
