package entities;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;

@Entity
public class Nutzer implements Serializable {

  @Id
  @GeneratedValue
  private int id;
  private String name;
  @OneToMany(cascade = CascadeType.ALL, orphanRemoval=true)
  @JoinTable(name="HAT")
  private Set<Bild> hat = new HashSet<Bild>();
  @OneToMany(cascade = CascadeType.ALL, orphanRemoval=true)
  @JoinTable(name="SUCHT")
  private Set<Bild> sucht = new HashSet<Bild>();

  public Nutzer() {
  }

  public Nutzer(String name){
    this.name=name;
  }

  public void hatErgaenzen(Bild b){
    hat.add(b);
  }

  public void suchtErgaenzen(Bild b){
    sucht.add(b);
  }

  public void hatLoeschen(Bild b){
    hat.remove(b);
  }

  public void suchtLoeschen(Bild b){
    sucht.remove(b);
  }

  public Set<Bild> getHat() {
    return hat;
  }

  public void setHat(Set<Bild> hat) {
    this.hat = hat;
  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Set<Bild> getSucht() {
    return sucht;
  }

  public void setSucht(Set<Bild> sucht) {
    this.sucht = sucht;
  }

  @Override
  public boolean equals(Object obj) {
    if (obj == null) {
      return false;
    }
    if (getClass() != obj.getClass()) {
      return false;
    }
    final Nutzer other = (Nutzer) obj;
    if (this.id != other.id) {
      return false;
    }
    return true;
  }

  @Override
  public int hashCode() {
    int hash = 3;
    hash = 29 * hash + this.id;
    return hash;
  }

}
