/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaprimitiva;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Transient;

/**
 *
 * @author Adrian
 */
@Entity
public class Jugador implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="JugadorID")
    private Long id;

        // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.C9BA59FA-5058-F6A5-5284-1FA248C02491]
    // </editor-fold>
    private int saldo; //saldo del jugador

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.32288078-653C-A80F-DF55-84ABC356D751]
    // </editor-fold>
    @Transient
    private List <Integer> ganadora; //Combinacion ganadora

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.5ECAB0F0-0C34-7619-3A0F-AB71792140F5]
    // </editor-fold>
    @OneToMany(cascade=CascadeType.ALL) //RELACION DE 1 A MUCHOS, SI BORRAMOS SE BORRA DE AQUÍ TAMBIEN
    private List <Columna> Columnas; //Lista de objetos tipo columna

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.9DF8AAF4-0385-3916-EE68-F52F31CF6D7B]
    // </editor-fold>
    public Jugador () {
        this.setSaldo(100);
        Columnas = new ArrayList();
        ganadora = new ArrayList();
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.2DD6A65A-00A0-F8C6-E373-AAFF369BBFC3]
    // </editor-fold>
    //Devuelve todas nuestras columnas
    public List <Columna> getColumnas () {
        return Columnas;
    }
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.99179F79-2182-A379-2110-098B470334D7]
    // </editor-fold>
    //Cambiamos todas nuestras columnas
    public void setColumnas (List <Columna> val) {
        this.Columnas = val;
    }

    //añadimos una columna pasandole los valores de esta
    public void añadirColumna(List <Integer> val){
        Columna c = new Columna(); //creamos un nuevo objeto columna
        c.setNumeros(val); //le damos los 6 numeros
        this.Columnas.add(c); //añadimos a nuestras columnas dicha columna
        saldo -= 10; //cada columna son 10 euros
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.0C37749C-2479-3779-85ED-0E2C6690125F]
    // </editor-fold>
    //Devuelve el saldo
    public int getSaldo () {
        return saldo;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.B41515B9-06CB-7B12-AADB-C5851669BEA0]
    // </editor-fold>
    //Cambiamos el saldo
    public void setSaldo (int val) {
        this.saldo = val;
    }

    //Aumentamos el saldo
    public void aumentarSaldo(int val){
        saldo+=val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.9810F4A2-32A0-2EFC-52EA-B4EABAA34A5F]
    // </editor-fold>
     //Le decimos el nº de la columna a modificar y le damos la nueva columna
    public void modificarColumnas (int n, List <Integer> a) {
        Columna c = new Columna();
        c.setNumeros(a);
        //Columnas.add(n-1, c); //Introducimos la colunma en la posicion
        //Columnas.remove(n); //Borramos la posicion de la antigua columna
        Columnas.set(n-1, c);
        saldo -= 10; //Modificar cuesta 10 euros
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.0B3F1C9D-E8FB-F88D-F59C-DC0B0E61E0F4]
    // </editor-fold>
    public void realizarEscrutineo () {
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.D58A9EB9-8142-6966-A0A7-FC0195ED7582]
    // </editor-fold>
    public void introducirCombinacionGanadora () {
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.A3A49914-5FA7-C029-F938-A9D1A1D31674]
    // </editor-fold>
    //Devuelve la combinacion ganadora
    public List <Integer> getGanadora () {
        return ganadora;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.975DAA5C-0182-1AFF-D02C-BE336AAFEEEE]
    // </editor-fold>
    //Modificamos la combinacion ganadora
    public void setGanadora (List <Integer> val) {
        this.ganadora = val;
    }

    //Devuelve el numero de columnas que tenemos
    public int getNumeroColumna(){
        return Columnas.size();
    }

    //Quitamos la columna que le pasamos por parametro
    public void quitarcolumna(int n){
        Columnas.remove(n-1);
    }

    public Long getId() {
        return id;
    }

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

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Jugador)) {
            return false;
        }
        Jugador other = (Jugador) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "vistas.Jugador[id=" + id + "]";
    }


    //********************************************
    //************ GUARDAR DATOS *****************
    //********************************************

    public void guardar() {
        controladorBD cbd = new controladorBD();
        for(int i = 0;i<getColumnas().size();i++)
            Columnas.get(i).guardarC();
        cbd.add(this);
    }

    public void carga() {
        for(int i = 0;i<getColumnas().size();i++)
            Columnas.get(i).cargaC();
    }


}
