
package aufgabe09.entitaeten;

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.OneToMany;
import javax.persistence.Version;
import javax.validation.constraints.Min;
import javax.validation.constraints.Pattern;

@Entity
public class Produkt implements Serializable {

    @Id
    @GeneratedValue
    private int produktnr;

    @Pattern(regexp="[A-Z].*", message= "Beginn mit Großbuchstaben")
    private String name;

    @Min(value=1, message="positiver Preis")
    private int verkaufspreis;

    @OneToMany(cascade = {CascadeType.PERSIST,CascadeType.MERGE})
    private Set<Bestellposten> posten = new HashSet<Bestellposten>();

    @Version
    private long version;

    public void addPosten(Bestellposten b){
        getPosten().add(b);
    }

    public void deletePosten(Bestellposten b){
        getPosten().remove(b);
    }

    public Produkt(){}

    public Produkt(String name, int verkaufspreis) {
        this.name = name;
        this.verkaufspreis = verkaufspreis;
    }

    public Set<Bestellposten> getPosten() {
        return posten;
    }

    public void setPosten(Set<Bestellposten> bestellungen) {
        this.posten = bestellungen;
    }

    public String getName() {
        return name;
    }

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

    public int getProduktnr() {
        return produktnr;
    }

    public void setProduktnr(int produktnr) {
        this.produktnr = produktnr;
    }

    public int getVerkaufspreis() {
        return verkaufspreis;
    }

    public void setVerkaufspreis(int verkaufspreis) {
        this.verkaufspreis = verkaufspreis;
    }

    public long getVersion() {
        return version;
    }

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

    @Override
    public String toString(){
        StringBuffer ergebnis= new StringBuffer(produktnr+":"+name+" Preis:"+verkaufspreis+"\n");
        for(Bestellposten b:posten)
            ergebnis.append(" "+b+"\n");
        return ergebnis.toString();
    }

}
