From 9c478286b51e4b1b33ee828000833a963f4a9bf6 Mon Sep 17 00:00:00 2001
From: JotaJota96 <jjap96@gmail.com>
Date: Wed, 18 Sep 2019 15:32:52 -0300
Subject: [PATCH] Los datos de prueba apenas se cargan en BDD
---
.../src/Logica/Clases/Canal.java | 10 ++
.../src/Logica/Clases/Comentario.java | 11 +-
.../src/Logica/Clases/Persona.java | 2 +-
.../src/Logica/Clases/Usuario.java | 13 +-
.../src/Logica/Clases/Video.java | 15 +-
.../src/Logica/Controladores/CAdmin.java | 137 +++++++++++++-----
.../src/Presentacion/DatosDePrueba.java | 36 ++++-
.../src/Presentacion/Pryevas.java | 28 +++-
8 files changed, 199 insertions(+), 53 deletions(-)
diff --git a/UyTube_aplicacion/src/Logica/Clases/Canal.java b/UyTube_aplicacion/src/Logica/Clases/Canal.java
index 3d5b207..73843e2 100644
--- a/UyTube_aplicacion/src/Logica/Clases/Canal.java
+++ b/UyTube_aplicacion/src/Logica/Clases/Canal.java
@@ -137,6 +137,11 @@ public class Canal implements Serializable {
public void agregarComentarioAVideo(int id, DtComentario comentario, Usuario usuario) {
if (this.misVideos.containsKey(id)) {
this.misVideos.get(id).agregarComentario(comentario, usuario);
+ try {
+ new VideoJpaController().edit(this.misVideos.get(id));
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage());
+ }
} else {
throw new RuntimeException("El video no pertenece al canal");
}
@@ -251,6 +256,11 @@ public class Canal implements Serializable {
public void agregarVideoALista(int id, Video video) {
if (this.misListas.containsKey(id)) {
this.misListas.get(id).agregarVideoA(video);
+ try {
+ new ListaDeReproduccionJpaController().edit(this.misListas.get(id));
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage());
+ }
} else {
throw new RuntimeException("La lista no pertenece al canal");
}
diff --git a/UyTube_aplicacion/src/Logica/Clases/Comentario.java b/UyTube_aplicacion/src/Logica/Clases/Comentario.java
index e20f3ff..d4f13cf 100644
--- a/UyTube_aplicacion/src/Logica/Clases/Comentario.java
+++ b/UyTube_aplicacion/src/Logica/Clases/Comentario.java
@@ -1,5 +1,6 @@
package Logica.Clases;
+import JPAControllerClasses.ComentarioJpaController;
import Logica.DataType.DtComentario;
import java.io.Serializable;
import java.sql.Date;
@@ -13,6 +14,7 @@ import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@@ -36,7 +38,7 @@ public class Comentario implements Serializable {
@Column(name = "nivel")
private int nivelSubComentario;
- @OneToOne(cascade = CascadeType.REFRESH)
+ @ManyToOne()
@JoinColumn(name = "nick_usuario")
private Usuario usr;
@@ -82,6 +84,10 @@ public class Comentario implements Serializable {
return usr;
}
+ public void setUsr(Usuario usr) {
+ this.usr = usr;
+ }
+
@Override
public String toString() {
return "Comentario{" + "id=" + id + ", fecha=" + fecha + ", texto=" + texto + ", nivelSubComentario=" + nivelSubComentario + '}';
@@ -100,6 +106,9 @@ public class Comentario implements Serializable {
dtC.getTexto(),
this.nivelSubComentario + 1,
usr);
+ // crea la tupla en la base de datos
+ // asi se genera el ID y se puede agregar al Map
+ new ComentarioJpaController().create(com);
this.misComentario.add(com);
return true;
} else {
diff --git a/UyTube_aplicacion/src/Logica/Clases/Persona.java b/UyTube_aplicacion/src/Logica/Clases/Persona.java
index f3dd8d4..599c6d0 100644
--- a/UyTube_aplicacion/src/Logica/Clases/Persona.java
+++ b/UyTube_aplicacion/src/Logica/Clases/Persona.java
@@ -11,7 +11,7 @@ import javax.persistence.InheritanceType;
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class Persona implements Serializable {
@Id
- private Integer id;
+ private int id;
@Column(name = "nombre")
private String nombre;
diff --git a/UyTube_aplicacion/src/Logica/Clases/Usuario.java b/UyTube_aplicacion/src/Logica/Clases/Usuario.java
index 1ace7f4..7234378 100644
--- a/UyTube_aplicacion/src/Logica/Clases/Usuario.java
+++ b/UyTube_aplicacion/src/Logica/Clases/Usuario.java
@@ -158,8 +158,12 @@ public class Usuario extends Persona{
if(DtValoracion == null){
throw new RuntimeException("La valoracion no puede ser null");
}
-
this.MiCanal.agregarListaParticular(DtValoracion);
+ try {
+ new CanalJpaController().edit(this.MiCanal);
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage());
+ }
}
public void agregarModificarValoracionDeVideo(int idVideo, DtValoracion DtValoracion, Usuario Usu){
@@ -209,8 +213,12 @@ public class Usuario extends Persona{
if(DtVideo == null){
throw new RuntimeException("El video no puede ser null");
}
-
this.MiCanal.agregarVideo(DtVideo);
+ try {
+ new CanalJpaController().edit(this.MiCanal);
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage());
+ }
}
public void agregarVideoALista(int idLista , int idVideo, Usuario Usu){
@@ -223,7 +231,6 @@ public class Usuario extends Persona{
} catch (Exception e) {
throw new RuntimeException("El video no pertenece al usuario: " + Usu.getNickname());
}
-
this.MiCanal.agregarVideoALista(idLista, v);
}
diff --git a/UyTube_aplicacion/src/Logica/Clases/Video.java b/UyTube_aplicacion/src/Logica/Clases/Video.java
index 9f42f1f..ace0464 100644
--- a/UyTube_aplicacion/src/Logica/Clases/Video.java
+++ b/UyTube_aplicacion/src/Logica/Clases/Video.java
@@ -127,6 +127,12 @@ public class Video implements Serializable {
// crea la tupla en la base de datos
// asi se genera el ID y se puede agregar al Map
new ComentarioJpaController().create(nuevoComentario);
+ /*nuevoComentario.setUsr(usuario);
+ try {
+ new ComentarioJpaController().edit(nuevoComentario);
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage());
+ }*/
comentarios.put(nuevoComentario.getId(), nuevoComentario);
}
@@ -140,7 +146,14 @@ public class Video implements Serializable {
}
for (Map.Entry<Integer, Comentario> coment : comentarios.entrySet()) {
- if(coment.getValue().agregarSubComentario(idCom, dtComentario, usuario)){
+ if (coment.getValue().agregarSubComentario(idCom, dtComentario, usuario)) {
+
+ try {
+ new ComentarioJpaController().edit(coment.getValue());
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage());
+ }
+
break;
}
}
diff --git a/UyTube_aplicacion/src/Logica/Controladores/CAdmin.java b/UyTube_aplicacion/src/Logica/Controladores/CAdmin.java
index f5099e0..a82bc90 100644
--- a/UyTube_aplicacion/src/Logica/Controladores/CAdmin.java
+++ b/UyTube_aplicacion/src/Logica/Controladores/CAdmin.java
@@ -1,6 +1,7 @@
package Logica.Controladores;
// Interfaz que se realizara
+import JPAControllerClasses.AdministradorJpaController;
import JPAControllerClasses.CategoriaJpaController;
import JPAControllerClasses.ListaPorDefectoJpaController;
import JPAControllerClasses.UsuarioJpaController;
@@ -16,6 +17,7 @@ import Logica.Clases.ListaPorDefecto;
import java.util.Map;
import java.util.TreeMap;
import java.util.ArrayList;
+import java.util.List;
public class CAdmin implements IAdmin{
@@ -40,12 +42,27 @@ public class CAdmin implements IAdmin{
this.idListaSeleccionada = 0;
this.idVideoSeleccionado = 0;
- this.altaCategoria("UNDEFINED");
+ // si la categoria no esta en la BDD, la crea
+ if ( ! existeCategoria("UNDEFINED")){
+ this.altaCategoria("UNDEFINED");
+ }
+
+ sincronizarAdministradoresConBDD();
+ sincronizarCategoriasConBDD();
+ sincronizarListasPorDefectoConBDD();
+ sincronizarUsuariosConBDD();
- // Administrador por defecto (temporal)
- int id = 0;
- Administrador root = new Administrador(id, "admin", "administrador", "root");
- this.administradores.put(id, root);
+ // si en la BDD no hay administrador, lo crea
+ if (this.administradores.isEmpty()) {
+ // Administrador por defecto (temporal)
+ Administrador root = new Administrador(0, "admin", "administrador", "root");
+ try {
+ new AdministradorJpaController().create(root);
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage());
+ }
+ this.administradores.put(root.getId(), root);
+ }
}
public static CAdmin getInstancia(){
@@ -55,6 +72,67 @@ public class CAdmin implements IAdmin{
return instancia;
}
+ private void sincronizarUsuariosConBDD(){
+ this.usuarios = new TreeMap(String.CASE_INSENSITIVE_ORDER);
+ try {
+ List<Usuario> usuariosEnBDD = new UsuarioJpaController().findUsuarioEntities();
+ for (Usuario u : usuariosEnBDD){
+ // si en BDD hay algo que no este en memoria
+ if ( ! this.usuarios.containsKey(u.getNickname())){
+ this.usuarios.put(u.getNickname(), u);
+ }
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage());
+ }
+ }
+
+ private void sincronizarAdministradoresConBDD(){
+ this.administradores = new TreeMap();
+ try {
+ List<Administrador> administradoresEnBDD = new AdministradorJpaController().findAdministradorEntities();
+ for (Administrador a : administradoresEnBDD){
+ // si en BDD hay algo que no este en memoria
+ if ( ! this.administradores.containsKey(a.getId())){
+ this.administradores.put(a.getId(), a);
+ }
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage());
+ }
+ }
+
+ private void sincronizarCategoriasConBDD(){
+ this.categorias = new TreeMap();
+ try {
+ List<Categoria> categoriasEnBDD = new CategoriaJpaController().findCategoriaEntities();
+ for (Categoria c : categoriasEnBDD){
+ // si en BDD hay algo que no este en memoria
+ if ( ! this.categorias.containsKey(c.getNombre())){
+ this.categorias.put(c.getNombre(), c);
+ }
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage());
+ }
+ }
+
+ private void sincronizarListasPorDefectoConBDD(){
+ this.listasPorDefecto = new TreeMap();
+ try {
+ List<ListaPorDefecto> listasPorDefectoEnBDD = new ListaPorDefectoJpaController().findListaPorDefectoEntities();
+ for (ListaPorDefecto l : listasPorDefectoEnBDD){
+ // si en BDD hay algo que no este en memoria
+ if ( ! this.listasPorDefecto.containsKey(l.getNombre())){
+ this.listasPorDefecto.put(l.getNombre(), l);
+ }
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e.getMessage());
+ }
+ }
+
+ // ////////////////////////////////////////////////////////////////////////////////////////
public void agregarVideoAListaDeReproduccion(int idLista){
/**
* Agrega el video idVideoSeleccionado a la lista idListaSeleccionada
@@ -72,11 +150,6 @@ public class CAdmin implements IAdmin{
throw new RuntimeException("El ID de la lista de reproduccion no es valido");
}
usuarioActual.agregarVideoALista(idLista, idVideoSeleccionado, usuarioSeleccionado);
- try {
- new UsuarioJpaController().edit(usuarioActual);
- } catch (Exception e) {
- throw new RuntimeException(e.getMessage());
- }
}
public void altaCategoria(String categoria){
@@ -115,11 +188,6 @@ public class CAdmin implements IAdmin{
throw new RuntimeException("El sistema no tiene un video seleccionado");
}
usuarioSeleccionado.agregarComentarioAVideo(idVideoSeleccionado, dtCom, usuarioActual);
- try {
- new UsuarioJpaController().edit(usuarioSeleccionado);
- } catch (Exception e) {
- throw new RuntimeException(e.getMessage());
- }
}
public void altaComentario(DtComentario dtCom, int idComPadre){
@@ -139,11 +207,6 @@ public class CAdmin implements IAdmin{
throw new RuntimeException("El sistema no tiene un video seleccionado");
}
usuarioSeleccionado.agregarComentarioAVideo(idVideoSeleccionado, idComPadre, dtCom, usuarioActual);
- try {
- new UsuarioJpaController().edit(usuarioSeleccionado);
- } catch (Exception e) {
- throw new RuntimeException(e.getMessage());
- }
}
public void altaListaDeReproduccionParticular(DtListaDeReproduccion lista) {
@@ -160,11 +223,6 @@ public class CAdmin implements IAdmin{
throw new RuntimeException("La categoria no existe");
}
usuarioSeleccionado.agregarListaParticular(lista);
- try {
- new UsuarioJpaController().edit(usuarioSeleccionado);
- } catch (Exception e) {
- throw new RuntimeException(e.getMessage());
- }
}
public void altaListaDeReproduccionPorDefecto(DtListaDeReproduccion lista){
@@ -192,11 +250,6 @@ public class CAdmin implements IAdmin{
nuevaLista.add(lista.getNombre());
for (Map.Entry<String, Usuario> u : usuarios.entrySet()){
u.getValue().actualizarListasPorDefecto(nuevaLista);
- try {
- new UsuarioJpaController().edit(u.getValue());
- } catch (Exception e) {
- throw new RuntimeException(e.getMessage());
- }
}
}
@@ -280,17 +333,13 @@ public class CAdmin implements IAdmin{
throw new RuntimeException("La categoria no existe");
}
usuarioSeleccionado.agregarVideoACanal(video);
- try {
- new UsuarioJpaController().edit(usuarioSeleccionado);
- } catch (Exception e) {
- throw new RuntimeException(e.getMessage());
- }
}
public boolean existeCategoria(String cat){
/**
* Verifica si existe una categoria con el nombre recibido
*/
+ sincronizarCategoriasConBDD();
return categorias.containsKey(cat);
}
@@ -298,6 +347,7 @@ public class CAdmin implements IAdmin{
/**
* Verifica si existe un usuario con el mail recibido
*/
+ sincronizarUsuariosConBDD();
for (Map.Entry<String, Usuario> u : usuarios.entrySet()){
if (u.getValue().getCorreo().equals(email)){
return true;
@@ -310,10 +360,12 @@ public class CAdmin implements IAdmin{
/**
* Verifica si existe un usuario con el nickname recibido
*/
+ sincronizarUsuariosConBDD();
return usuarios.containsKey(nickname);
}
public boolean iniciarSesionAdministrador(int id, String pass){
+ sincronizarAdministradoresConBDD();
Administrador a = administradores.get(id);
if (a == null){
return false;
@@ -322,6 +374,7 @@ public class CAdmin implements IAdmin{
}
public boolean iniciarSesionUsuario(String nickname, String pass){
+ sincronizarUsuariosConBDD();
Usuario u = usuarios.get(nickname);
if (u == null){
return false;
@@ -353,6 +406,7 @@ public class CAdmin implements IAdmin{
/**
* Devuelve todas las categorias existentes en el sistema
*/
+ sincronizarCategoriasConBDD();
ArrayList<String> ret = new ArrayList();
for (Map.Entry<String, Categoria> c : categorias.entrySet()){
ret.add(c.getValue().getNombre());
@@ -377,10 +431,11 @@ public class CAdmin implements IAdmin{
/**
* Devuelve todos las listas de reproduccion del sistema que pertenezcan a la categoria indicada
*/
-
if (cat.equals("")){
throw new RuntimeException("La categoria no puede ser vacia");
}
+ sincronizarUsuariosConBDD();
+ sincronizarCategoriasConBDD();
ArrayList<DtListaDeReproduccion> ret = new ArrayList();
for (Map.Entry<String, Usuario> u : usuarios.entrySet()){
ret.addAll(u.getValue().obtenerListasEnCategoria(cat));
@@ -478,6 +533,7 @@ public class CAdmin implements IAdmin{
/**
* Devuelve todos los datos de todos los usuarios
*/
+ sincronizarUsuariosConBDD();
ArrayList<DtUsuario> ret = new ArrayList<>();
for (Map.Entry<String, Usuario> usuario : usuarios.entrySet()) {
ret.add(usuario.getValue().getDT());
@@ -492,6 +548,8 @@ public class CAdmin implements IAdmin{
if (cat.equals("")){
throw new RuntimeException("La categoria no puede ser vacia");
}
+ sincronizarUsuariosConBDD();
+ sincronizarCategoriasConBDD();
ArrayList<DtVideo> ret = new ArrayList();
for (Map.Entry<String, Usuario> u : usuarios.entrySet()){
ret.addAll(u.getValue().obtenerVideosEnCategoria(cat));
@@ -613,6 +671,7 @@ public class CAdmin implements IAdmin{
}
public DtUsuario obtenerPropietarioDeVideo(int idVideo){
+ sincronizarUsuariosConBDD();
// Esto es un parche, pero de los que nunca se despegan...
// A tiempos desesperados, medidas desesperadas
for (Map.Entry<String, Usuario> u : usuarios.entrySet()){
@@ -693,6 +752,7 @@ public class CAdmin implements IAdmin{
* El sistema recuerda un link al usuario como usuarioSeleccionado
* Devuelve los datos de usuarioSeleccionado
*/
+ sincronizarUsuariosConBDD();
usuarioSeleccionado = usuarios.get(nickname);
if (usuarioSeleccionado == null){
throw new RuntimeException("No se encontro ningun usuario con ese nickname");
@@ -705,6 +765,7 @@ public class CAdmin implements IAdmin{
El sistema recuerda un link al usuario como usuarioActual
Devuelve los datos de usuarioActual
* */
+ sincronizarUsuariosConBDD();
usuarioActual = usuarios.get(nickname);
if (usuarioActual == null){
throw new RuntimeException("No se encontro ningun usuario con ese nickname");
@@ -765,6 +826,7 @@ public class CAdmin implements IAdmin{
if (this.usuarioSeleccionado == null){
throw new RuntimeException("El sistema no tiene un usuario seleccionado");
}
+ sincronizarListasPorDefectoConBDD();
if (listasPorDefecto.containsKey(nombre)) {
return false;
}
@@ -776,7 +838,8 @@ public class CAdmin implements IAdmin{
* Devuelve false si existe algun usuario en el sistema que posea una
* lista de reproduccion con ese nombre
*/
-
+ sincronizarListasPorDefectoConBDD();
+ sincronizarUsuariosConBDD();
if (listasPorDefecto.containsKey(nombre)) {
return false;
}
diff --git a/UyTube_aplicacion/src/Presentacion/DatosDePrueba.java b/UyTube_aplicacion/src/Presentacion/DatosDePrueba.java
index 957263b..c6c66a6 100644
--- a/UyTube_aplicacion/src/Presentacion/DatosDePrueba.java
+++ b/UyTube_aplicacion/src/Presentacion/DatosDePrueba.java
@@ -43,9 +43,24 @@ public class DatosDePrueba {
System.out.println(e.getMessage());
System.out.println("//////////////////////////");
}
+ /*
+ for (DtUsuario u : sys.listarUsuarios()) {
+ System.out.println(u.toString());
+ }
+
+ for (String c : sys.listarCategorias()) {
+ System.out.println(c);
+ }
+ */
cargarCategorias();
- sys.altaListaDeReproduccionPorDefecto(new DtListaDeReproduccion(0, "Ver mas tarde", Privacidad.PRIVADO, TipoListaDeReproduccion.POR_DEFECTO, "UNDEFINED"));
+ try {
+ sys.altaListaDeReproduccionPorDefecto(new DtListaDeReproduccion(0, "Ver mas tarde", Privacidad.PRIVADO, TipoListaDeReproduccion.POR_DEFECTO, "UNDEFINED"));
+ } catch (Exception e) {
+ }
+ if (sys.listarUsuarios().size() != 0){
+ return;
+ }
cargarUsuariosYCanales();
cargarSeguidores();
cargarVideosAUsuarios();
@@ -57,13 +72,19 @@ public class DatosDePrueba {
sys.liberarMemoriaVideo();
sys.liberarMemoriaUsuarioActual();
sys.liberarMemoriaUsuario();
-
}
private static void cargarCategorias(){
- sys.altaCategoria("MUSICA");
- sys.altaCategoria("DEPORTE");
- sys.altaCategoria("GAMING");
+ ArrayList<String> cats = new ArrayList();
+ cats.add("MUSICA");
+ cats.add("DEPORTE");
+ cats.add("GAMING");
+
+ for (String c : cats){
+ if ( ! sys.existeCategoria(c)){
+ sys.altaCategoria(c);
+ }
+ }
}
private static void cargarUsuariosYCanales(){
@@ -295,7 +316,7 @@ public class DatosDePrueba {
private static void agregarComentarios(){
sys.seleccionarUsuario("JotaJota96");
- sys.seleccionarVideo(1);
+ sys.seleccionarVideo(sys.listarVideosDeUsuario().get(0).getId());
// 1
sys.seleccionarUsuarioActual("LuC31G");
@@ -357,7 +378,8 @@ public class DatosDePrueba {
boolean vacio = true;
for (DtComentario c : sys.listarComentariosDeVideo()){
vacio = false;
- tab(tab+2); tab(c.getNivelSubComentario()); System.out.println(c.toString());
+ tab(tab+2); tab(c.getNivelSubComentario());
+ System.out.println(c.getId() + ". " + c.getNickname() + ": " + c.getTexto());
}
if (vacio){
tab(tab+2); System.out.println("No hay comentarios");
diff --git a/UyTube_aplicacion/src/Presentacion/Pryevas.java b/UyTube_aplicacion/src/Presentacion/Pryevas.java
index 333c0da..ff3c1fa 100644
--- a/UyTube_aplicacion/src/Presentacion/Pryevas.java
+++ b/UyTube_aplicacion/src/Presentacion/Pryevas.java
@@ -1,6 +1,9 @@
package Presentacion;
+import JPAControllerClasses.ComentarioJpaController;
+import JPAControllerClasses.VideoJpaController;
import Logica.Clases.Canal;
+import Logica.Clases.Comentario;
import Logica.Clases.Usuario;
import Logica.Clases.Video;
import Logica.DataType.DtCanal;
@@ -24,11 +27,30 @@ public class Pryevas {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("UyTubePU");
EntityManager manager = factory.createEntityManager();
+
+
+ /*
+ manager.getTransaction().begin();
+ Usuario usu = manager.find(Usuario.class, "camilillo15");
+ Video vid = manager.find(Video.class, 18);
+ manager.getTransaction().commit();
+
+ vid.agregarComentario(
+ new DtComentario(0, "", new Date(90, 5, 5), "texto", 0),
+ usu
+ );
+ new VideoJpaController().edit(vid);
+
+ */
+
+
+ //Comentario c = new Comentario(0, new Date(90, 5, 5), "texto", 0, usu);
+ //new ComentarioJpaController().create(c);
+
} catch (Exception e) {
+ System.out.println("*************************************************");
System.out.println(e.getMessage());
- throw new RuntimeException(
- "Ocurrió un error al conectar con la base de datos" + "\n" +
- "Es posible que la información no haya sido almacenada");
+ System.out.println("*************************************************");
}
}
--
GitLab