
package de.ivu.elect.jee.entity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import de.ivu.elect.jee.entity.tk.EntityTK;
import de.ivu.elect.jee.entity.tk.EntityUK;
import de.ivu.elect.jee.protokollierung.AttributWertVorher;
import de.ivu.elect.jee.protokollierung.VorherNachherWert;

/**
 *  on 02.06.2015.
 */
public class AbstractNoPersistentEntity<PK, UK extends EntityUK> implements Entity<PK, UK> {

  private static final long serialVersionUID = 1L;

  // ELECTMUC-1725
  public static final AbstractNoPersistentEntity< ? , ? > EMPTY = new AbstractNoPersistentEntity<>();

  public AbstractNoPersistentEntity() {
    super();
  }

  @Override
  public Long getId() {
    return null;
  }

  @Override
  public PK getPk() {
    return null;
  }

  @Override
  public UK getUk() {
    return null;
  }

  @Override
  public Class< ? > getEntityClass() {
    return this.getClass();
  }

  @Override
  public EntityTK getTk() {
    return null;
  }

  @Override
  public String getEntityTechnicalName() {
    return getBaseClassName();
  }

  @Override
  public boolean isAenderungenProtokollieren() {
    return false;
  }

  @Override
  public Map<String, VorherNachherWert> getProtokollierteAttributeMitWerten() {
    return new HashMap<>();
  }

  @Override
  public void setProtokollierteAttributeMitWerten(Map<String, AttributWertVorher> werteVorher) {

  }

  @Override
  public void resetProtokollierteAttribute() {

  }

  @Override
  public List<EntityFachlichAbhaengigNode> getFachlichAbhaengigeEntitaeten() {
    return new ArrayList<>();
  }

  @Override
  public boolean isInstanceOf(Class< ? > clazz) {
    return clazz.isInstance(this);
  }

  @Override
  public <E> EntityContainer<E> castTo(Class<E> clazz) {
    return new EntityContainer<>((E) this);
  }

  @Override
  public String getBaseClassName() {
    return this.getClass().getName();
  }

  @Override
  public void copyEntityAttributesToOtherEntity(Entity other) {
    throw new UnsupportedOperationException();
  }

}
