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

package javabbuva;

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

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

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.A9696207-F0B2-CE8B-CCE0-E5AF389D8A26]
    // </editor-fold>
    private String nombre;

    private String direccion;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.26160E5C-EEEB-FD93-49D8-99D6E45C7A82]
    // </editor-fold>
    private String login;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.8907CBB9-18B3-F689-156A-9C5E9D469823]
    // </editor-fold>
    private String password;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.84866329-B635-9E72-DD25-C6860E244FC6]
    // </editor-fold>
    private String telefono;

    @OneToMany(cascade=CascadeType.ALL)
    private List <Producto> mProductos;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.925F2D33-4767-C8F9-3CF1-6B0E38AB0568]
    // </editor-fold>
    public Cliente () {
        mProductos = new ArrayList();
        telefono = "ND";
        direccion = "ND";
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.040273E3-B523-537C-E3D2-45F9553BF4DC]
    // </editor-fold>
    public String getLogin () {
        return login;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.D19465E0-289E-8E10-DB3D-EE2253188291]
    // </editor-fold>
    public void setLogin (String val) {
        this.login = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.AAC754AF-38D2-DDB0-B3E6-EAC3C182F3E3]
    // </editor-fold>
    public String getNombre () {
        return nombre;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.9844C2B2-2117-52E3-0B90-FF45B08489EE]
    // </editor-fold>
    public void setNombre (String val) {
        this.nombre = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.26A999DB-67E4-0243-FBBF-F6A68ED55C20]
    // </editor-fold>
    public String getPassword () {
        return password;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.F6EA66C4-7A73-A8B5-3010-96E3A2C9C779]
    // </editor-fold>
    public void setPassword (String val) {
        this.password = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.6A4C79B6-1902-B45C-F753-E8DDE8872969]
    // </editor-fold>
    public String getTelefono () {
        return telefono;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.E3E9C6BF-276F-6D7C-E013-29A829043983]
    // </editor-fold>
    public void setTelefono (String val) {
        this.telefono = val;
    }

    /**
     * @return the direccion
     */
    public String getDireccion() {
        return direccion;
    }

    /**
     * @param direccion the direccion to set
     */
    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    //METODO QUE AÑADE UN PRODUCTO A LA LISTA DE PRODUCTOS
    public void añadirProducto(Producto p){
        this.getMProductos().add(p);
    }

    /**
     * @return the mProductos
     */
    public List<Producto> getMProductos() {
        return mProductos;
    }

    /**
     * @param mProductos the mProductos to set
     */
    public void setMProductos(List<Producto> mProductos) {
        this.mProductos = mProductos;
    }

    //COMPRUEBA SI EL CLIENTE TIENE LA CUENTA QUE SE LE PASA COMO PARAMETRO
    public boolean existeCuenta(String cuenta) {
        int i = 0;
        while(i<mProductos.size()){
            if(mProductos.get(i).getNumeroCuenta().equals(cuenta))
                return true;
            else i++;
        }
        return false;
    }

    //DEVUELVE LOS DATOS DEL CLIENTE, ES UN METODO IMPLEMENTADO EN LOS HIJOS
    public String getDatos(){
        return "";
    }


    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 Cliente)) {
            return false;
        }
        Cliente other = (Cliente) 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.Cliente[id=" + id + "]";
    }

}
