package entities;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import validators.Modulnamenregel;
import validators.Modulregel;

@ManagedBean(name="modul")
@RequestScoped
@Modulregel(hoeher={"KbSE","AOP"}, grenze=600, groups={validators.ModulGroup.class})
public class Modul implements Serializable {
  private static final long serialVersionUID = 1L;
  @Min(value=100, message="dreistellig")
  @Max(value=999, message="dreistellig")
  private int nr;
  @NotNull @Modulnamenregel(verboten={"VHDL","PNP"}, groups={validators.ModulGroup.class})
  private String name;

  public Modul(){}

  public Modul(int nr, String name) {
    this.nr = nr;
    this.name = name;
  }

  public String uebernehmen(){
    System.out.println("uebernehmen");
    return "./ausgabe.xhtml";
  }

  public String eingeben(){
    return "./index.xhtml";
  }

  public String getName() {
    return name;
  }

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

  public int getNr() {
    return nr;
  }

  public void setNr(int nr) {
    this.nr = nr;
  }

  @Override
  public boolean equals(Object object) {
    if (object==null || !(object instanceof Modul)) {
      return false;
    }
    Modul other = (Modul) object;
    if (this.nr != other.nr  || !this.name.equals(other.name)) {
      return false;
    }
    return true;
  }

  @Override // generieren lassen
  public int hashCode() {
    int hash = 5;
    hash = 47 * hash + this.nr;
    hash = 47 * hash + (this.name != null ? this.name.hashCode() : 0);
    return hash;
  }

  @Override
  public String toString() {
    return name+"("+nr+")";
  }

}
