package jpa20mitbeanvalidation.entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Version;


@Entity
public class Rolle implements Serializable {

  @Id
  @GeneratedValue
  private int rid;

  private String name;

  private int tagessatz;

  @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
  @Basic(fetch = FetchType.LAZY)
  private List<Mitarbeiter> mitarbeiter;
  
  @Version
  private int version;

  public Rolle() {
    mitarbeiter = new ArrayList<Mitarbeiter>();
  }

  public Rolle(String name, int tagessatz) {
    this();
    this.name = name;
    this.tagessatz = tagessatz;
  }

  public int getRid() {
    return rid;
  }

  public void setRid(int rid) {
    this.rid = rid;
  }

  public int getVersion() {
    return version;
  }

  public void setVersion(int version) {
    this.version = version;
  }

  public void mitarbeiterHinzu(Mitarbeiter m) {
    List<Mitarbeiter> tmp = getMitarbeiter();
    tmp.add(m);
    setMitarbeiter(tmp);
  }

  public String getName() {
    return name;
  }

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

  public int getTagessatz() {
    return tagessatz;
  }

  public void setTagessatz(int tagessatz) {
    this.tagessatz = tagessatz;
  }

  public List<Mitarbeiter> getMitarbeiter() {
    return mitarbeiter;
  }

  public void setMitarbeiter(List<Mitarbeiter> mitarbeiter) {
    this.mitarbeiter = mitarbeiter;
  }

  @Override
  public String toString() {
    StringBuffer ergebnis = new StringBuffer(rid + ": " + name + " [ ");
    for (Mitarbeiter m : mitarbeiter) {
      ergebnis.append(m.getName() + " ");
    }
    ergebnis.append("]");
    return ergebnis.toString();
  }
}
