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

import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import de.ivu.elect.jee.entity.Entity;
import de.ivu.elect.jee.entity.EntityContainer;
import de.ivu.elect.jee.entity.EntityFachlichAbhaengigNode;
import de.ivu.elect.jee.entity.tk.EntityTK;
import de.ivu.elect.jee.protokollierung.AttributWertVorher;
import de.ivu.elect.jee.protokollierung.VorherNachherWert;

/*
 * Eine PersonenVerknuepfung, die sich nicht in die beidseitigen Relationen mit Personen einträgt.
 */
public class PotentiellePersonenVerknuepfung implements PersonenVerknuepfungBase {

  private static final long serialVersionUID = 1L;

  private Personendaten person2;

  private Personendaten person1;

  private VerknuepfungsStatus status;

  private VerknuepfungsGrundlage grundlage;

  private VerknuepfungsArt verknuepfungsArt;

  public PotentiellePersonenVerknuepfung() {
    super();
  }

  public PersonenVerknuepfung createPersonenVerknuepfung() {
    PersonenVerknuepfung personenVerknuepfung = new PersonenVerknuepfung();
    personenVerknuepfung.setPerson1(getPerson1());
    personenVerknuepfung.setPerson2(getPerson2());
    personenVerknuepfung.setVerknuepfungsGrundlage(getVerknuepfungsGrundlage());
    personenVerknuepfung.setVerknuepfungsStatus(getVerknuepfungsStatus());
    personenVerknuepfung.setVerknuepfungsArt(getVerknuepfungsArt());

    return personenVerknuepfung;
  }

  @Override
  public Long getId() {
    // ELECT-5245
    return null;
  }

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

  @Override
  public PersonenVerknuepfungPK getPk() {
    throw new UnsupportedOperationException();
  }

  @Override
  public PersonenVerknuepfungUK getUk() {
    throw new UnsupportedOperationException();
  }

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

  @Override
  public EntityTK getTk() {
    throw new UnsupportedOperationException();
  }

  @Override
  public String getEntityTechnicalName() {
    throw new UnsupportedOperationException();
  }

  @Override
  public void setPerson2(Personendaten person2) {
    this.person2 = person2;
  }

  @Override
  public void setPerson2OhneUpdateBeziehung(Personendaten person2) {
    throw new UnsupportedOperationException();
  }

  @Override
  public Personendaten getPerson2() {
    return person2;
  }

  @Override
  public void setPerson1(Personendaten person1) {
    this.person1 = person1;
  }

  @Override
  public void setPerson1OhneUpdateBeziehung(Personendaten person1) {
    throw new UnsupportedOperationException();
  }

  @Override
  public Personendaten getPerson1() {
    return person1;
  }

  @Override
  public VerknuepfungsStatus getVerknuepfungsStatus() {
    return status;
  }

  @Override
  public void setVerknuepfungsStatus(VerknuepfungsStatus verknuepfungsStatus) {
    this.status = verknuepfungsStatus;
  }

  @Override
  public VerknuepfungsGrundlage getVerknuepfungsGrundlage() {
    return grundlage;
  }

  @Override
  public void setVerknuepfungsGrundlage(VerknuepfungsGrundlage verknuepfungsGrundlage) {
    this.grundlage = verknuepfungsGrundlage;
  }

  @Override
  public VerknuepfungsArt getVerknuepfungsArt() {
    return verknuepfungsArt;
  }

  @Override
  public void setVerknuepfungsArt(VerknuepfungsArt verknuepfungsArt) {
    this.verknuepfungsArt = verknuepfungsArt;
  }

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

  @Override
  public void setProtokollierteAttributeMitWerten(Map<String, AttributWertVorher> werteVorher) {
    throw new UnsupportedOperationException();
  }

  @Override
  public void resetProtokollierteAttribute() {
  }

  @Override
  public List<EntityFachlichAbhaengigNode> getFachlichAbhaengigeEntitaeten() {
    throw new UnsupportedOperationException();
  }

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

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

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

  @Override
  public void copyEntityAttributesToOtherEntity(Entity other) {

  }

  public Set<String> getDirtyProperties() {
    return new HashSet<>();
  }

  public void clearDirtyProperties() {

  }

  public boolean isHibernateDirty() {
    return false;
  }
}
