Advertisement
Guest User

Untitled

a guest
Sep 18th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 14.25 KB | None | 0 0
  1. package Sources;
  2. import java.sql.*;
  3. import java.util.Vector;
  4.  
  5. /**
  6. * TRABAJO PRACTICO BASES DE DATOS 2011
  7. * @author Alvarez Matias.
  8. * @author Bernal Matias.
  9. * @author Montanari Gisela.
  10. * @version 8.0
  11. */
  12.  
  13. public class DataBasePosgreSQL {
  14.  
  15.     private static String driver = "org.postgresql.Driver";
  16.     private static String url = "jdbc:postgresql://localhost:5432/Proyecto";
  17.     private static String username = "postgres";
  18.     private static String password = "root";
  19.     static Connection connection;
  20.  
  21.     /**
  22.     * Constructor de la clase
  23.     */
  24.     public DataBasePosgreSQL(){
  25.         try {
  26.             Class.forName(driver);
  27.             connection = DriverManager.getConnection(url, username, password);
  28.         } catch (Exception e) {
  29.             e.printStackTrace();
  30.         }
  31.     }
  32.  
  33.     public static Statement NuevoEstado() throws SQLException{
  34.         try{
  35.             Statement statement = connection.createStatement();
  36.             return statement;
  37.         } catch (Exception e) {
  38.             throw new SQLException();
  39.         }
  40.     }
  41.    
  42.     /**
  43.     * Metodo que retorna true su un genero ya esta en la tabla genero de la base de datos
  44.     * @param nombreGenero: es el nombre del genero a ver si existe o no
  45.     */
  46.     public boolean existGenero(String nombreGenero) throws SQLException {
  47.         try {  
  48.             Statement statement = NuevoEstado();
  49.             String query = "SELECT * FROM plarpebu.genero WHERE '"+nombreGenero+"' IN (SELECT nombreGenero from plarpebu.genero);";
  50.             ResultSet resultSet;
  51.             resultSet = statement.executeQuery(query);
  52.             if (resultSet.next()){
  53.                 return true;
  54.             }else{
  55.                 return false;
  56.             }
  57.         } catch (Exception e) {
  58.                 throw new SQLException();
  59.         }
  60.     }
  61.    
  62.     /**
  63.     * Metodo que retorna true su un orden ya esta en la tabla orden de la base de datos
  64.     * @param orden: es el nombre del genero a ver si existe o no
  65.     */
  66.     public boolean existOrden(String orden) throws SQLException {
  67.         try {
  68.             Statement statement = NuevoEstado();
  69.             String query = "SELECT * FROM plarpebu.orden WHERE '"+orden+"' IN (SELECT num_orden from plarpebu.orden);";
  70.             ResultSet resultSet;
  71.             resultSet = statement.executeQuery(query);
  72.             if (resultSet.next()){
  73.                 return true;
  74.             }else{
  75.                 return false;
  76.             }
  77.         }catch (Exception e) {
  78.             throw new SQLException();
  79.         }
  80.     }
  81.  
  82.     /**
  83.     * Metodo que inserta un usuario nuevo en la tabla usuario de la base de datos
  84.     * @param nombre: es el nombre del usario nuevo a crear.
  85.     */
  86.     public void insertUser(String nombre) throws SQLException {
  87.         try {
  88.             connection.setAutoCommit(false);
  89.             Statement statement = NuevoEstado();
  90.             String idperfilDefault = newPerfilDefault(nombre);
  91.             String query = "INSERT INTO plarpebu.usuario(nombreUsuario,id_perfil) VALUES ('"+nombre+"',"+idperfilDefault+");";
  92.             statement.executeUpdate(query);
  93.             String id_usuario = lastUserID();
  94.             query = "UPDATE plarpebu.perfil SET id_usuario = "+id_usuario+" WHERE id_perfil="+idperfilDefault+";";
  95.             statement.executeUpdate(query);
  96.             connection.commit();
  97.         } catch (Exception e) {
  98.             connection.rollback();
  99.             throw new SQLException();
  100.         }
  101.     }
  102.  
  103.  
  104.     /**
  105.     * Metodo que inserta un perfil nuevo por defecto en la tabla perfil de la base de datos
  106.      * @param id_usuario
  107.     * @param nombre: es el nombre del usario al que se le crea un perfil nuevo por defecto.
  108.     */
  109.     private String newPerfilDefault(String nombre) throws SQLException {
  110.         try {
  111.             connection.setAutoCommit(false);
  112.             Statement statement = NuevoEstado();
  113.             String idRaizDefault = newRaizDefault(nombre);
  114.             String query = "INSERT INTO plarpebu.perfil (nombrePerfil,id_ecualizacionDefect,path_skin,id_carpetaRaiz) VALUES ('Default_"+nombre+"',1,'Default',"+idRaizDefault+");";
  115.             statement.executeUpdate(query);
  116.             query = "SELECT id_perfil FROM plarpebu.perfil ORDER BY id_perfil DESC;";
  117.             ResultSet resultSet;
  118.             String id = null;
  119.             resultSet = statement.executeQuery(query);
  120.             if(resultSet.next()){
  121.                 id = resultSet.getString(1);
  122.             }
  123.             connection.commit(); //hasta aca todo bien cuando hace el commit lanza una exepcion
  124.             return (id);
  125.         } catch (Exception e) {
  126.             connection.rollback();
  127.             throw new SQLException();
  128.         }
  129.     }
  130.  
  131.     /**
  132.     * Metodo que inserta una nueva carpeta raiz en la tabla raiz de la base de datos
  133.     * Para el nuevo perfil por defecto en la tabla perfil de la base de datos.
  134.     * @param nombre: es el nombre del usario al que se le crea un perfil nuevo por defecto y una carpeta raiz por defecto.
  135.     */
  136.     private String newRaizDefault(String nombre) throws SQLException {
  137.         try{
  138.             connection.setAutoCommit(false);
  139.             Statement statement = NuevoEstado();
  140.             String query = "INSERT INTO plarpebu.carpeta (nombreCarpeta,id_carpetaPadre) VALUES ('raiz_"+nombre+"',null);";
  141.             statement.executeUpdate(query);
  142.             String id_carpeta = ultimaCarpetaInsertada();
  143.             query = "INSERT INTO plarpebu.raiz VALUES ('"+id_carpeta+"');";
  144.             statement.executeUpdate(query);
  145.             connection.commit();
  146.             return id_carpeta;
  147.         } catch (Exception e) {
  148.             connection.rollback();
  149.             throw new SQLException();
  150.         }
  151.        
  152.     }
  153.    
  154.     /**
  155.     * Metodo que devuelve el id de la ultima carpeta insertada en la tabla carpetas de la base de datos.
  156.     */
  157.     private String ultimaCarpetaInsertada() throws SQLException {
  158.         try {
  159.             Statement statement = NuevoEstado();
  160.             String query = "SELECT id_carpeta FROM plarpebu.carpeta ORDER BY id_carpeta DESC;";
  161.             ResultSet resultSet;
  162.             String id = null;
  163.             resultSet = statement.executeQuery(query);
  164.             if(resultSet.next()){
  165.                 id = resultSet.getString(1);
  166.             }
  167.             return (id);
  168.         } catch (Exception e) {
  169.             throw new SQLException();
  170.         }
  171.     }
  172.    
  173.     /**
  174.     * Metodo que devuelve un vector con todos los usuarios de la tabla usuario de la base de datos
  175.     */
  176.     public Vector<User> getUsers() throws SQLException{
  177.         try {
  178.             Statement statement = NuevoEstado();
  179.             String query = "SELECT * FROM plarpebu.USUARIO;";
  180.             Vector<User> user = new Vector<User>();
  181.             ResultSet resultSet;
  182.             resultSet = statement.executeQuery(query);
  183.             while (resultSet.next()){
  184.                 User userAc = new User();
  185.                 userAc.setIdUser(resultSet.getString(1));
  186.                 userAc.setName(resultSet.getString(2));
  187.                 userAc.setPerfilDefec(resultSet.getString(3));
  188.                 user.add(userAc);
  189.             }
  190.             return user;
  191.         } catch (Exception e) {
  192.             throw new SQLException();
  193.         }
  194.  
  195.     }
  196.    
  197.     /**
  198.     * Metodo que devuelve el id_usuario del ultimo usuario insertado en la tabla usuario de la base de datos
  199.     */
  200.     public String lastUserID() throws SQLException{
  201.         try {
  202.             Statement statement = NuevoEstado();
  203.             String query = "SELECT id_usuario FROM plarpebu.usuario ORDER BY id_usuario DESC;";
  204.             ResultSet resultSet;
  205.             resultSet = statement.executeQuery(query);
  206.             if(resultSet.next()){
  207.                 String id = resultSet.getString(1);
  208.                 return (id);
  209.             }else{
  210.                 return("0");
  211.             }
  212.         } catch (Exception e) {
  213.             throw new SQLException();
  214.         }
  215.     }
  216.  
  217.     /**
  218.     * Metodo que devuelve un vector los id_listas de las listas de la tabla lista de la base de datos
  219.     * Cuyo id_carpeta sea igual a la del parametro.
  220.     * @param idCarpeta: id de la carpeta a la cual se quiere saber las listas que contine.
  221.     */
  222.     private Vector<String> listas(String idCarpeta) throws SQLException{
  223.         try {
  224.             Statement statement = NuevoEstado();
  225.             String query = "SELECT * FROM plarpebu.lista l WHERE l.id_carpeta="+idCarpeta+";";
  226.             Vector<String> list = new Vector<String>();
  227.             ResultSet resultSet;
  228.             resultSet = statement.executeQuery(query);
  229.             while (resultSet.next()){
  230.                 list.add(resultSet.getString(1));
  231.             }
  232.             return list;
  233.         } catch (Exception e) {
  234.             throw new SQLException();
  235.         }
  236.     }
  237.     /**
  238.     * Metodo que devuelve un vector los nombre e id_listas de las listas de la tabla lista de la base de datos
  239.     * Cuyo id_carpeta sea igual a la del parametro.
  240.     * @param idCarpeta: id de la carpeta a la cual se quiere saber las listas que contine.
  241.     */
  242.     public Vector<String> getList(String idCarpeta) throws SQLException {
  243.         try {
  244.             Statement statement = NuevoEstado();
  245.             String query = "SELECT * FROM plarpebu.lista l WHERE l.id_carpeta="+idCarpeta+";";
  246.             Vector<String> list = new Vector<String>();
  247.             ResultSet resultSet;
  248.             resultSet = statement.executeQuery(query);
  249.             while (resultSet.next()){
  250.                 String listAc = new String();
  251.                 listAc="NOMBRE: "+resultSet.getString(2)+"- (ID LISTA: "+resultSet.getString(1)+")";
  252.                 list.add(listAc);
  253.             }
  254.             return list;
  255.         } catch (Exception e) {
  256.             throw new SQLException();
  257.         }
  258.     }
  259.  
  260.     /**
  261.     * Metodo que inserta un nuevo tema en una lista de reproduccion.
  262.     * @param idLista: id de la lista a la cual se quiere insertar el tema.
  263.     * @param pathTema: direccion en donde se encuentra el tema.
  264.     * @param titulo: titulo del tema a insertar.
  265.     * @param artista: artista del tema a insertar.
  266.     * @param album: album del tema a insertar.
  267.     * @param anio: anio del tema a insertar.
  268.     * @param nombreGenero: nombre del genero del tema a insertar.
  269.     * @param duracion: duracion del tema a insertar.
  270.     */
  271.     public void insertTema(String idLista, String pathTema,String titulo, String artista, String album, String anio, String nombreGenero, String duracion)throws SQLException {
  272.         try {
  273.             connection.setAutoCommit(false);
  274.             Statement statement = NuevoEstado();
  275.             String query;
  276.             if (!existGenero(nombreGenero)){
  277.                 query = "INSERT INTO plarpebu.genero VALUES ('"+nombreGenero+"');";
  278.                 statement.executeUpdate(query);
  279.             }
  280.             query = "INSERT INTO plarpebu.tema VALUES ('"+pathTema+"',"+anio+",'"+titulo+"','"+artista+"','"+album+"','"+nombreGenero+"','"+duracion+"');";
  281.             statement.executeUpdate(query);
  282.             String orden = String.valueOf(ultimoOrden(idLista)+1);
  283.             if (!existOrden(orden)){
  284.                 query = "INSERT INTO plarpebu.orden VALUES ("+orden+");";
  285.                 statement.executeUpdate(query);
  286.             }
  287.             query = "INSERT INTO plarpebu.se_repr VALUES ("+orden+","+idLista+",null,'"+pathTema+"');";
  288.             statement.executeUpdate(query);
  289.             connection.commit();
  290.         } catch (Exception e) {
  291.             connection.rollback();
  292.             throw new SQLException();  
  293.         }
  294.     }
  295.  
  296.     /**
  297.     * Metodo que devuelve el ultimo orden de la lista de reproduccion
  298.     *
  299.     */
  300.     private int ultimoOrden(String idLista) throws SQLException {
  301.         try {
  302.             Statement statement = NuevoEstado();
  303.             String query = "SELECT num_orden FROM plarpebu.se_repr WHERE id_lista = "+idLista+" ORDER BY num_orden DESC;";
  304.             ResultSet resultSet;
  305.             resultSet = statement.executeQuery(query);
  306.             if(resultSet.next()){
  307.                 String id = resultSet.getString(1);
  308.                 return (Integer.parseInt(id));
  309.             }else{
  310.                 return(0);
  311.             }
  312.         } catch (Exception e) {
  313.             throw new SQLException();
  314.         }
  315.     }
  316.  
  317.     /**
  318.     * Metodo que elimina un tema de una lista de reproduccion.
  319.     * @param userID: id del usuario que quiere eliminar el tema de la lista.
  320.     * @param idLista: id de la lista en donde se encuentra el tema.
  321.     * @param pathTema: direccion donde se encuentra el tema a eliminar.
  322.     */
  323.  
  324.     public void eliminarTema(String userID, String idLista, String pathTema)throws SQLException {
  325.         try {
  326.             connection.setAutoCommit(false);
  327.             Statement statement = NuevoEstado();
  328.             String query = "DELETE FROM plarpebu.se_repr WHERE path_tema='"+pathTema+"' AND id_lista='"+idLista+"';";
  329.             statement.executeUpdate(query);
  330.             connection.commit();
  331.         } catch (Exception e) {
  332.             connection.rollback();
  333.             throw new SQLException();
  334.         }
  335.     }
  336.  
  337.     /**
  338.     * Metodo que retorna true si un usuario es dueño de una carpeta pasada como parametro.
  339.     * @param userID: id del usuario.
  340.     * @param idCarpeta: id de la carpeta.
  341.     */
  342.     public boolean dueno(String userID, String idCarpeta) throws SQLException{
  343.         Vector<String> carpetas = carpetasDe(userID);
  344.         if (carpetas.contains(idCarpeta)){
  345.             return true;
  346.         }else{
  347.             return false;
  348.         }
  349.     }
  350.    
  351.     /**
  352.     * Metodo que retorna un vector con los id de carpetas de todas las carpetas de un determinado usuario.
  353.     * @param userID: id del usuario.
  354.     */
  355.     private Vector<String> carpetasDe(String userID) throws SQLException {
  356.         try {
  357.             Statement statement = NuevoEstado();
  358.             String query = "SELECT id_carpetaraiz FROM plarpebu.perfil p WHERE p.id_usuario="+userID+";";
  359.             Vector<String> carpetasRaiz = new Vector<String>();
  360.             ResultSet resultSet;
  361.             resultSet = statement.executeQuery(query);
  362.             while (resultSet.next()){
  363.                 String root = new String();
  364.                 root = resultSet.getString(1);
  365.                 carpetasRaiz.add(root);
  366.             }
  367.             Vector<String> carpetas = new Vector<String> (carpetasRaiz);
  368.             int i=0;
  369.             while (i<carpetasRaiz.size()){
  370.                 int index=0;
  371.                 Vector<String> subcarpetas = getCarpeta(carpetasRaiz.elementAt(i));
  372.                 while (index<subcarpetas.size()){
  373.                     carpetas.add(subcarpetas.elementAt(index));
  374.                     index++;
  375.                 }
  376.                 i++;
  377.             }
  378.             return carpetas;
  379.         }catch (Exception e) {
  380.             throw new SQLException();
  381.         }
  382.     }
  383.  
  384.     /**
  385.     * Metodo que retorna un vector con los id de carpetas de todas las carpetas de un determinado usuario.
  386.     * @param userID: id del usuario.
  387.     */
  388.     private Vector<String> getCarpeta(String idCarpeta)throws SQLException {
  389.         try {
  390.             Statement statement = NuevoEstado();
  391.             Vector<String> carpetas = new Vector<String>();
  392.             ResultSet resultSet;
  393.             String query = "SELECT id_carpeta FROM plarpebu.carpeta c WHERE c.id_carpetapadre="+idCarpeta+";";
  394.             resultSet = statement.executeQuery(query);
  395.             while (resultSet.next()){
  396.                 String root = new String();
  397.                 root = resultSet.getString(1);
  398.                 carpetas.add(root);
  399.                 Vector<String> subcarpetas = getCarpeta(root);
  400.                 int index=0;
  401.                 while (index<subcarpetas.size()){
  402.                     carpetas.add(subcarpetas.elementAt(index));
  403.                     index++;
  404.                 }
  405.             }
  406.             return carpetas;
  407.         }catch (Exception e) {
  408.             throw new SQLException();
  409.         }
  410.     }
  411.  
  412.     /**
  413.     * Metodo que retorna true si un usuario es dueño de una lista pasada como parametro.
  414.     * @param userID: id del usuario.
  415.     * @param idLista: id de la lista.
  416.     */
  417.     public boolean duenoLista(String userID, String idLista) throws SQLException{
  418.         Vector<String> listas = listasDe(userID);
  419.         if (listas.contains(idLista)){
  420.             return true;
  421.         }else{
  422.             return false;
  423.         }
  424.     }
  425.    
  426.     /**
  427.     * Metodo que retorna un vector con los id de listas de todas las listas de un determinado usuario.
  428.     * @param userID: id del usuario.
  429.     */
  430.     private Vector<String> listasDe(String userID) throws SQLException {
  431.         try {
  432.             Vector<String> carpetas = carpetasDe(userID);
  433.             Vector<String> listas = new Vector<String>();
  434.             int index=0;
  435.             while (index<carpetas.size()){
  436.                 listas.addAll(listas(carpetas.elementAt(index)));
  437.                 index++;
  438.             }
  439.             return listas;
  440.         }catch (Exception e) {
  441.             throw new SQLException();
  442.         }
  443.     }
  444. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement