
package de.ivu.elect.jee.entity.customdata;

import java.io.Serializable;
import java.util.function.Supplier;

import de.ivu.elect.jee.entity.Entity;

public interface CustomData extends Serializable {

  /**
   * Entität, in der die CustomData gespeichert werden
   */
  CustomDataEntity getStorageEntity();

  /**
   * Entität, in der die CustomData gespeichert werden
   */
  void setStorageEntity(CustomDataStorageEntity entity);

  /**
   * Entität zur der die CustomData fachlich gehören
   */
  Entity<?,?> getTechnicalEntity();

  /**
   * Entität zur der die CustomData fachlich gehören
   */
  void setTechnicalEntity(Entity<?,?> technicalEntity);

  <C extends CustomData,P extends CustomDataProperties> P getProperties(CustomDataPropertiesFactory<C,P> customDataPropertiesBuilder);

}
