/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Databases; import Beans.BeanDetails; import Beans.BeanMovie; import Beans.BeanResultat; import Helpers.EasyFile; import java.sql.*; import java.util.LinkedList; import java.util.logging.Level; import java.util.logging.Logger; public class OracleAccess { private Connection con = null; private CallableStatement csmt; private Statement smt; public OracleAccess(String db){ String driver = null; String host = null; String port = null; String user = null; String pass = null; String sid = null; String url = null; if(db.equals("CB")){ driver = EasyFile.getConfig("Configs", "oracle_driver"); host = EasyFile.getConfig("Configs", EasyFile.getConfig("Configs", "oracle_host_cb")); port = EasyFile.getConfig("Configs", "oracle_port"); user = EasyFile.getConfig("Configs", EasyFile.getConfig("Configs", "oracle_user_cb")); pass = EasyFile.getConfig("Configs", EasyFile.getConfig("Configs", "oracle_pass_cb")); sid = EasyFile.getConfig("Configs", EasyFile.getConfig("Configs", "oracle_sid_cb")); }else if(db.equals("CC1")){ driver = EasyFile.getConfig("Configs", "oracle_driver"); host = EasyFile.getConfig("Configs", EasyFile.getConfig("Configs", "oracle_host_cc1")); port = EasyFile.getConfig("Configs", "oracle_port"); user = EasyFile.getConfig("Configs", EasyFile.getConfig("Configs", "oracle_user_cc1")); pass = EasyFile.getConfig("Configs", EasyFile.getConfig("Configs", "oracle_pass_cc1")); sid = EasyFile.getConfig("Configs", EasyFile.getConfig("Configs", "oracle_sid_cc1")); } url = "jdbc:oracle:thin:@" + host + ":" + port + ":" + sid; try { Class.forName(driver); con = DriverManager.getConnection(url, user, pass); con.setAutoCommit(false); } catch (Exception ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } } public void initCallProc(String namePackage, String nameProcedure, int nbParam){ String request = "{ call " + namePackage + "." + nameProcedure + "("; for(int i=0; i<nbParam; i++){ request += (i<(nbParam-1) ? "?," : "?)}"); } try { csmt = con.prepareCall(request); } catch (SQLException ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } } public void initCallFunc(String namePackage, String nameProcedure, int nbParam){ String request = "{ ? = call " + namePackage + "." + nameProcedure + "("; for(int i=0; i<nbParam; i++){ request += (i<(nbParam-1) ? "?," : "?)}"); } try { csmt = con.prepareCall(request); } catch (SQLException ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } } public String quotes(String message){ String temp = message; temp = temp.replace("'", "''"); return temp; } private void finish(String type) { try { this.smt = this.con.createStatement(); this.smt.executeQuery(type); this.smt.close(); } catch (Exception ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } } public BeanResultat doGetListMovies(String requete) { BeanResultat beanResultat = null; try { csmt.registerOutParameter(1, Types.ARRAY, "MOVIES_T"); csmt.setString(2, requete); } catch (SQLException ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } Array retour = null; try { csmt.executeUpdate(); finish("commit"); retour = csmt.getArray(1); } catch (SQLException ex) { finish("rollback"); Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); }finally{ try { csmt.close(); } catch (SQLException ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } } try { ResultSet rs = retour.getResultSet(); if(rs != null){ beanResultat = new BeanResultat(); } while(rs.next()){ BeanMovie beanMovie = new BeanMovie(); int id = rs.getInt(1); beanMovie.setId(id); oracle.sql.STRUCT value = (oracle.sql.STRUCT)rs.getObject(2); Object[] attributes = value.getAttributes(); int idMovie = ((java.math.BigDecimal)attributes[0]).intValue(); String name = attributes[1].toString(); Blob affiche = (Blob)attributes[2]; int nbCopieDispo = ((java.math.BigDecimal)attributes[3]).intValue(); int popularite = 0; if(attributes[4] != null){ popularite = ((java.math.BigDecimal)attributes[4]).intValue(); } int frequenceProg = 0; if(attributes[5] != null){ frequenceProg = ((java.math.BigDecimal)attributes[5]).intValue(); } int perenite = 0; if(attributes[6] != null){ perenite = ((java.math.BigDecimal)attributes[6]).intValue(); } beanMovie.setNom(name); beanMovie.setAffiche(affiche); beanMovie.setId(idMovie); beanMovie.setPopularite(popularite); beanMovie.setNbCopieDispo(nbCopieDispo); beanMovie.setFrequenceProg(frequenceProg); beanMovie.setPerenite(perenite); beanResultat.add(beanMovie); } } catch (SQLException ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } return beanResultat; } public BeanDetails doGetDetails(int idMovie) { BeanDetails beanDetails = null; try { csmt.registerOutParameter(1, Types.ARRAY, "MOVIES_T_DETAILS"); csmt.setInt(2, idMovie); } catch (SQLException ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } Array retour = null; try { csmt.executeUpdate(); finish("commit"); retour = csmt.getArray(1); } catch (SQLException ex) { finish("rollback"); Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); }finally{ try { csmt.close(); } catch (SQLException ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } } try { ResultSet rs = retour.getResultSet(); if(rs != null){ beanDetails = new BeanDetails(); } while(rs.next()){ int id = rs.getInt(1); oracle.sql.STRUCT value = (oracle.sql.STRUCT)rs.getObject(2); Object[] attributes = value.getAttributes(); int v_idMovie = ((java.math.BigDecimal)attributes[0]).intValue(); java.sql.Array listActors = (java.sql.Array) attributes[1]; ResultSet resultSetActors = listActors.getResultSet(); LinkedList<String> listeActeurs = new LinkedList<String>(); while(resultSetActors.next()){ String valueResult = resultSetActors.getString(2); listeActeurs.add(valueResult); } java.sql.Array listDirectors = (java.sql.Array) attributes[2]; ResultSet resultSetDirectors = listDirectors.getResultSet(); LinkedList<String> listeDirecteurs = new LinkedList<String>(); while(resultSetDirectors.next()){ String valueResult = resultSetDirectors.getString(2); listeDirecteurs.add(valueResult); } java.util.Date released = new java.util.Date(((java.sql.Timestamp) attributes[3]).getTime()); System.out.println("test"); beanDetails.setId(idMovie); beanDetails.setListActors(listeActeurs); beanDetails.setListDirectors(listeDirecteurs); beanDetails.setReleased(released); } } catch (SQLException ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } return beanDetails; } public int doGetCount(String requeteCount) { int nbResultat = 0; try { csmt.registerOutParameter(1, Types.INTEGER); csmt.setString(2, requeteCount); } catch (SQLException ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } try { csmt.executeUpdate(); finish("commit"); nbResultat = csmt.getInt(1); } catch (SQLException ex) { finish("rollback"); Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); }finally{ try { csmt.close(); } catch (SQLException ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } } return nbResultat; } private String[] getListCriteres(LinkedList<String> criteres) { String[] listCriteres = null; if(criteres.size() > 0){ listCriteres = new String[criteres.size()]; int cpt = 0; for(String critere : criteres){ listCriteres[cpt] = critere; cpt++; } } return listCriteres; } public boolean doInsertCommande(int id, int quantite, int physique) { boolean ok = false; try { csmt.setInt(1, id); csmt.setInt(2, quantite); csmt.setInt(3, physique); } catch (SQLException ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } try { csmt.executeUpdate(); finish("commit"); ok = true; } catch (SQLException ex) { finish("rollback"); Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); }finally{ try { csmt.close(); } catch (SQLException ex) { Logger.getLogger(OracleAccess.class.getName()).log(Level.SEVERE, null, ex); } } return ok; } }