diff --git a/UyTube_aplicacion/src/Logica/Clases/Canal.java b/UyTube_aplicacion/src/Logica/Clases/Canal.java index 117c62f4acc9bc4d5d6ca943aa407bda46711ac1..6fff19cf3f1198c17fd051aa1585b94d7ad1a32e 100644 --- a/UyTube_aplicacion/src/Logica/Clases/Canal.java +++ b/UyTube_aplicacion/src/Logica/Clases/Canal.java @@ -6,7 +6,8 @@ import Logica.DataType.DtListaDeReproduccion; import Logica.DataType.DtValoracion; import Logica.DataType.DtVideo; import Logica.DataType.DtCanal; -//import java.util.ArrayList; +import Logica.Enumerados.TipoListaDeReproduccion; +import java.util.ArrayList; import java.util.Map; import java.util.TreeMap; @@ -18,14 +19,14 @@ public class Canal { private String nombre; private String descripcion; private Privacidad privacidad; - private Map<Integer,ListaDeReproduccion> listasDeReproducciones; - private Map<Integer,Video> Videos; + private Map<Integer,ListaDeReproduccion> misListas; + private Map<Integer,Video> misVideos; public Canal() { this.id = getNuevoId(); - this.listasDeReproducciones = new TreeMap(); - this.Videos = new TreeMap(); + this.misListas = new TreeMap(); + this.misVideos = new TreeMap(); } public Canal(int id, String nombre, String descripcion, Privacidad privacidad) { @@ -33,8 +34,8 @@ public class Canal { this.nombre = nombre; this.descripcion = descripcion; this.privacidad = privacidad; - this.listasDeReproducciones = new TreeMap(); - this.Videos = new TreeMap(); + this.misListas = new TreeMap(); + this.misVideos = new TreeMap(); } @@ -73,30 +74,131 @@ public class Canal { public static int getNuevoId(){ return contadorCanal++; } -public void actualizarListasPorDefecto(){} -public void agregarComentarioAVideo(int id, DtComentario comentario, int idUsuario){} -public void agregarComentarioAVideo(int id, int idComentario, DtComentario comentario, int idUsuario){} -public void agregarListaParticular(DtListaDeReproduccion listaReproduccion){} -//public DtValoracion agregarModificarValoracion(int id, string nickname){} -public void agregarValoracionAVideo(int id, DtValoracion valoracion, int idUsuario){} -public void agregarVideo(DtVideo video){} -public void agregarVideoALista(int id, DtVideo video){} -//public DtCanal getDT(){} - -//public ArrayList<DtComentario> listarComentariosDeVideo(int id){} -//public ArrayList<DtListaDeReproduccion> listarListasDeReproduccion(bool x){} -//public ArrayList<DtValoracion> listarValoracionesDeVideo(int id){} -//public ArrayList<DtVideo> listarVideos(){} -//public ArrayList<DtVideo> listarVideosDeListaDeReproduccion(int id){} -public void modificar(DtCanal canal){} -public void modificarListaDeReproduccion(DtListaDeReproduccion listaDeReproduccion){} -public void modificarVideo(DtVideo video){} -//public ArrayList<DtListaDeReproduccion> obtenerListasEnCategoria(string cat){} -//public DtVideo obtenerVideo(int id){} -//public DtVideo obtenerVideo(int id){} -//public ArrayList<DtVideo> obtenerVideosEnCategoria(string cat){} -public void quitarVideoDeListaDeReproduccion(int idLista, int idVideo){} -//public bool validarListaParticular(string lista){} - -} + public void actualizarListasPorDefecto(){ + + } + + public void agregarComentarioAVideo(int id, DtComentario comentario, Usuario usuario){ + this.misVideos.get(id).agregarComentario(comentario, usuario); + } + + public void agregarComentarioAVideo(int id, int idComentario, DtComentario comentario, Usuario usuario){ + this.misVideos.get(id).agregarComentario(idComentario, comentario, usuario); + } + + public void agregarListaParticular(DtListaDeReproduccion listaReproduccion){ + int id = ListaDeReproduccion.getNuevoId(); + ListaDeReproduccion ldr = new ListaDeReproduccion(id, listaReproduccion.getNombre(), listaReproduccion.getPrivacidad(),listaReproduccion.getTipo(), listaReproduccion.getCategoria()); + this.misListas.put(id, ldr); + } + + public void quitarValoracion(int id, String nickname){ + + } + + public void agregarModificarValoracion(int id, DtValoracion valoracion, Usuario usuario){ + this.misVideos.get(id).agregarModificarValoracion(valoracion, usuario); + } + + public void agregarVideo(DtVideo video){ + int id = Video.getNuevoId(); + Video vd = new Video(id, video.getNombre(), video.getDescripcion(), video.getDuracion(), video.getFechaPublicacion(), video.getUrlVideoOriginal(), video.getCategoria()); + this.misVideos.put(id, vd); + } + + public void agregarVideoALista(int id, Video video){ + this.misListas.get(video.getId()).agregarVideoA(video); + } + + public DtCanal getDT(){ + return new DtCanal(this.id, this.nombre, this.descripcion, this.privacidad); + } + + public ArrayList<DtComentario> listarComentariosDeVideo(int id){ + return this.misVideos.get(id).listarComentarios(); + } + + public ArrayList<DtListaDeReproduccion> listarListasDeReproduccion(boolean x){ + ArrayList<DtListaDeReproduccion> ret = new ArrayList(); + + // para cada elemento en misVideos + /** + * este for no es normal, se declara la variable m que es de tipo + * Entrada de Map (como un nodo arbol), y autmaticamente la hace avanzar + * por todas las entradas de la coleccion. + * De la entrada actual se puede obtener la Key y el Valor almacenado + */ + for (Map.Entry<Integer, ListaDeReproduccion> m : misListas.entrySet()){ + // hace un getDT y lo agrega a la coleccion de retorno + ret.add(m.getValue().getDt()); + } + + return ret; + } + + public ArrayList<DtValoracion> listarValoracionesDeVideo(int id){ + return this.misVideos.get(id).listarValoraciones(); + + } + + public ArrayList<DtVideo> listarVideos(){ + ArrayList<DtVideo> ret = new ArrayList(); + + // para cada elemento en misVideos + /** + * este for no es normal, se declara la variable m que es de tipo + * Entrada de Map (como un nodo arbol), y autmaticamente la hace avanzar + * por todas las entradas de la coleccion. + * De la entrada actual se puede obtener la Key y el Valor almacenado + */ + for (Map.Entry<Integer, Video> m : misVideos.entrySet()){ + // hace un getDT y lo agrega a la coleccion de retorno + ret.add(m.getValue().getDt()); + } + + return ret; + } + + public ArrayList<DtVideo> listarVideosDeListaDeReproduccion(int id){ + return this.misListas.get(id).listarVideos(); + } + + public void modificar(DtCanal canal){ + this.nombre = canal.getNombre(); + this.descripcion = canal.getDescripcion(); + this.privacidad = canal.getPrivacidad(); + } + + public void modificarListaDeReproduccion(DtListaDeReproduccion ldr){ + this.misListas.get(ldr.getId()).modificar(ldr); + } + + public void modificarVideo(DtVideo video){ + + } + + public ArrayList<DtListaDeReproduccion> obtenerListasEnCategoria(String cat){ + return new ArrayList(); + } + + public DtVideo obtenerDtVideo(int id){ + return this.misVideos.get(id).getDt(); + } + + public Video obtenerVideo(int id){ + return null; + } + + public ArrayList<DtVideo> obtenerVideosEnCategoria(String cat){ + return new ArrayList(); + } + + public void quitarVideoDeListaDeReproduccion(int idLista, int idVideo){ + + } + + public boolean validarListaParticular(String lista){ + return false; + } +} \ No newline at end of file diff --git a/UyTube_aplicacion/src/Logica/Clases/Persona.java b/UyTube_aplicacion/src/Logica/Clases/Persona.java index 3e6a6d5adacc278615a7dc756a64314ebe142e7a..da1e0fb7b691b8a472451d715cff787fa0822e12 100644 --- a/UyTube_aplicacion/src/Logica/Clases/Persona.java +++ b/UyTube_aplicacion/src/Logica/Clases/Persona.java @@ -3,15 +3,18 @@ package Logica.Clases; public class Persona { String nombre; String apellido; - String contraseña; + String contrnia; - public Persona() { + public Persona(){ + this.nombre = ""; + this.apellido = ""; + this.contrnia = ""; } - public Persona(String nombre, String apellido, String contraseña) { + public Persona(String nombre, String apellido, String contrnia) { this.nombre = nombre; this.apellido = apellido; - this.contraseña = contraseña; + this.contrnia = contrnia; } public String getNombre() { @@ -31,11 +34,11 @@ public class Persona { } public String getContraseña() { - return contraseña; + return contrnia; } public void setContraseña(String contraseña) { - this.contraseña = contraseña; + this.contrnia = contraseña; } diff --git a/UyTube_aplicacion/src/Logica/Clases/Usuario.java b/UyTube_aplicacion/src/Logica/Clases/Usuario.java index ebaf8efeb554c268e9b23ec6356bcedd7df7676c..7f4cf84439f86c5d19bd202dbbf119caa9a253af 100644 --- a/UyTube_aplicacion/src/Logica/Clases/Usuario.java +++ b/UyTube_aplicacion/src/Logica/Clases/Usuario.java @@ -2,101 +2,297 @@ package Logica.Clases; import java.sql.Date; import Logica.DataType.*; import java.util.ArrayList; +import java.util.Map; +import java.util.TreeMap; public class Usuario extends Persona{ + private String nickname; private String correo; private Date fechaNacimiento; private String imagen; private int seguidores; private Canal MiCanal; + private Map<String, Usuario> misSeguidores; + private Map<String, Usuario> seguidos; + - public Usuario() { - } + public Usuario() {} public Usuario(String nickname, String correo, Date fechaNacimiento, String imagen, String contrasenia, String nombre, String apellido ,DtCanal DTC) { super(nombre,apellido,contrasenia); + if(fechaNacimiento == null){ + throw new RuntimeException("la fecha no puede ser nill"); + } + if(DTC == null){ + throw new RuntimeException("El canal no puede ser null"); + } + if(nickname == ""){ + throw new RuntimeException("El nickname no puede ser Vacio"); + } + + if(correo == ""){ + throw new RuntimeException("El correo no puede ser Vacio"); + } + + if(contrasenia == ""){ + throw new RuntimeException("La contraseña no puede ser Vacio"); + } + + this.nickname = nickname; this.correo = correo; this.fechaNacimiento = fechaNacimiento; this.imagen = imagen; this.seguidores = 0; - //this.MiCanal = new Canal(DTC.getNuevoId(),DTC.getNombre(),DTC.getDescripcion(),DTC.getPrivacidad()); + this.MiCanal = new Canal(Canal.getNuevoId(),DTC.getNombre(),DTC.getDescripcion(),DTC.getPrivacidad()); + this.misSeguidores = new TreeMap(); + this.seguidos = new TreeMap(); } public String getNickname() { return nickname; } - - public void setNickname(String nickname) { - this.nickname = nickname; - } - + public String getCorreo() { return correo; } - - public void setCorreo(String correo) { - this.correo = correo; - } - + public Date getFechaNacimiento() { return fechaNacimiento; } - - public void setFechaNacimiento(Date fechaNacimiento) { - this.fechaNacimiento = fechaNacimiento; - } - + public String getImagen() { return imagen; } - public void setImagen(String imagen) { - this.imagen = imagen; - } - public int getSeguidores() { return seguidores; } - public void setSeguidores(int seguidores) { - this.seguidores = seguidores; - } public DtUsuario getDT(){ - return new DtUsuario(nickname, contraseña, nombre, apellido, correo, fechaNacimiento, imagen, seguidores);//Es el otro constructor - } - public void actualizarListasPorDefecto(){} - public void agregarComentarioAVideo(int id, DtComentario DtComentario, Usuario Usu){} - public void agregarComentarioAVideo(int id,int idCom, DtComentario DtComentario, Usuario Usu){} - public void agregarListaParticular(DtListaDeReproduccion DtValoracion){} - public void agregarModificarValoracionDeVideo(int id, DtValoracion DtValoracion, Usuario Usu){} - public void agregarOQuitarSeguido(Usuario Usu){} - public void agregarOQuitarSeguidor(Usuario Usu){} - public void agregarVideoACanal(DtVideo DtVideo){} - public void agregarVideoALista(int idLista , int idVideo, Usuario Usu){} - - // public ArrayList<DtComentario> listarComentariosDeVideo(int id){} - // public ArrayList<DtListasDeReproduccion> listarListasDeReproduccionDeCanal(bool porDefecto){} - // public ArrayList<DtUsuario> listarUsuariosSeguidores(){} - // public ArrayList<DtUsuario> listarUsuariosSeguidos(){} - // public ArrayList<DtValoracion> listarValoracionesDeVideo(int id){} - // public ArrayList<DtVideo> listarVideosDeCanal(){} - // public ArrayList<DtVideo> listarVideosDeListaDeReproduccion(int id){} - - public void modificar(DtUsuario Usu, DtCanal DtCanal){} - public void modificarListaDeReproduccionDeCanal(DtListaDeReproduccion DtListaDeReproduccion){} - public void modificarVideoDeCanal(DtVideo DtVideo){} - - // public DtCanal obtenerCanal(){} - // public ArrayList<DtListaDeReproduccion> obtenerListasEnCategoria(cat:string){} - // public DtValoracion obtenerValoracion(int id, string nickname){} - // public Video obtenerVideo(int id){} - // public DtVideo obtenerVideoDeCanal(int id){} - // public ArrayList<DtVideo> obtenerVideosEnCategoria(cat:string){} - - public void quitarVideoDeListaDeReproduccion(int idLista, int idVideo){} - // public boolean validarListaParticular(String nombre){} + return new DtUsuario(this.nickname, this.contrnia, this.nombre, this.apellido, this.correo, this.fechaNacimiento, this.imagen, this.seguidores);//Es el otro constructor + } + + public void actualizarListasPorDefecto(){ + this.MiCanal.actualizarListasPorDefecto(); + } + + public void agregarComentarioAVideo(int idVideo, DtComentario DtComentario, Usuario Usu){ + if(DtComentario == null){ + throw new RuntimeException("El comentario no puede ser null"); + } + if(Usu == null){ + throw new RuntimeException("El usuario no puede ser null"); + } + + this.MiCanal.agregarComentarioAVideo(idVideo, DtComentario, Usu); + } + + public void agregarComentarioAVideo(int idVideo, int idCom, DtComentario DtComentario, Usuario Usu){ + if(DtComentario == null){ + throw new RuntimeException("El comentario no puede ser null"); + } + if(Usu == null){ + throw new RuntimeException("El usuario no puede ser null"); + } + + this.MiCanal.agregarComentarioAVideo(idVideo, idCom, DtComentario, Usu); + } + + public void agregarListaParticular(DtListaDeReproduccion DtValoracion){ + if(DtValoracion == null){ + throw new RuntimeException("La valoracion no puede ser null"); + } + + this.MiCanal.agregarListaParticular(DtValoracion); + } + + public void agregarModificarValoracionDeVideo(int idVideo, DtValoracion DtValoracion, Usuario Usu){ + if(DtValoracion == null){ + throw new RuntimeException("La valoracion no puede ser null"); + } + if(Usu == null){ + throw new RuntimeException("El usuario no puede ser null"); + } + + this.MiCanal.agregarModificarValoracion(idVideo , DtValoracion, Usu); + } + + public void agregarOQuitarSeguido(Usuario Usu){ + if(Usu == null){ + throw new RuntimeException("El usuario no puede ser null"); + } + + if (this.seguidos.containsKey(Usu.getNickname())){ + this.seguidos.remove(Usu.getNickname()); + }else{ + this.seguidos.put(Usu.getNickname(), Usu); + } + + Usu.agregarOQuitarSeguidor(this); + } + + public void agregarOQuitarSeguidor(Usuario Usu){ + if(Usu == null){ + throw new RuntimeException("El usuario no puede ser null"); + } + + if (this.misSeguidores.containsKey(Usu.nickname)){ + this.misSeguidores.remove(Usu.getNickname()); + this.seguidores--; + }else{ + this.misSeguidores.put(Usu.getNickname(), Usu); + this.seguidores++; + } + } + + public void agregarVideoACanal(DtVideo DtVideo){ + if(DtVideo == null){ + throw new RuntimeException("El video no puede ser null"); + } + + this.MiCanal.agregarVideo(DtVideo); + } + + public void agregarVideoALista(int idLista , int idVideo, Usuario Usu){ + if(Usu == null){ + throw new RuntimeException("El usuario no puede ser null"); + } + + this.agregarVideoALista(idLista, idVideo, Usu); + } + + public ArrayList<DtComentario> listarComentariosDeVideo(int idVideo){ + return this.MiCanal.listarComentariosDeVideo(idVideo); + } + + public ArrayList<DtListaDeReproduccion> listarListasDeReproduccionDeCanal(boolean porDefecto){ + return this.MiCanal.listarListasDeReproduccion(porDefecto); + } + + public ArrayList<DtUsuario> listarUsuariosSeguidos(){ + // crea una lista de retorno + ArrayList<DtUsuario> ret = new ArrayList(); + + for (Map.Entry<String,Usuario> i : this.seguidos.entrySet()){ + // hace un getDT y lo agrega a la coleccion de retorno + ret.add(i.getValue().getDT()); + } + return ret; + }//(Ctrl + C Ctrl + V) De la clase video + + public ArrayList<DtUsuario> listarUsuariosSeguidores(){ + // crea una lista de retorno + ArrayList<DtUsuario> ret = new ArrayList(); + + for (Map.Entry<String,Usuario> i : this.misSeguidores.entrySet()){ + // hace un getDT y lo agrega a la coleccion de retorno + ret.add(i.getValue().getDT()); + } + return ret; + }//(Ctrl + C Ctrl + V) De la clase lirRepro + + public ArrayList<DtValoracion> listarValoracionesDeVideo(int id){ + return this.MiCanal.listarValoracionesDeVideo(id); + } + + public ArrayList<DtVideo> listarVideosDeCanal(){ + return this.MiCanal.listarVideos(); + } + + public ArrayList<DtVideo> listarVideosDeListaDeReproduccion(int id){ + return this.MiCanal.listarVideosDeListaDeReproduccion(id); + } + + public void modificar(DtUsuario DtUsu, DtCanal DtCanal){ + if(DtUsu == null){ + throw new RuntimeException("El usuario no puede ser null"); + } + if(DtCanal == null){ + throw new RuntimeException("El canal no puede ser null"); + } + + this.nombre = DtUsu.getNombre(); + this.apellido = DtUsu.getApellido(); + this.contrnia = DtUsu.getContrasenia(); + this.fechaNacimiento = DtUsu.getFechaNacimiento(); + this.imagen = DtUsu.getImagen(); + + this.MiCanal.modificar(DtCanal); + } + + public void modificarListaDeReproduccionDeCanal(DtListaDeReproduccion DtListaDeReproduccion){ + if(DtListaDeReproduccion == null){ + throw new RuntimeException("La lista de reproduccion no puede ser null"); + } + + this.MiCanal.modificarListaDeReproduccion(DtListaDeReproduccion); + } + + public void modificarVideoDeCanal(DtVideo DtVideo){ + if(DtVideo == null){ + throw new RuntimeException("El video no puede ser null"); + } + this.MiCanal.modificarVideo(DtVideo); + } + + public DtCanal obtenerCanal(){ + return this.MiCanal.getDT(); + } + + public ArrayList<DtListaDeReproduccion> obtenerListasEnCategoria(String cat){ + if(cat == ""){ + throw new RuntimeException("La categoria no puede ser vacia"); + } + + return this.MiCanal.obtenerListasEnCategoria(cat); + } + + public DtValoracion obtenerValoracion(int id, String nickname){ + if(nickname == ""){ + throw new RuntimeException("El nickname no puede ser vacio"); + } + + //return this.MiCanal.obtenerValoracion(id, nickname); + return null;//Esto se saca + } + + public Video obtenerVideo(int id){ + return this.MiCanal.obtenerVideo(id); + } + + public DtVideo obtenerVideoDeCanal(int idVideo){ + return this.MiCanal.obtenerDtVideo(idVideo); + } + + public ArrayList<DtVideo> obtenerVideosEnCategoria(String cat){ + if(cat == ""){ + throw new RuntimeException("La categoria no puede ser vacia"); + } + + return this.MiCanal.obtenerVideosEnCategoria(cat); + + } + + public void quitarValoracion(int id, String nickname){ + if(nickname == ""){ + throw new RuntimeException("El nickname no puede ser vacia"); + } + this.MiCanal.quitarValoracion(id, nickname); + } + + public void quitarVideoDeListaDeReproduccion(int idLista, int idVideo){ + this.MiCanal.quitarVideoDeListaDeReproduccion(idLista, idVideo); + } + + public boolean validarListaParticular(String nombre){ + if(nombre == ""){ + throw new RuntimeException("El nombre de la lista no puede ser vacia"); + } + return this.MiCanal.validarListaParticular(nombre); + } + } diff --git a/UyTube_aplicacion/src/Logica/main.java b/UyTube_aplicacion/src/Logica/main.java index 11e87bec63e35629a262a6c55c5c0abea8babab8..ba0d3f599c1db076db64a9b034037a1845e2cfbf 100644 --- a/UyTube_aplicacion/src/Logica/main.java +++ b/UyTube_aplicacion/src/Logica/main.java @@ -1,67 +1,8 @@ package Logica; -import Logica.Clases.*; -import Logica.DataType.*; -import Logica.Enumerados.*; -import java.sql.Date; -import java.sql.Time; -import java.util.ArrayList; +import Logica.*; public class main { public static void main(String[] args) { - System.out.println("Hola mundo"); - - try { - System.out.println("Creando lista nueva"); - ListaDeReproduccion l1 = new ListaDeReproduccion(1, "lista_test", Privacidad.PRIVADO, TipoListaDeReproduccion.PARTICULAR, "UNDEFINED"); - System.out.println(l1.toString()); - - System.out.println("Creando 5 videos"); - Video v1 = new Video(Video.getNuevoId(), "video_1", "desc_1", new Time(0, 1, 50), new Date(2019 - 1900, 0, 5), "url_1", "DEFAULT"); - Video v2 = new Video(Video.getNuevoId(), "video_2", "desc_2", new Time(0, 2, 40), new Date(2019 - 1900, 2, 4), "url_2", "MUSICA"); - Video v3 = new Video(Video.getNuevoId(), "video_3", "desc_3", new Time(0, 3, 30), new Date(2019 - 1900, 3, 3), "url_3", "DEPORTE"); - Video v4 = new Video(Video.getNuevoId(), "video_4", "desc_4", new Time(0, 4, 20), new Date(2019 - 1900, 4, 2), "url_4", "GAMING"); - Video v5 = new Video(Video.getNuevoId(), "video_5", "desc_5", new Time(0, 5, 10), new Date(2019 - 1900, 5, 1), "url_5", "MUSICA"); - - System.out.println("agregando videos 1, 3 y 4"); - l1.agregarVideoA(v3); - l1.agregarVideoA(v1); - l1.agregarVideoA(v4); - System.out.println(l1.toString()); - - System.out.println("Quitando video 2"); - l1.quitarVideo(2); - System.out.println(l1.toString()); - System.out.println("Quitando video 3"); - l1.quitarVideo(3); - System.out.println(l1.toString()); - System.out.println("agregando video 5"); - l1.agregarVideoA(v5); - - System.out.println("Listando todos los videos"); - ArrayList<DtVideo> dt = l1.listarVideos(); - for (int i = 0; i < dt.size(); i++) { - System.out.println(dt.get(i).toString()); - } - - System.out.println("-------------"); - ArrayList<String> lsts = ListaDeReproduccion.listarNombresDeListasPorDefecto(); - for (int i = 0; i < lsts.size(); i++) { - System.out.println(lsts.get(i)); - } - System.out.println("-------------"); - ListaDeReproduccion.agregarCategoria("MUSICA"); - ListaDeReproduccion.agregarCategoria("GAMING"); - - lsts = ListaDeReproduccion.listarNombresDeListasPorDefecto(); - for (int i = 0; i < lsts.size(); i++) { - System.out.println(lsts.get(i)); - } - - } catch (Exception e) { - System.out.println("-->" + e); - } - - } }