Está en la página 1de 6

UNIVERSIDAD DE CÓRDOBA

FACULTAD DE INGENIERÍAS

PROGRAMA INGENIERÍA DE SISTEMAS

ASIGNATURA PROGRAMACIÓN III

SEMESTRE IV

TRABAJO INTERFACES EN EVENTOS CON SERIALIZACION.

En el presente trabajo deben diseñar en UML e implementar en Java las clases


necesarias para una aplicación de ventana, considerando el siguiente diseño
para la misma:

 En la entrada (JTextField) el usuario debe ingresar un directorio existente.

 En la entrada (JTextField) se ingresa un conjunto de extensiones de


archivos, las cuales se separan entre sí por un punto y coma; así por ejemplo:
doxc;txt;pdf, considerando que no hay espacios en esta entrada, pero si la
hubiere estos espacios deberán ser eliminados automáticamente,

 Cuando el usuario haga click en el botón buscar, se debe llenar un JTree


(cuadro blanco más grande en el centro de la ventana) con los nombres de

Luis Roberto Olascoaga


los directorios y archivos contenidos en estos, así como también con los
nombres de los subdirectorios y sus archivos (recursivamente).

 Para cada directorio, primero se muestra su nombre, luego la lista de sus


archivos y después la lista de sus subdirectorios (los cuales además se
muestran en este mismo orden).

 Cada subdirectorio se muestra con su nombre relativo; es decir, sin incluir el


nombre de su directorio padre.

 Los archivos para cualquier directorio deben tener una extensión igual a
alguna de las ingresadas por el usuario.

 Considere que esta información será enviada a una entidad de seguridad del
estado; para ello el usuario selecciona el destino desde un JComboBox, que
tiene en su modelo las siguientes opciones:

Policía
Tránsito
Gaula
Fiscalía
Contraloría
Procuraduría
 Con el botón exportar el usuario podrá guardar la lista de los archivos
encontrados en un archivo externo, que se debe seleccionar usando un
dialogo JFileChoooser.

 El archivo externo generado debe ser producido por un proceso de


serialización Java, considerando para ello la siguiente estructura:

o Número de la entidad.

o Nombre de directorio.

o Lista nombre de archivos del directorio.

o Subdirectorios del directorio.

o Línea de finalización de directorio.

Luis Roberto Olascoaga


 El número de la entidad será de acuerdo al destino seleccionado así:

Entidad Numero
Policía Nacional 112
Policía de Tránsito 127
Gaula – Antiextorsión 147
Fiscalía General de la Nación 122
Contraloría General de la Nación 018000910060
Procuraduría General de la Nación 018000940808

 Para la lista de nombres de archivos considere que cada archivo va en una


línea diferente (una debajo de la otra) y que el nombre del archivo se escribe
añadiéndole un símbolo de tabulador (‘\t’) al principio; esto para diferenciarlo
de los nombres de subdirectorios (que no empiezan con el tabulador).

 La línea de finalización del directorio es una cadena formada por 10


asteriscos (**********).

 Para cada subdirectorio se sigue recursivamente la misma estructura; es


decir, nombre del subdirectorio, listas de archivos, subdirectorios y línea de
finalización. Considere por ejemplo la siguiente imagen:

 La estructura de archivos y directorios mostrada en la ventana anterior, debe


ser serializada considerando el siguiente orden:
Luis Roberto Olascoaga
122
D:\Prueba
Archivo1.txt
Archivo2.txt
Sub_Dir1
Archivo3.txt Fin de Sub_Dir2
Sub_Dir2
Archivo4.txt
********** Fin de Sub_Dir1
**********
Sub_Dir3 Fin de Sub_Dir3
Archivo5.txt
Archivo6.txt
********** Fin de D:\Prueba
**********

 Con el botón cargar el usuario podrá seleccionar un archivo anteriormente


guardado y el programa deberá deserializarlo, mostrando en la ventana el
contenido del archivo seleccionado; es decir, que en el JTree se muestra el
directorio y los subdirectorios y sus respectivos archivos; además de mostrar
en el JComboBox el nombre del destino, a partir del número de destino leído
desde el archivo.

 Tanto en el botón exportar como en el botón cargar, el JFileChoooser debe


permitir escoger solo archivos de extensión .ser

 Para el diseño de la ventana puede considerar los siguientes controles con


los nombres respectivos mostrados en la imagen siguiente:

Luis Roberto Olascoaga


 Para la implementación considere usar la interface Seriaizable explicada en
clase, además de la siguiente interface IBuscar propia:

 La descripción de los métodos de esta interface es la siguiente:

Método Descripción
Este método o evento se dispara cada vez que se
encuentra un archivo que tenga algunas de las
OnArchivo extensiones solicitadas por el usuario. El parámetro
Archivo contiene solo el nombre del archivo en
cuestión; es decir, sin incluir su directorio.
Este evento se dispara cada vez que se encuentra un
directorio o subdirectorio. El parámetro Dir contiene solo
el nombre relativo del directorio en cuestión; es decir,
OnInicioDir
sin incluir su directorio padre. Este evento en orden de
ejecución o de llamado siempre precede al evento
OnArchivo.
Este evento es llamado siempre que se termine de
OnFinDir procesar un directorio o subdirectorio (lo que incluye
todos sus archivos y subdirectorios recursivamente).

 Deben crear una clase que haga la búsqueda de archivos y directorios


(usando la clase File) y que mediante una instancia de la interface IBuscar,
pueda ejecutar los métodos de esta última en el orden y con las
especificaciones descritas anteriormente.

 La clase de la ventana debe realizar la interface IBuscar para llenar en


tiempo de ejecución al control JTree con la información buscada.

 Debe haber una tercera clase que haga la serialización de la información


paralelo al llenado del JTree, que además debe implementar el proceso de

Luis Roberto Olascoaga


carga o lectura del archivo. Para este efecto es conveniente que la instancia
de esta última clase sea atributo de la ventana (relación de composición).

 Es necesario efectuar el diseño UML de clases con todas las relaciones


establecidas entre ellas.

 La siguiente es una imagen de captura del programa en ejecución.

Luis Roberto Olascoaga

También podría gustarte