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

import java.util.List;
import java.util.Map;
import java.util.Objects;

import javax.annotation.Nullable;

import de.ivu.elect.business.stimmeingabe.control.plausi.StimmeingabePlausiFormatter;
import de.ivu.elect.jee.entity.customdata.CustomData;
import de.ivu.elect.jee.presentation.dynamicform.Property;

public interface StimmeingabePlausiKonfigurationCustomData extends CustomData {

  Map<StimmeingabePlausiKonfigurationCustomDataKategorie, List<Object>> getParameters();

  Map<StimmeingabePlausiKonfigurationCustomDataKategorie, List<Property>> getProperties(StimmeingabePlausiKonfigurationPropertyContext context);

  String formatFehlermeldungBeispiel(StimmeingabePlausiKonfiguration stimmeingabePlausiKonfiguration, StimmeingabePlausiFormatter stimmeingabePlausiFormatter);

  boolean isCustomDataDefaultOverridden(StimmeingabePlausiKonfigurationCustomData customDataDefault);

  void resetToDefault(StimmeingabePlausiKonfigurationCustomData customDataDefault);

  default boolean equalsOtherCustomDataContent(StimmeingabePlausiKonfigurationCustomData other) {
    return this.getClass().equals(other.getClass()) && Objects.equals(getContent(), other.getContent());
  }

  @Nullable
  Object getContent();
}
