package com.eyrolles.model;

import java.util.Date;
import java.util.Collection;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;

@Entity
@Table(name="livres")
public class Livre {
	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	private int id;	
	private String titre;
	private String sous_titres;
	private int ISBN;
	private String langue;
	@JsonIgnore
	@Lob
	private byte[] photo;
	@ManyToOne
	private Categorie categorie;
	@ManyToOne
	@JsonManagedReference
	private Theme theme;
	@ManyToOne
	@JsonManagedReference
	private SousCategorie sousCategorie;
	private int nb_pages;
	private Date dateParution;
	private double prix;
	@ManyToOne
	@JsonManagedReference
	private Publieur publieur;
	@ManyToMany(mappedBy="livres")
	@Cascade({CascadeType.ALL})
	@JsonManagedReference
	private Collection<Auteur> auteurs;
	
	
	
	public Livre() {
		super();
	}
	
	
	

	public Livre(String titre, String sous_titres, int iSBN, String langue, Categorie categorie, Theme theme,
			SousCategorie sousCategorie, int nb_pages, Date dateParution, double prix) {
		super();
		this.titre = titre;
		this.sous_titres = sous_titres;
		ISBN = iSBN;
		this.langue = langue;
		this.categorie = categorie;
		this.theme = theme;
		this.sousCategorie = sousCategorie;
		this.nb_pages = nb_pages;
		this.dateParution = dateParution;
		this.prix = prix;
	}




	public Livre(String titre, String sous_titres, int iSBN, String langue,
			Categorie categorie, Theme theme, int nb_pages, Date date,
			double prix) {
		super();
		this.titre = titre;
		this.sous_titres = sous_titres;
		ISBN = iSBN;
		this.langue = langue;
		this.categorie = categorie;
		this.theme = theme;
		this.nb_pages = nb_pages;
		this.dateParution = date;
		this.prix = prix;
		
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getTitre() {
		return titre;
	}
	public void setTitre(String titre) {
		this.titre = titre;
	}
	public int getISBN() {
		return ISBN;
	}
	public void setISBN(int iSBN) {
		ISBN = iSBN;
	}
	
	public double getPrix() {
		return prix;
	}
	public void setPrix(double prix) {
		this.prix = prix;
	}
	public Publieur getPublieur() {
		return publieur;
	}
	public void setPublieur(Publieur publieur) {
		this.publieur = publieur;
	}
	public Collection<Auteur> getAuteurs() {
		return auteurs;
	}
	public void setAuteurs(Collection<Auteur> auteurs) {
		this.auteurs = auteurs;
	}
	public String getSous_titres() {
		return sous_titres;
	}
	public void setSous_titres(String sous_titres) {
		this.sous_titres = sous_titres;
	}
	public String getLangue() {
		return langue;
	}
	public void setLangue(String langue) {
		this.langue = langue;
	}
	public int getNb_pages() {
		return nb_pages;
	}
	public void setNb_pages(int nb_pages) {
		this.nb_pages = nb_pages;
	}
	public Date getDateParution() {
		return dateParution;
	}
	public void setDateParution(Date dateParution) {
		this.dateParution = dateParution;
	}
	public Categorie getCategorie() {
		return categorie;
	}
	public void setCategorie(Categorie categorie) {
		this.categorie = categorie;
	}
	public Theme getTheme() {
		return theme;
	}
	public void setTheme(Theme theme) {
		this.theme = theme;
	}
	



	public byte[] getPhoto() {
		return photo;
	}




	public void setPhoto(byte[] photo) {
		this.photo = photo;
	}




	public SousCategorie getSousCategorie() {
		return sousCategorie;
	}




	public void setSousCategorie(SousCategorie sousCategorie) {
		this.sousCategorie = sousCategorie;
	}
	
}

