
package de.ivu.elect.presentation.exchange;

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

import java.io.Serializable;
import java.util.Objects;

import de.ivu.elect.business.security.UseCasePermission;

public interface ExchangeDescription extends Serializable {

  String KEIN_PAGE_MENU = null;

  /**
   * @return <code>true</code>, falls der Im-/Export spezifisch per Wahl oder Wahltermin ist und eine aktuell ausgewählte Wahl oder einen ausgewählten Wahltermin vorraussetzt.
   */
  boolean isSpecificPerWahlOrWahltermin();

  UseCasePermission getUseCasePermission();

  default boolean isPageMenuRendered() {
    return !Objects.equals(KEIN_PAGE_MENU, getPageMenuComponentName()) && isNotBlank(getPageMenuComponentName());
  }

  /**
   * Name des Page-Menüs, das beim Im-/Exportbericht eingeblendet werden soll. <code>null</code> wenn kein eigenes Page-Menü gebraucht wird (sondern der Gebietsbaum).
   */
  String getPageMenuComponentName();
}
