/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Physique;
import Metier.Categorie;
import Metier.Livre;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
public class LivreServiceJDBCImpl implements LivreServiceJDBC {
ConnectionService conn;
CategorieServiceJDBC cs = PhysiqueFactory.getCategorieServiceJDBC();
protected LivreServiceJDBCImpl() {
try {
conn = ConnectionService.getInstance(PhysiqueFactory.getBase(), PhysiqueFactory.getHost(), PhysiqueFactory.getNomBase(), PhysiqueFactory.getDbDriver(), PhysiqueFactory.getNdc(), PhysiqueFactory.getMdp());
} catch (Exception ex) {
System.err.println("Erreur livre constructeur" + ex);
}
}
@Override
public ArrayList<Livre> getAllOrderByOrigineAndCategorieAndTitre(){
ArrayList<Livre> livres = new ArrayList();
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre ORDER BY origine, idCategorie, titre");
while (rs.next()) {
Livre livre = new Livre(rs.getString("auteur"), rs.getString("titre"), rs.getString("position"), rs.getString("volume"), rs.getInt("exemplaire"), rs.getString("annee"), rs.getString("prix"), rs.getString("origine"));
livre.setCatégorie(cs.getById(rs.getInt("idCategorie")));
livre.setId(rs.getString("id"));
livres.add(livre);
}
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre getAllOrderByOrigineAndCategorieAndTitre" + ex);
}
return livres;
}
@Override
public ArrayList<Livre> getAll() {
ArrayList<Livre> livres = new ArrayList();
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre");
while (rs.next()) {
Livre livre = new Livre(rs.getString("auteur"), rs.getString("titre"), rs.getString("position"), rs.getString("volume"), rs.getInt("exemplaire"), rs.getString("annee"), rs.getString("prix"), rs.getString("origine"));
livre.setCatégorie(cs.getById(rs.getInt("idCategorie")));
livre.setId(rs.getString("id"));
livres.add(livre);
}
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre getall" + ex);
}
return livres;
}
@Override
public ArrayList<Livre> getByAuteur(String auteur) {
ArrayList<Livre> livres = new ArrayList();
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre WHERE auteur LIKE'%" + auteur + "%'");
while (rs.next()) {
Livre livre = new Livre(rs.getString("auteur"), rs.getString("titre"), rs.getString("position"), rs.getString("volume"), rs.getInt("exemplaire"), rs.getString("annee"), rs.getString("prix"), rs.getString("origine"));
livre.setCatégorie(cs.getById(rs.getInt("idCategorie")));
livre.setId(rs.getString("id"));
livres.add(livre);
}
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre getByAuteur" + ex);
}
return livres;
}
@Override
public ArrayList<Livre> getByTitle(String titre) {
ArrayList<Livre> livres = new ArrayList();
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre WHERE titre LIKE'%" + titre + "%'");
while (rs.next()) {
Livre livre = new Livre(rs.getString("auteur"), rs.getString("titre"), rs.getString("position"), rs.getString("volume"), rs.getInt("exemplaire"), rs.getString("annee"), rs.getString("prix"), rs.getString("origine"));
livre.setCatégorie(cs.getById(rs.getInt("idCategorie")));
livre.setId(rs.getString("id"));
livres.add(livre);
}
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre getByTitle" + ex);
}
return livres;
}
@Override
public ArrayList<Livre> getByCategorie(Categorie categorie) {
ArrayList<Livre> livres = new ArrayList();
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre WHERE idCategorie ='" + categorie.getId() + "'");
while (rs.next()) {
Livre livre = new Livre(rs.getString("auteur"), rs.getString("titre"), rs.getString("position"), rs.getString("volume"), rs.getInt("exemplaire"), rs.getString("annee"), rs.getString("prix"), rs.getString("origine"));
livre.setCatégorie(categorie);
livre.setId(rs.getString("id"));
livres.add(livre);
}
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre getByCategorie" + ex);
}
return livres;
}
@Override
public void add(Livre livre) {
try {
Statement st = conn.getStatement();
st.executeUpdate("INSERT INTO livre(auteur, titre, position, "
+ "volume, exemplaire, annee, prix, idCategorie, origine, id) VALUES ('"
+ livre.getAuteur() + "', '"
+ livre.getTitre() + "', '"
+ livre.getPosition() + "', '"
+ livre.getVolume() + "', '"
+ livre.getExemplaire()+ "', '"
+ livre.getAnnee() + "', '"
+ livre.getPrix() + "', '"
+ livre.getCatégorie().getId() + "', '"
+ livre.getOrigine()+ "', '"
+ livre.getId() + "')");
} catch (Exception ex) {
System.err.println("Erreur livre add " + ex);
}
}
@Override
public ArrayList<Livre> getLivreByOrigineEtCategorie(String origine, Categorie categorie) {
ArrayList<Livre> livres = new ArrayList();
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre WHERE origine ='" + origine + "' AND idCategorie='" + categorie.getId() +"'");
while (rs.next()) {
Livre livre = new Livre(rs.getString("auteur"), rs.getString("titre"), rs.getString("position"), rs.getString("volume"), rs.getInt("exemplaire"), rs.getString("annee"), rs.getString("prix"), rs.getString("origine"));
livre.setCatégorie(cs.getById(rs.getInt("idCategorie")));
livre.setId(rs.getString("id"));
livres.add(livre);
}
rs.close();
} catch (Exception ex) {
System.out.println("Erreur livre getLivreByOrigineEtCategorie" + ex);
}
return livres;
}
@Override
public void update(Livre livre) {
try {
Statement st = conn.getStatement();
st.executeUpdate("UPDATE livre SET auteur='" + livre.getAuteur() + "', titre='" + livre.getTitre() + "', position='" + livre.getPosition() + "', volume='" + livre.getVolume() + "', exemplaire='" + livre.getExemplaire() + "', annee='" + livre.getAnnee() + "', prix='" + livre.getPrix() + "', idCategorie='" + livre.getCatégorie().getId() + "', origine='" + livre.getOrigine() +"' WHERE id ='" + livre.getId() + "'");
} catch (Exception ex) {
System.err.println("Erreur livre update" + ex);
}
}
@Override
public void remove(Livre livre) {
try {
Statement st = conn.getStatement();
st.executeUpdate("DELETE FROM livre WHERE id ='" + livre.getId() + "'");
} catch (Exception ex) {
System.err.println("Erreur livre remove" + ex);
}
}
@Override
public void removeByCategorie(Categorie categorie) {
try {
Statement st = conn.getStatement();
st.executeUpdate("DELETE FROM livre WHERE idCategorie ='" + categorie.getId() + "'");
} catch (Exception ex) {
System.err.println("Erreur livre removeByCategorie" + ex);
}
}
@Override
public ArrayList<Livre> getByAuteurEtTitre(String auteur, String titre, boolean etat) {
ArrayList<Livre> livres = new ArrayList();
String lien;
if(etat){
lien = "OR";
} else{
lien = "AND";
}
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre WHERE auteur LIKE'%" + auteur +"%' " + lien + " titre LIKE'%" + titre + "%'");
while (rs.next()) {
Livre livre = new Livre(rs.getString("auteur"), rs.getString("titre"), rs.getString("position"), rs.getString("volume"), rs.getInt("exemplaire"), rs.getString("annee"), rs.getString("prix"), rs.getString("origine"));
livre.setCatégorie(cs.getById(rs.getInt("idCategorie")));
livre.setId(rs.getString("id"));
livres.add(livre);
}
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre getByAuteurEtTitre" + ex);
}
return livres;
}
@Override
public ArrayList<Livre> getByTitreEtCategorie(String titre, Categorie categorie, boolean etat) {
ArrayList<Livre> livres = new ArrayList();
String lien;
if(etat){
lien = "OR";
} else{
lien = "AND";
}
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre WHERE titre LIKE'%" + titre +"%' " + lien + " idCategorie ='" + categorie.getId() + "'");
while (rs.next()) {
Livre livre = new Livre(rs.getString("auteur"), rs.getString("titre"), rs.getString("position"), rs.getString("volume"), rs.getInt("exemplaire"), rs.getString("annee"), rs.getString("prix"), rs.getString("origine"));
livre.setCatégorie(categorie);
livre.setId(rs.getString("id"));
livres.add(livre);
}
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre getByTitreEtCategorie" + ex);
}
return livres;
}
@Override
public ArrayList<Livre> getByAuteurEtCategorie(String auteur, Categorie categorie, boolean etat) {
ArrayList<Livre> livres = new ArrayList();
String lien;
if(etat){
lien = "OR";
} else{
lien = "AND";
}
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre WHERE auteur LIKE'%" + auteur +"%' " + lien + " idCategorie ='" + categorie.getId() +"'");
while (rs.next()) {
Livre livre = new Livre(rs.getString("auteur"), rs.getString("titre"), rs.getString("position"), rs.getString("volume"), rs.getInt("exemplaire"), rs.getString("annee"), rs.getString("prix"), rs.getString("origine"));
livre.setCatégorie(categorie);
livre.setId(rs.getString("id"));
livres.add(livre);
}
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre getByAuteurEtCategorie" + ex);
}
return livres;
}
@Override
public ArrayList<Livre> getByAuteurEtTitreEtCategorie(String auteur, String titre, Categorie categorie, boolean etat1, boolean etat2) {
ArrayList<Livre> livres = new ArrayList();
String lienAuteurTitre, lienTitreCategorie;
if(etat1){
lienAuteurTitre = "OR";
} else{
lienAuteurTitre = "AND";
}
if(etat2){
lienTitreCategorie = "OR";
} else{
lienTitreCategorie = "AND";
}
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre WHERE auteur LIKE'%" + auteur + "%' " + lienAuteurTitre + " titre LIKE'%" + titre +"%' " + lienTitreCategorie + " idCategorie ='" + categorie.getId() +"'");
while (rs.next()) {
Livre livre = new Livre(rs.getString("auteur"), rs.getString("titre"), rs.getString("position"), rs.getString("volume"), rs.getInt("exemplaire"), rs.getString("annee"), rs.getString("prix"), rs.getString("origine"));
livre.setCatégorie(categorie);
livre.setId(rs.getString("id"));
livres.add(livre);
}
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre getByAuteurEtTitreEtCategorie" + ex);
}
return livres;
}
@Override
public ArrayList<String> getAllOrigineLivre() {
ArrayList<String> origines = new ArrayList();
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT origine FROM livre");
while (rs.next()) {
if(!origines.contains(rs.getString("origine"))){
origines.add(rs.getString("origine"));
}
}
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre getAllOrigineLivre" + ex);
}
return origines;
}
@Override
public Livre getById(String id) {
Livre livre = null;
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre WHERE id ='" + id +"'");
rs.next();
livre = new Livre(rs.getString("auteur"), rs.getString("titre"), rs.getString("position"), rs.getString("volume"), rs.getInt("exemplaire"), rs.getString("annee"), rs.getString("prix"), rs.getString("origine"));
livre.setCatégorie(cs.getById(rs.getInt("idCategorie")));
livre.setId(id);
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre getById" + ex);
}
return livre;
}
@Override
public boolean existenceLivre(Livre livre) {
boolean exist = false;
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre WHERE auteur ='" + livre.getAuteur() + "'AND titre ='" + livre.getTitre() + "'AND annee ='" + livre.getAnnee() + "'AND position ='" + livre.getPosition() + "'AND volume ='" + livre.getVolume() + "'AND origine ='" + livre.getOrigine() + "'");
if(rs.next()){
exist = true;
}
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre existenceLivre" + ex);
}
return exist;
}
@Override
public ArrayList<Livre> getLivreMultipleExemplaires() {
ArrayList<Livre> livres = new ArrayList();
try {
Statement st = conn.getStatement();
ResultSet rs = st.executeQuery("SELECT * FROM livre WHERE exemplaire > 1");
while (rs.next()) {
Livre livre = new Livre(rs.getString("auteur"), rs.getString("titre"), rs.getString("position"), rs.getString("volume"), rs.getInt("exemplaire"), rs.getString("annee"), rs.getString("prix"), rs.getString("origine"));
livre.setCatégorie(cs.getById(rs.getInt("idCategorie")));
livre.setId(rs.getString("id"));
livres.add(livre);
}
rs.close();
} catch (Exception ex) {
System.err.println("Erreur livre getLivreMultipleExemplaires" + ex);
}
return livres;
}
}