diff --git a/UyTube_aplicacion/src/Logica/Clases/Canal.java b/UyTube_aplicacion/src/Logica/Clases/Canal.java
index 5facc5a5e87c29b5fce310dd124458ab09de15ac..57eb71643b62afd0cb79f3d5360f6421b5d63818 100644
--- a/UyTube_aplicacion/src/Logica/Clases/Canal.java
+++ b/UyTube_aplicacion/src/Logica/Clases/Canal.java
@@ -7,7 +7,6 @@ import Logica.DataType.DtValoracion;
 import Logica.DataType.DtVideo;
 import Logica.DataType.DtCanal;
 import Logica.Enumerados.TipoListaDeReproduccion;
-import com.sun.org.apache.bcel.internal.generic.InstructionConstants;
 import java.util.ArrayList;
 import java.util.Map;
 import java.util.TreeMap;
@@ -73,6 +72,12 @@ public class Canal {
     }
 
     public void setPrivacidad(Privacidad privacidad) {
+        // Si el canal es publico y se va a cambiar a privado, se deben cambiar a privado todos los videos del canal
+        if (privacidad == Privacidad.PRIVADO){
+            for (Map.Entry<Integer, Video> m : misVideos.entrySet()) {
+                m.getValue().setPrivacidad(Privacidad.PRIVADO);
+            }
+        }
         this.privacidad = privacidad;
     }
 
@@ -80,6 +85,7 @@ public class Canal {
         return contadorCanal++;
     }
 
+    //-----------------------------------------------------------------------------
     public void actualizarListasPorDefecto() {
         ArrayList<String> listas = ListaDeReproduccion.listarNombresDeListasPorDefecto();
         
@@ -96,7 +102,7 @@ public class Canal {
     }
 
     public void agregarComentarioAVideo(int id, DtComentario comentario, Usuario usuario) {
-        if (this.misListas.containsKey(id)) {
+        if (this.misVideos.containsKey(id)) {
             this.misVideos.get(id).agregarComentario(comentario, usuario);
         } else {
             throw new RuntimeException("El video no pertenece al canal");
@@ -104,7 +110,7 @@ public class Canal {
     }
 
     public void agregarComentarioAVideo(int id, int idComentario, DtComentario comentario, Usuario usuario) {
-        if (this.misListas.containsKey(id)) {
+        if (this.misVideos.containsKey(id)) {
             this.misVideos.get(id).agregarComentario(idComentario, comentario, usuario);
         } else {
             throw new RuntimeException("El video no pertenece al canal");
@@ -113,18 +119,19 @@ public class Canal {
 
     public void agregarListaParticular(DtListaDeReproduccion listaReproduccion) {
         int idLdr = ListaDeReproduccion.getNuevoId();
-        if (listaReproduccion.equals("")){
+        if (listaReproduccion == null){
+            throw new RuntimeException("La lista de reprodccion es null");
+        }
+        if (listaReproduccion.getNombre().equals("")){
             throw new RuntimeException("El nombre no puede ser vacio");
         }
-        if (this.privacidad == privacidad.PRIVADO && listaReproduccion.getPrivacidad() == privacidad.PUBLICO){
+        if (this.privacidad == Privacidad.PRIVADO && listaReproduccion.getPrivacidad() == Privacidad.PUBLICO){
             throw new RuntimeException("No se puede agregar una lista de reproduccion publica a un canal privado");
         }
-        
         if (listaReproduccion.getCategoria().equals("")){
             throw new RuntimeException("La categoria no puede ser vacia");
         }
         
-        
         ListaDeReproduccion ldr = new ListaDeReproduccion(
                 idLdr, 
                 listaReproduccion.getNombre(), 
@@ -153,6 +160,9 @@ public class Canal {
     }
 
     public void agregarVideo(DtVideo video) {
+        if(video== null){
+            throw new RuntimeException("El Datatype del video es null");
+        }
         if (video.getNombre().equals("")){
             throw new RuntimeException("El nombre no puede ser vacio");
         }
@@ -168,7 +178,13 @@ public class Canal {
          if (video.getCategoria().equals("")){
             throw new RuntimeException("La categoría no puede ser vacía");
         }
-         
+        
+         // un canal no puede tener dos videos con el mismo nomre
+         for (Map.Entry<Integer, Video> v : misVideos.entrySet()){
+             if (v.getValue().getNombre().equals(video.getNombre())){
+                 throw new RuntimeException("El canal ya posee un video con ese nombre");
+             }
+         }
          
         int idVideo = Video.getNuevoId();
         Video vd = new Video(idVideo, 
@@ -178,12 +194,19 @@ public class Canal {
                 video.getFechaPublicacion(), 
                 video.getUrlVideoOriginal(), 
                 video.getCategoria());
+        
+        // si el canal es privado, el video debera serlo tambien
+        // si el canal es publico, el video sera lo definido en el DataType
+         if (this.privacidad == Privacidad.PRIVADO){
+             vd.setPrivacidad(Privacidad.PRIVADO);
+         }
+        
         this.misVideos.put(idVideo, vd);
     }
 
     public void agregarVideoALista(int id, Video video) {
         if (this.misListas.containsKey(id)) {
-            this.misListas.get(video.getId()).agregarVideoA(video);
+            this.misListas.get(id).agregarVideoA(video);
         } else {
             throw new RuntimeException("La lista no pertenece al canal");
         }
@@ -246,7 +269,7 @@ public class Canal {
         if (this.misListas.containsKey(id)) {
             return this.misListas.get(id).listarVideos();
         } else {
-            throw new RuntimeException("El video no pertenece al canal");
+            throw new RuntimeException("La lista de reproduccion no pertenece al canal");
         }
     }
 
@@ -268,11 +291,29 @@ public class Canal {
     }
 
     public void modificarListaDeReproduccion(DtListaDeReproduccion ldr) {
-        this.misListas.get(ldr.getId()).modificar(ldr);
+        if (this.misListas.containsKey(ldr.getId())) {
+            
+            if (this.privacidad == Privacidad.PRIVADO && ldr.getPrivacidad() == Privacidad.PUBLICO){
+                throw new RuntimeException("No se puede hacer publica una lista de reproduccion de un canal privado");
+            }
+            
+            this.misListas.get(ldr.getId()).modificar(ldr);
+        } else {
+            throw new RuntimeException("La lista de reproduccion no pertenece al canal");
+        }
     }
 
     public void modificarVideo(DtVideo video) {
-        this.misVideos.get(video.getId()).modificar(video);
+        if (this.misVideos.containsKey(video.getId())) {
+            
+            if (this.privacidad == Privacidad.PRIVADO && video.getPrivacidad() == Privacidad.PUBLICO){
+                throw new RuntimeException("No se puede hacer publico un video de un canal privado");
+            }
+            
+            this.misVideos.get(video.getId()).modificar(video);
+        } else {
+            throw new RuntimeException("El video no pertenece al canal");
+        }
     }
 
     public ArrayList<DtListaDeReproduccion> obtenerListasEnCategoria(String cat) {
@@ -291,16 +332,24 @@ public class Canal {
                 ret.add(m.getValue().getDt());
             }
         }
-
+        
         return ret;
     }
 
     public DtVideo obtenerDtVideo(int id) {
-        return this.misVideos.get(id).getDt();
+        if (this.misVideos.containsKey(id)) {
+            return this.misVideos.get(id).getDt();
+        } else {
+            throw new RuntimeException("El video no pertenece al canal");
+        }
     }
 
     public Video obtenerVideo(int id) {
-        return this.misVideos.get(id);
+        if (this.misVideos.containsKey(id)) {
+            return this.misVideos.get(id);
+        } else {
+            throw new RuntimeException("El video no pertenece al canal");
+        }
     }
 
     public ArrayList<DtVideo> obtenerVideosEnCategoria(String cat) {
@@ -324,13 +373,16 @@ public class Canal {
     }
 
     public void quitarVideoDeListaDeReproduccion(int idLista, int idVideo) {
-        this.misListas.get(idLista).quitarVideo(idVideo);
+        if (this.misListas.containsKey(idLista)) {
+            this.misListas.get(idLista).quitarVideo(idVideo);
+        } else {
+            throw new RuntimeException("La lista de reproduccion no pertenece al canal");
+        }
     }
 
     public boolean validarListaParticular(String nombreLista) {
-        
         for (Map.Entry<Integer, ListaDeReproduccion> l : misListas.entrySet()) {
-            if (l.getValue().getNombre().equals(nombreLista)){
+            if (l.getValue().getTipo() == TipoListaDeReproduccion.PARTICULAR && l.getValue().getNombre().equals(nombreLista)){
                 return true;
             }
         }
@@ -338,7 +390,11 @@ public class Canal {
     }
 
     public DtValoracion obtenerValoracion(int id, String nickname) {
-        return this.misVideos.get(id).obtenerValoracion(nickname);
+        if (this.misVideos.containsKey(id)) {
+            return this.misVideos.get(id).obtenerValoracion(nickname);
+        } else {
+            throw new RuntimeException("El video no pertenece al canal");
+        }
     }
 
 }
diff --git a/UyTube_aplicacion/src/Logica/Clases/ListaDeReproduccion.java b/UyTube_aplicacion/src/Logica/Clases/ListaDeReproduccion.java
index cf6ba1e1a42559bae64a46d8c2cbc9295062bc5f..b87adb7324208e2609060ad5ceeaee94f331bee8 100644
--- a/UyTube_aplicacion/src/Logica/Clases/ListaDeReproduccion.java
+++ b/UyTube_aplicacion/src/Logica/Clases/ListaDeReproduccion.java
@@ -41,7 +41,7 @@ public class ListaDeReproduccion {
     public static int getNuevoId() {
         return contadorListasDeReproduccion++;
     }
-    public static void agregarCategoria(String cat) {
+    public static void agregarListaPorDefecto(String cat) {
         if (cat.equals("")){
             throw new RuntimeException("No se puede agregar una categoria vacia");
         }
diff --git a/UyTube_aplicacion/src/Logica/Clases/Video.java b/UyTube_aplicacion/src/Logica/Clases/Video.java
index 72403f277033a418cb59a010742c98f6b407c399..43447b10480cec7f8cb2dde5df3d6944171fa548 100644
--- a/UyTube_aplicacion/src/Logica/Clases/Video.java
+++ b/UyTube_aplicacion/src/Logica/Clases/Video.java
@@ -26,7 +26,7 @@ public class Video {
     private static int idActual = 1;
     
     public Video(){
-        
+
     }
     /********************** Constructor *********************/
     public Video(int _id, String _nombre, String _descripcion,Time _duracion, Date _fechaPublicacion,String _urlVideoOriginal,String _categoria ){
@@ -141,7 +141,7 @@ public class Video {
     
     
     public static int getNuevoId(){
-        int nuevoId = idActual ++;
+        int nuevoId = idActual++;
         return nuevoId;        
     }
     
diff --git a/UyTube_aplicacion/src/Logica/main.java b/UyTube_aplicacion/src/Logica/main.java
index 70c1d8fb41879efa7e96e202456c290dd90bcf8f..9fd2eceeae347b30079418c5433b5e5f3c0f9927 100644
--- a/UyTube_aplicacion/src/Logica/main.java
+++ b/UyTube_aplicacion/src/Logica/main.java
@@ -1,7 +1,5 @@
 package Logica;
 
-import Logica.*;
-
 public class main {
     public static void main(String[] args) {