30 Mayo 2011 [DHMO] Descripción del diseño del sistema Descripción general del diseño del sistema DIAGRAMA DE CLASES UML DEL PROYECTO 2 Error! Use the Home tab to apply Título to the text that yo Descripción general del diseño del sistema DESCRIPCIÓN DE CLASES Main.java Detecta si se ha introducido una canción como parámetro y dependiendo de eso inicializa un objeto PlayerWindow por defecto o con ese parámetro. PlayerWindow.java Se encarga de gestionar toda la parte visual del reproductor y de la lista de reproducción. Así mismo desde esta clase se accede a la biblioteca y al editor de tags. Player.java Enlaza la librería del reproductor con la parte visual, implementando los métodos típicos de un reproductor de música. ListaReproducción.java Contiene dos listas, una con las canciones en el orden en el que se añadieron y otra con el orden de la reproducción de la lista. Cuando el reproductor tiene desactivada la opción de aleatorio las dos listas son iguales, pero al activar la opción de aleatorio la segunda se ordena aleatoriamente. Biblioteca Window Representa gráficamente las funcionalidades de la biblioteca. Utiliza un árbol de categorías para navegar por las canciones. Utiliza una tabla para visualizar el contenido de las categorías seleccionadas, cada celda corresponde a un campo, y soportan ordenación alfabética por cada uno de esos campos. La pestaña búsqueda devuelve de forma dinámica los archivos que concuerdan con los elementos buscados y los posiciona en a tabla. EditorTagsWindow Representa la vista de la clase editor, cuyo único método se alimenta de los campos de texto de esta ventana. ConfigBibliotecaWinwow sirve como contenedor de los directorios a explorar por la biblioteca, permitiendo añadir y borrar de esta lista. Album.java Representa el álbum de una canción. Artista.java Representa el artista de una canción. Biblioteca.java Se encarga del funcionamiento de la biblioteca. Cancion.java Contiene todos los datos (título, género, artista, álbum, códec, año, bitrate, canales, pista, duración, ruta, tamaño y carátula) de una canción. EditorTags.java Se encarga de sobrescribir los tags de una canción. ElementoBiblioteca.java Clase de la que heredan los elementos álbum, genero y artista. 3 Error! Use the Home tab to apply Título to the text that yo Descripción general del diseño del sistema Genero.java Representa el género de una canción. Hilo.java Esta clase hereda de Thread. Implementa un hilo de ejecución cuyo cometido es cargar en la biblioteca una lista de archivos o directorios. LectorSAX.java Clase que implementa un párser con SAX para construir un objeto biblioteca desde un xml. LectorTags.java Clase que proporciona los métodos para construir canciones desde archivos de audio leyendo su meta-información de las etiquetas en el archivo. DESCRIPCIÓN DE LA ESTRUCTURA XML DE LA BIBLIOTECA El XML generado de la Biblioteca de DHMO se estructura de la siguiente manera: Primero una lista con todos los géneros de música que hay disponibles en la Biblioteca. Dicha lista comienza con la etiqueta <generos> y finaliza con </generos>. Cada género viene definido por las etiquetas <genero> y </genero>, de la siguiente manera: <generos> <genero> Genero 1 </genero> <genero> Genero 2 </genero> <genero> Genero 3 </genero> <genero> Genero 4 </genero> <genero> Genero .. </genero> <genero> Genero n </genero> </generos> A continuación comienza una lista de artistas, que contiene todos los artistas disponibles en la Biblioteca. Dicha lista viene etiquetada con los campos <artistas> y finaliza con </artistas>. Dentro de este listado de artistas, cada artista está identificado unívocamente con las etiquetas <artista nombre="nombre_de_artista”> y </artista>. <artistas> <artista nombre="artista 1"> //info artista 1 </artista> <artista nombre="artista 2"> //info artista 2 </artista> <artista nombre="artista n"> //info artista n </artista> </artistas> 4 Error! Use the Home tab to apply Título to the text that yo Descripción general del diseño del sistema Cada artista, además, contiene todos los álbumes que le pertenecen, identificados con <album nombre="nombre_de_album"> y </album>. <artista nombre ="artista n"> <album nombre="album 1"> //info album 1 </album> <album nombre="album 2"> //info album 2 </album> <album nombre="album n"> //info album n </album> </artista> Cada álbum contiene todas las canciones incluidas en él y que estén en la biblioteca, identificados por las etiquetas <cancion> y </cancion> y la ruta donde estan localizadas <album nombre ="album n"> <cancion path="path 1"> //info cancion 1 </album> <cancion path="path 2"> //info cancion 2 </album> <cancion path="path n"> //info cancion n </album> </album> Para finalizar, cada canción contiene su respectiva información, es decir, los TAGs entre las correspondientes etiquetas <titulo>, <codec>, <canales>, <bitrate>, <duracion>, <pista>, <anio>, <genero> y sus cierres correspondientes, de la siguiente manera: <cancion path = "path n"> <titulo> nombre_titulo </titulo> <codec> nombre_codec </codec> <canales> num_canales </canales> <bitrate> tipo_bitrate </bitrate> <duracion> duracion_cancion </duracion> <pista> num_pista </pista> <anio> num_anio </anio> <genero> nombre_genero </genero> </cancion> 5 Error! Use the Home tab to apply Título to the text that yo Descripción general del diseño del sistema DESCRIPCIÓN DE LA ESTRUCTURA XML DE LA BIBLIOTECA: EJEMPLO <?xml version="1.0"?> <biblioteca> <generos> <genero><![CDATA[Punk]]></genero> <genero><![CDATA[Drum & Bass]]></genero> <genero><![CDATA[Alternative Rock]]></genero> <genero><![CDATA[Pop]]></genero> </generos> <artistas> <artista nombre="Blink 182"> <album nombre="Dude Ranch"> <cancion path="C:\hlocal\Blink-182-Dammit.mp3"> <titulo><![CDATA[Dammit]]></titulo> <codec><![CDATA[MPEG-1 Layer 3]]></codec> <canales><![CDATA[Joint Stereo]]></canales> <bitrate><![CDATA[128]]></bitrate> <duracion><![CDATA[165.0]]></duracion> <pista><![CDATA[]]></pista> <anio><![CDATA[97]]></anio> <genero><![CDATA[Punk]]></genero> </cancion> </album> </artista> <artista nombre="Pendulum"> <album nombre="Immersion"> <cancion path="C:\hlocal\Pendulum-Watercolour.mp3"> <titulo><![CDATA[Watercolour]]></titulo> <codec><![CDATA[MPEG-1 Layer 3]]></codec> <canales><![CDATA[Joint Stereo]]></canales> <bitrate><![CDATA[320]]></bitrate> <duracion><![CDATA[288.0]]></duracion> <pista><![CDATA[1]]></pista> <anio><![CDATA[2010]]></anio> <genero><![CDATA[Drum & Bass]]></genero> </cancion> </album> </artista> <artista nombre="System Of A Down"> <album nombre="Chop Suey (Promo CD Single)"> <cancion path="C:\hlocal\System-of-a-Down-Chop-Suey.mp3"> <titulo><![CDATA[Chop Suey]]></titulo> <codec><![CDATA[MPEG-1 Layer 3]]></codec> <canales><![CDATA[Stereo]]></canales> <bitrate><![CDATA[128]]></bitrate> <duracion><![CDATA[211.0]]></duracion> <pista><![CDATA[1]]></pista> <anio><![CDATA[2001]]></anio> <genero><![CDATA[Alternative Rock]]></genero> </cancion> </album> </artista> <artista nombre="The Corrs"> <album nombre="Unplugged"> <cancion path="C:\hlocal\The-Corrs-Toss-The-Feathers.mp3"> <titulo><![CDATA[Toss The Feathers]]></titulo> <codec><![CDATA[MPEG-1 Layer 3]]></codec> <canales><![CDATA[Stereo]]></canales> <bitrate><![CDATA[320]]></bitrate> <duracion><![CDATA[194.0]]></duracion> <pista><![CDATA[4]]></pista> <anio><![CDATA[2000]]></anio> <genero><![CDATA[Pop]]></genero> </cancion> </album> </artista> </artistas> </biblioteca> 6 Error! Use the Home tab to apply Título to the text that yo