Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Sources;
- import java.sql.*;
- import java.util.Vector;
- /**
- * TRABAJO PRACTICO BASES DE DATOS 2011
- * @author Alvarez Matias.
- * @author Bernal Matias.
- * @author Montanari Gisela.
- * @version 8.0
- */
- public class DataBasePosgreSQL {
- private static String driver = "org.postgresql.Driver";
- private static String url = "jdbc:postgresql://localhost:5432/Proyecto";
- private static String username = "postgres";
- private static String password = "root";
- static Connection connection;
- /**
- * Constructor de la clase
- */
- public DataBasePosgreSQL(){
- try {
- Class.forName(driver);
- connection = DriverManager.getConnection(url, username, password);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static Statement NuevoEstado() throws SQLException{
- try{
- Statement statement = connection.createStatement();
- return statement;
- } catch (Exception e) {
- throw new SQLException();
- }
- }
- /**
- * Metodo que retorna true su un genero ya esta en la tabla genero de la base de datos
- * @param nombreGenero: es el nombre del genero a ver si existe o no
- */
- public boolean existGenero(String nombreGenero) throws SQLException {
- try {
- Statement statement = NuevoEstado();
- String query = "SELECT * FROM plarpebu.genero WHERE '"+nombreGenero+"' IN (SELECT nombreGenero from plarpebu.genero);";
- ResultSet resultSet;
- resultSet = statement.executeQuery(query);
- if (resultSet.next()){
- return true;
- }else{
- return false;
- }
- } catch (Exception e) {
- throw new SQLException();
- }
- }
- /**
- * Metodo que retorna true su un orden ya esta en la tabla orden de la base de datos
- * @param orden: es el nombre del genero a ver si existe o no
- */
- public boolean existOrden(String orden) throws SQLException {
- try {
- Statement statement = NuevoEstado();
- String query = "SELECT * FROM plarpebu.orden WHERE '"+orden+"' IN (SELECT num_orden from plarpebu.orden);";
- ResultSet resultSet;
- resultSet = statement.executeQuery(query);
- if (resultSet.next()){
- return true;
- }else{
- return false;
- }
- }catch (Exception e) {
- throw new SQLException();
- }
- }
- /**
- * Metodo que inserta un usuario nuevo en la tabla usuario de la base de datos
- * @param nombre: es el nombre del usario nuevo a crear.
- */
- public void insertUser(String nombre) throws SQLException {
- try {
- connection.setAutoCommit(false);
- Statement statement = NuevoEstado();
- String idperfilDefault = newPerfilDefault(nombre);
- String query = "INSERT INTO plarpebu.usuario(nombreUsuario,id_perfil) VALUES ('"+nombre+"',"+idperfilDefault+");";
- statement.executeUpdate(query);
- String id_usuario = lastUserID();
- query = "UPDATE plarpebu.perfil SET id_usuario = "+id_usuario+" WHERE id_perfil="+idperfilDefault+";";
- statement.executeUpdate(query);
- connection.commit();
- } catch (Exception e) {
- connection.rollback();
- throw new SQLException();
- }
- }
- /**
- * Metodo que inserta un perfil nuevo por defecto en la tabla perfil de la base de datos
- * @param id_usuario
- * @param nombre: es el nombre del usario al que se le crea un perfil nuevo por defecto.
- */
- private String newPerfilDefault(String nombre) throws SQLException {
- try {
- connection.setAutoCommit(false);
- Statement statement = NuevoEstado();
- String idRaizDefault = newRaizDefault(nombre);
- String query = "INSERT INTO plarpebu.perfil (nombrePerfil,id_ecualizacionDefect,path_skin,id_carpetaRaiz) VALUES ('Default_"+nombre+"',1,'Default',"+idRaizDefault+");";
- statement.executeUpdate(query);
- query = "SELECT id_perfil FROM plarpebu.perfil ORDER BY id_perfil DESC;";
- ResultSet resultSet;
- String id = null;
- resultSet = statement.executeQuery(query);
- if(resultSet.next()){
- id = resultSet.getString(1);
- }
- connection.commit(); //hasta aca todo bien cuando hace el commit lanza una exepcion
- return (id);
- } catch (Exception e) {
- connection.rollback();
- throw new SQLException();
- }
- }
- /**
- * Metodo que inserta una nueva carpeta raiz en la tabla raiz de la base de datos
- * Para el nuevo perfil por defecto en la tabla perfil de la base de datos.
- * @param nombre: es el nombre del usario al que se le crea un perfil nuevo por defecto y una carpeta raiz por defecto.
- */
- private String newRaizDefault(String nombre) throws SQLException {
- try{
- connection.setAutoCommit(false);
- Statement statement = NuevoEstado();
- String query = "INSERT INTO plarpebu.carpeta (nombreCarpeta,id_carpetaPadre) VALUES ('raiz_"+nombre+"',null);";
- statement.executeUpdate(query);
- String id_carpeta = ultimaCarpetaInsertada();
- query = "INSERT INTO plarpebu.raiz VALUES ('"+id_carpeta+"');";
- statement.executeUpdate(query);
- connection.commit();
- return id_carpeta;
- } catch (Exception e) {
- connection.rollback();
- throw new SQLException();
- }
- }
- /**
- * Metodo que devuelve el id de la ultima carpeta insertada en la tabla carpetas de la base de datos.
- */
- private String ultimaCarpetaInsertada() throws SQLException {
- try {
- Statement statement = NuevoEstado();
- String query = "SELECT id_carpeta FROM plarpebu.carpeta ORDER BY id_carpeta DESC;";
- ResultSet resultSet;
- String id = null;
- resultSet = statement.executeQuery(query);
- if(resultSet.next()){
- id = resultSet.getString(1);
- }
- return (id);
- } catch (Exception e) {
- throw new SQLException();
- }
- }
- /**
- * Metodo que devuelve un vector con todos los usuarios de la tabla usuario de la base de datos
- */
- public Vector<User> getUsers() throws SQLException{
- try {
- Statement statement = NuevoEstado();
- String query = "SELECT * FROM plarpebu.USUARIO;";
- Vector<User> user = new Vector<User>();
- ResultSet resultSet;
- resultSet = statement.executeQuery(query);
- while (resultSet.next()){
- User userAc = new User();
- userAc.setIdUser(resultSet.getString(1));
- userAc.setName(resultSet.getString(2));
- userAc.setPerfilDefec(resultSet.getString(3));
- user.add(userAc);
- }
- return user;
- } catch (Exception e) {
- throw new SQLException();
- }
- }
- /**
- * Metodo que devuelve el id_usuario del ultimo usuario insertado en la tabla usuario de la base de datos
- */
- public String lastUserID() throws SQLException{
- try {
- Statement statement = NuevoEstado();
- String query = "SELECT id_usuario FROM plarpebu.usuario ORDER BY id_usuario DESC;";
- ResultSet resultSet;
- resultSet = statement.executeQuery(query);
- if(resultSet.next()){
- String id = resultSet.getString(1);
- return (id);
- }else{
- return("0");
- }
- } catch (Exception e) {
- throw new SQLException();
- }
- }
- /**
- * Metodo que devuelve un vector los id_listas de las listas de la tabla lista de la base de datos
- * Cuyo id_carpeta sea igual a la del parametro.
- * @param idCarpeta: id de la carpeta a la cual se quiere saber las listas que contine.
- */
- private Vector<String> listas(String idCarpeta) throws SQLException{
- try {
- Statement statement = NuevoEstado();
- String query = "SELECT * FROM plarpebu.lista l WHERE l.id_carpeta="+idCarpeta+";";
- Vector<String> list = new Vector<String>();
- ResultSet resultSet;
- resultSet = statement.executeQuery(query);
- while (resultSet.next()){
- list.add(resultSet.getString(1));
- }
- return list;
- } catch (Exception e) {
- throw new SQLException();
- }
- }
- /**
- * Metodo que devuelve un vector los nombre e id_listas de las listas de la tabla lista de la base de datos
- * Cuyo id_carpeta sea igual a la del parametro.
- * @param idCarpeta: id de la carpeta a la cual se quiere saber las listas que contine.
- */
- public Vector<String> getList(String idCarpeta) throws SQLException {
- try {
- Statement statement = NuevoEstado();
- String query = "SELECT * FROM plarpebu.lista l WHERE l.id_carpeta="+idCarpeta+";";
- Vector<String> list = new Vector<String>();
- ResultSet resultSet;
- resultSet = statement.executeQuery(query);
- while (resultSet.next()){
- String listAc = new String();
- listAc="NOMBRE: "+resultSet.getString(2)+"- (ID LISTA: "+resultSet.getString(1)+")";
- list.add(listAc);
- }
- return list;
- } catch (Exception e) {
- throw new SQLException();
- }
- }
- /**
- * Metodo que inserta un nuevo tema en una lista de reproduccion.
- * @param idLista: id de la lista a la cual se quiere insertar el tema.
- * @param pathTema: direccion en donde se encuentra el tema.
- * @param titulo: titulo del tema a insertar.
- * @param artista: artista del tema a insertar.
- * @param album: album del tema a insertar.
- * @param anio: anio del tema a insertar.
- * @param nombreGenero: nombre del genero del tema a insertar.
- * @param duracion: duracion del tema a insertar.
- */
- public void insertTema(String idLista, String pathTema,String titulo, String artista, String album, String anio, String nombreGenero, String duracion)throws SQLException {
- try {
- connection.setAutoCommit(false);
- Statement statement = NuevoEstado();
- String query;
- if (!existGenero(nombreGenero)){
- query = "INSERT INTO plarpebu.genero VALUES ('"+nombreGenero+"');";
- statement.executeUpdate(query);
- }
- query = "INSERT INTO plarpebu.tema VALUES ('"+pathTema+"',"+anio+",'"+titulo+"','"+artista+"','"+album+"','"+nombreGenero+"','"+duracion+"');";
- statement.executeUpdate(query);
- String orden = String.valueOf(ultimoOrden(idLista)+1);
- if (!existOrden(orden)){
- query = "INSERT INTO plarpebu.orden VALUES ("+orden+");";
- statement.executeUpdate(query);
- }
- query = "INSERT INTO plarpebu.se_repr VALUES ("+orden+","+idLista+",null,'"+pathTema+"');";
- statement.executeUpdate(query);
- connection.commit();
- } catch (Exception e) {
- connection.rollback();
- throw new SQLException();
- }
- }
- /**
- * Metodo que devuelve el ultimo orden de la lista de reproduccion
- *
- */
- private int ultimoOrden(String idLista) throws SQLException {
- try {
- Statement statement = NuevoEstado();
- String query = "SELECT num_orden FROM plarpebu.se_repr WHERE id_lista = "+idLista+" ORDER BY num_orden DESC;";
- ResultSet resultSet;
- resultSet = statement.executeQuery(query);
- if(resultSet.next()){
- String id = resultSet.getString(1);
- return (Integer.parseInt(id));
- }else{
- return(0);
- }
- } catch (Exception e) {
- throw new SQLException();
- }
- }
- /**
- * Metodo que elimina un tema de una lista de reproduccion.
- * @param userID: id del usuario que quiere eliminar el tema de la lista.
- * @param idLista: id de la lista en donde se encuentra el tema.
- * @param pathTema: direccion donde se encuentra el tema a eliminar.
- */
- public void eliminarTema(String userID, String idLista, String pathTema)throws SQLException {
- try {
- connection.setAutoCommit(false);
- Statement statement = NuevoEstado();
- String query = "DELETE FROM plarpebu.se_repr WHERE path_tema='"+pathTema+"' AND id_lista='"+idLista+"';";
- statement.executeUpdate(query);
- connection.commit();
- } catch (Exception e) {
- connection.rollback();
- throw new SQLException();
- }
- }
- /**
- * Metodo que retorna true si un usuario es dueño de una carpeta pasada como parametro.
- * @param userID: id del usuario.
- * @param idCarpeta: id de la carpeta.
- */
- public boolean dueno(String userID, String idCarpeta) throws SQLException{
- Vector<String> carpetas = carpetasDe(userID);
- if (carpetas.contains(idCarpeta)){
- return true;
- }else{
- return false;
- }
- }
- /**
- * Metodo que retorna un vector con los id de carpetas de todas las carpetas de un determinado usuario.
- * @param userID: id del usuario.
- */
- private Vector<String> carpetasDe(String userID) throws SQLException {
- try {
- Statement statement = NuevoEstado();
- String query = "SELECT id_carpetaraiz FROM plarpebu.perfil p WHERE p.id_usuario="+userID+";";
- Vector<String> carpetasRaiz = new Vector<String>();
- ResultSet resultSet;
- resultSet = statement.executeQuery(query);
- while (resultSet.next()){
- String root = new String();
- root = resultSet.getString(1);
- carpetasRaiz.add(root);
- }
- Vector<String> carpetas = new Vector<String> (carpetasRaiz);
- int i=0;
- while (i<carpetasRaiz.size()){
- int index=0;
- Vector<String> subcarpetas = getCarpeta(carpetasRaiz.elementAt(i));
- while (index<subcarpetas.size()){
- carpetas.add(subcarpetas.elementAt(index));
- index++;
- }
- i++;
- }
- return carpetas;
- }catch (Exception e) {
- throw new SQLException();
- }
- }
- /**
- * Metodo que retorna un vector con los id de carpetas de todas las carpetas de un determinado usuario.
- * @param userID: id del usuario.
- */
- private Vector<String> getCarpeta(String idCarpeta)throws SQLException {
- try {
- Statement statement = NuevoEstado();
- Vector<String> carpetas = new Vector<String>();
- ResultSet resultSet;
- String query = "SELECT id_carpeta FROM plarpebu.carpeta c WHERE c.id_carpetapadre="+idCarpeta+";";
- resultSet = statement.executeQuery(query);
- while (resultSet.next()){
- String root = new String();
- root = resultSet.getString(1);
- carpetas.add(root);
- Vector<String> subcarpetas = getCarpeta(root);
- int index=0;
- while (index<subcarpetas.size()){
- carpetas.add(subcarpetas.elementAt(index));
- index++;
- }
- }
- return carpetas;
- }catch (Exception e) {
- throw new SQLException();
- }
- }
- /**
- * Metodo que retorna true si un usuario es dueño de una lista pasada como parametro.
- * @param userID: id del usuario.
- * @param idLista: id de la lista.
- */
- public boolean duenoLista(String userID, String idLista) throws SQLException{
- Vector<String> listas = listasDe(userID);
- if (listas.contains(idLista)){
- return true;
- }else{
- return false;
- }
- }
- /**
- * Metodo que retorna un vector con los id de listas de todas las listas de un determinado usuario.
- * @param userID: id del usuario.
- */
- private Vector<String> listasDe(String userID) throws SQLException {
- try {
- Vector<String> carpetas = carpetasDe(userID);
- Vector<String> listas = new Vector<String>();
- int index=0;
- while (index<carpetas.size()){
- listas.addAll(listas(carpetas.elementAt(index)));
- index++;
- }
- return listas;
- }catch (Exception e) {
- throw new SQLException();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement