Implementación CAPÍTULO 4

Documentos relacionados
Análisis y diseño del sistema CAPÍTULO 3

Capitulo 5. Implementación del sistema MDM

Introducción CAPÍTULO 1

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts

Capítulo 5. Implementación del Sistema de Inscripciones

OBJETIVO: Introducción al editor de páginas web Macromedia Dreamweaver.

GUÍA TÉCNICA. Desarrollo de Proyectos en Plataforma Liferay en el Gobierno de Extremadura

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

Manual del Profesor Campus Virtual UNIVO

Base de datos en la Enseñanza. Open Office

Instalación y configuración inicial del sistema SIU-Kolla Versión 3.0.0

TUTORIAL DE INSTALACIÓN Y CONFIGURACIÓN SERVIDOR LOCAL (MYSQL) Facturar en Línea

Capitulo III. Diseño del Sistema.

Informática I Notas del curso

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Uso de HIBERNATE en una aplicación WEB DESARROLLO DE APLICACIONES PARA LA WEB II

Manual etime para supervisores

En esta unidad añadiremos información sobre EXT3 y trabajaremos con aspectos visibles que nos proporcionan estos sistemas de archivos.

SISTEMA DE GESTIÓN DE BASE DE DATOS (Database Management System (DBMS))

Manual de iniciación Aula Virtual del IES El Greco

Descripción de Arquitectura Repositorio de metadatos de componentes de software

Índice 1 Instalación de la herramienta 2 Descripción de la herramienta 2 Arranque de la aplicación 3 Proyecto 4 Diagrama de clases 5

S I S T E M A E N L Í N E A

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

El módulo consta de una serie de unidades en las que se especifican los objetivos, contenidos y actividades.

Figura 4.1 Clasificación de los lenguajes de bases de datos

PROCESO GESTIÓN ADMINISTRATIVA INSTRUCTIVO TÉCNICO ALISTAMIENTO SERVIDORES GESTIÓN DOCUMENTAL

SISTEMA DE APARTADO DE SALAS PARA EVENTOS

LiLa Portal Guía para profesores

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

Manual para Declaración Anual

Sistema Integral SIEA Presentación de Informe Académico de Proyectos de Investigación GUÍA DE USUARIO

Sesión No. 2. Contextualización: Nombre de la sesión: Paquetería ASPEL - COI PAQUETERÍA CONTABLE

Concepto de sistema operativo

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Hostaliawhitepapers. Las ventajas de los Servidores dedicados. Cardenal Gardoki, BILBAO (Vizcaya) Teléfono:

MANUAL DE USUARIO DEL SISTEMA PARA EL REDACTOR

Modulo 1 El lenguaje Java

APLICACIONES WEB GOOGLE ANAYLITICS

Módulo 2. Inicio con Java

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

1. VIRTUALIZACION DEL PROCESO REAL.

SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública

Sistema de aprendizaje por refuerzo para la mejora del rendimiento del alumno en prácticas

Capítulo III. Análisis y diseño.

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales.

Guía de instalación del sistema Iglesia HOY en una red local de Windows

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Organizando mi clase en el GES Material de apoyo

Para poder acceder al sistema sólo deberá ingresar la siguiente liga desde el navegador de su preferencia:

UNIVERSIDAD TECNOLOGICA CENTROAMERICANA

Manual de usuario. Modulo Configurador V.1.0.1

VIDEOTRACK - Servicio de videofilmación georeferenciada para el seguimiento de Proyectos y Obras lineales y su posterior explotación

CENTRO DE INVESTIGACIÓN CIENTÍFICA Y DE EDUCACIÓN SUPERIOR DE ENSENADA, BAJA CALIFORNIA Departamento de Cómputo / Dirección de Telemática ÍNDICE

4 ARQUITECTURA DE COMUNICACIONES

Xerox 700 Digital Color Press con Integrated Fiery Color Server. Impresión de datos variables

Podemos descargar la distribucion de gnu/linux de los repositorios de Ubuntu

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Capítulo 7. Implementación del Sistema

Compilación y ejecución de programas en Java.

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

podemos enfocar al funcionamiento del robot, es decir la parte de electrónica. Para que el

CAPÍTULO 3 Servidor de Modelo de Usuario

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

EDICIÓN Y FORMATO (II)

PROGRAMACIÓN ORIENTADA A OBJETOS

4. METODOLOGÍA. 4.1 Materiales Equipo

Ambiente Virtual de Comercio Electrónico B2B para la Comunidad Virtual de Negocios del departamento del Cauca

ANEXO. PROCESOS PARA MANEJAR EL COSTO DE LO VENDIDO EN ASPEL-SAE

Web Crawler en eva.fing.edu.uy

Estimado usuario. Tabla de Contenidos

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.

Enviar solicitud. Procedimiento

TALLER No. 1 Capitulo 1: Conceptos Básicos de Bases de datos

EXTENSIÓN DE UML PARA APLICACIONES WEB

Cómo puede mi organización registrar plazas de trabajo?

envía al browser. El browser despliega el archivo.

MANUAL DE USUARIO UTILIZACIÓN DE LA EXTRANET

Manual del Administrador del Sitio del Gestor de Contenidos de Revistas Científicas de Grupo Aula Médica

CÓMO MANEJAR SU NUEVO SITIO WEB SOBRE DRUPAL Manual técnico y de usuario. Pontificia Universidad Javeriana Grupo PSU CDI

MANUAL DE CÓMO REALIZAR ANEXOS A LAS FACTURAS DE TRATAMIENTO DE PRÓTESIS

Formularios HTML. Elementos de Programación y Lógica

USO DEL COMANDO. Fdisk. Autor :. Alejandro Curquejo. Recopilación :. Agustí Guiu i Ribera. Versión :.. 1.0

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

Qué es una máquina virtual?

FORMACIÓN DE EQUIPOS DE E-LEARNING 2.0 MÓDULO DE DISEÑO Y PRODUCCIÓN DE MATERIALES UNIDAD 6 B

Guía de uso de Moodle para participantes

Capítulo II. Arquitectura del Software

Acostumbrandote a tu asistente personal Broccoli

Indice Todos los derechos reservados Advisionario, S.A. de C.V.

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

Manual de Usuario: Página Web.

MANUAL DE USUARIO. Aplicación: Consulta Móvil

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

1.2 Qué es un Sistemas de Información Geográfica?

Tema: INSTALACIÓN Y PARTICIONAMIENTO DE DISCOS DUROS.

Tablas dinámicas. Tablas dinámicas

Manual de Instrucciones

Transcripción:

Implementación CAPÍTULO 4 55

CAPÍTULO 4 Implementación En este capítulo se especifican los detalles del desarrollo, las herramientas utilizadas y los diagramas de paquetes. Todas las clases fueron programadas específicamente para este proyecto excepto la clase de LuceneIndexer tomada de las notas del curso de Administración de la información de Carlos Proal [Proal, 2005] 4.1 Componentes utilizadas durante el desarrollo. Para que la aplicación funcione adecuadamente es necesario contar con los siguientes componentes: Hibernate 3.0.5. Se utilizó para la comunicación entre el lenguaje de programación Java y la base de datos en este caso MySQL Server 4.1.14. Disponible para su descarga en www.hibernate.org. Posteriormente se generaron las clases y archivos de mapeo de los objetos a las tablas, se explicarán más a detalle posteriormente. Apache Tomcat 5. De acuerdo al contexto de nuestra aplicación es necesario un contendor de servlets y JSPs, estos últimos son especificaciones de Sun Microsystems para entorno web. Los servlets son programas desarrollados en Java. Para el caso de los JSPs, Tomcat cuenta con un compilador Jasper que se encarga de compilarlos para convertirlos en servlets. Cabe destacar que Apache es el servidor web y Tomcat es el contenedor. Esta escrito en Java por lo que funciona en cualquier sistema operativo que disponga de una maquina virtual. Está disponible para su descarga en www.apache.org. Para la configuración necesaria para la interacción con Hibernate véase capítulo 1.2.3 56

MySQL Server 4.1.14 (apple-darwin 8.2.0), este componente ofrece un servidor de bases de datos SQL. Es el encargado de almacenar los datos persistentes de la aplicación. Disponible para su descarga desde www.mysql.com. Para el funcionamiento de este servidor es necesario obtener el conector de Java a MySQL. Disponible en la misma URL mencionada anteriormente, veáse capítulo 1.2.3 Apache Lucene 1.4.3: Tal como se mencionó anteriormente en el capítulo 2, es una herramienta de RI. Se encarga de dos funciones, la primera es crear un documento integrado propiamente del código fuente del programa, descripción y nombre del usuario que guardó el programa. Cabe aclarar que Lucene se encarga de actualizar convenientemente sus archivos de índices. Y la segunda función es realizar consultas sobre los documentos generados. Por ser un API de Java es necesario incluirlo en el ext de nuestro compilador de Java. Disponible para su descarga en: http://lucene.apache.org Apache FileUpload 1.1. Este API es el encargado de efectuar la tarea de subir los archivos al servidor. Este API es implementado en la clase GuardarProgramaController en las siguientes líneas de código: // Se crea los objetos capaces de parsear la petición FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); // Número máximo de bytes que se permitirán en el archivo upload.setsizemax(yourmaxrequestsize); // Se recibe la lista de los archivos a subir List /* FileItem */ items = upload.parserequest(request); // Se crea el archivo físico en el servidor File uploadedfile = new File(...); 57

// Se escribe el archivo al disco item.write(uploadedfile); Este API utiliza a su ves utiliza otra herramienta auxiliar commons-io-1.1.jar estas dos se encuentran disponibles para su descarga en http://jakarta.apache.org/commons/fileupload/ Para colorear el texto se buscaron varias alternativas para lograr este objetivo, primero se pensaba implementar a mano el parser necesario para obtener el texto de manera que se quería, se observó la existencia de herramientas gratuitas que ofrecían esta utilidad. Después de consultar algunas de estas herramientas se optó por utilizar la siguiente por su facilidad de implementación: Java2Html 5 de Markus Gebhard. Es un API de Java disponible para su descarga en http://www.java2html.de/ /* Se crea una instancia de PrintWriter para escribir el archivo*/ PrintWriter pr = new PrintWriter(htmlFile); // se asignan las opciones de conversión del archivo JavaSourceConversionOptions opciones = JavaSourceConversionOptions.getDefault(); opciones.setshowlinenumbers(true);//mostrar número de línea opciones.setshowfilename(true); //mostrar nombre /* para convertirlo se manda un String con el código Java y regresa un String en formato HTML */ text = Java2Html.convertToHtml(text, opciones); 58

// se imprime en el archivo y se cierra. pr.println(text); pr.close(); Java jdk1.5 release3. Componente indispensable para la ejecución y desarrollo de aplicaciones Java. Contiene las herramientas de desarrollo como por ejemplo el compilador (javac) y el depurador o debugger (jbd). Además de ser utilizado en el desarrollo se utiliza para compilar los programas a través de un proceso bash que es llamado en tiempo de ejecución. // se crea el string con el comando a realizar String compilar = "javac " + allruta; // se se crea un runtime para poder ejecutar el proceso Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(compilar); Macromedia Dreamweaver MX 2004. Se utilizó para la creación de las formas y los archivos JSPs del sistema. Se incluyen unas animaciones realizadas en Macromedia Flash MX 2004. Estos no son software gratuito, pero se puede obtener una versión de prueba. Disponible en http://www.macromedia.com/ Borland JBuilder 2005. Es un sofisticado y poderosa entorno de desarrollo (IDE), ayuda a la generación automática de código, como de diagramas de clase, permite ver el código con mayor legibilidad y estructura. Disponible en: http://www.borland.com/us/products/jbuilder/index.html 59

4.2 Procesamiento de Archivo de Java El procesamiento del archivo de Java es el que tiene una interacción con la mayoría de las herramientas como se observa en la figura 4.1. Se obtiene el archivo del disco local del usuario a través del FileUpload y lo guarda en el sistema de archivos del disco duro del servidor. Al tener el archivo lo trata de compilar a través de un proceso bash, llamado por la aplicación, en caso de tener algún error de compilación borra el archivo y notifica al usuario de lo que sucedio, en el caso contrario a este archivo se le aplica un parser con la herramienta Java2Html para generar el código coloreado; al obtener el código coloreado en un archivo en formato html, se agrega el programa de Java al índice de Lucene para futuras consultas y finalmente se almacena la información relacionada con el programa en la base de datos del sistema a través de la interacción con Hibernate. Figura 4.1 Procesamiento de Archivo de Java 60

4.3 Diagrama de paquetes Los paquetes ofrecen un mecanismo de organización MVC como se había mencionado. Continuación se explica más a detalle cada paquete: 4.3.1 Paquete bean Figura 4.2 Paquete Bean Este paquete contiene los beans Clasificación, Programa y Usuario, así como los archivos.hbm.xml necesarios para el mapeo a la base de datos. Los archivos que se utilizan para el mapeo se encuentran en el Apéndice B. 4.3.2 Paquete model En estas clases se encuentra la lógica aplicativa del sistema. ClasificacionModel, UsuarioModel y ProgramaModel contienen los métodos que directamente interactúan con Hibernate (Agregar, Borrar, Buscar). La clase Hibernate contiene la configuración y se encarga de la conexión con el ORM Hibernate. 61

Figura 4.3 Paquete Model 4.3.3 Paquete web Figura 4.4 Paquete Web 62

En este paquete se encuentran los servlets encargados de la comunicación con el modelo y la vista (JSPs). BorrarProgramaController. Se encarga de borrar un programa de la base de datos. Este servlets es llamado a través de la forma que se encuentra en programas.jsp o programasadmin.jsp. Utiliza una instancia de LuceneIndexer para borrar del índice al programa que quiere ser borrado. BuscarCategoríaController. Se encarga de recuperar los programas existentes, en determinada clasificación. Este servlet es llamado a través de buscar.jsp y los datos recuperados son mostrados en resultados.jsp BuscarLuceneController: Se encarga de las consultas de texto. Comunica a LuceneIndexer del paquete utils con el servlet para obtener los resultados de la búsqueda. Este servlet es llamado en buscar.jsp, la respuesta es desplegada en resultados.jsp ClasificacionController: Se encarga de recuperar las categorías existentes, su clasificación y sus programas. Este servlet es llamado a través del menú principal Clasificaciones, los datos recuperados son mostrados en clasificaciones.jsp GuardarProgramaController: Este es el servlet que ejecuta más tareas: sube el archivo al servidor, lo compila, si no contienen errores de compilación, crea la referencia de este en la base de datos, lo agrega al índice de archivos para futuras consultas por texto, y finalmente genera el archivo html con el código coloreado. Este servlet es llamado y respondido en el mismo jsp: programas.jsp. Como se pudo observar hace uso de LuceneIndexer del paquete utils. MisProgramasController: Este servlet muestra los programas, en el caso de estudiantes solamente muestra programas del mismo; y para el caso del administrador recupera todos los programas del repositorio. Este servlet es llamado en el menú principal, para el caso de estudiantes en Mis Programas, para el caso de Administradores en el menú de Programas. Los datos recuperados son mostrados en: programas.jsp y programasadmin.jps 63

respectivamente. Hace uso de la clase Page del paquete utils para mostrar los resultados paginados de 10 en 10. NuevaClasifiacionController: Este servlet se encarga de crear una nueva clasificación. Es llamado por el administrador cuando agrega una clasificación desde clasificaciones.jsp la respuesta es enviada al mismo jsp. NuevoAdminController: Este servlet se encarga del registro de un nuevo administrador. Es llamado por el administrador cuando agrega un usuario nuevo desde usuarios.jps, la respuesta es enviada al mismo jsp. PaginasController: Este servlet muestra los resultados paginados en listas de 10 en 10 de usuarios, programas y resultados. Es llamado cada vez que se hace alguna acción sobre los jsps de usuarios.jsp, resultados.jsp y usuarios.jsp UsuarioLoginController: Este servlet es llamado desde el index.html. La respuesta de la acción es mostrada en logexitoso.jsp en caso de haber tenido una autentificación exitosa por el contrario si hubo algún error la respuesta es enviada a error..jsp UsuarioRegistroController: Este servlet se encarga de hacer el registro correspondiente con el usuario. Es llamado en la pagina registro.html y la respuesta a esta acción es mostrada en logexitoso.jsp en caso de haber tenido un registro exitoso o error.jsp en caso de hacer encontrado algún error en este UsuarioController: Este servlet muestra a los usuarios existentes en el repositorio, este es disponible solo para usuarios administrador. Este servlet es llamado en el menú principal Usuarios. Los datos recuperados son mostrados en: usuarios.jsp. Hace uso de la clase PaginasController y Page del paquete utils para mostrar los resultados paginados de 10 en 10. VerBorrarClasificacionController: Este servlet permite ver los programas de determinada clasificación, independientemente de poder borrar esta clasificación. Este servlet es llamado desde clasificaciones.jsp y la respuesta es enviada a programasadmin.jsp 64

VerBorrarUsuarioController: Este servlet tiene dos funciones: la primera es permitir ver los programas de algún usuario determinado. La segunda función es permitir borrar el usuario con todos sus respectivos programas. Este servlet es llamado desde usuarios.jsp y la respuesta es enviada a programasadmin.jsp 4.3.4 Paquete utils Figura 4.5 Paquete Util. Luceneindexer: Implementado originalmente por Carlos Proal [Proal, 2005]. Se tomo esta clase y se adapto para que funcionara con objetos de tipo Programa. La clase recibe objetos programa, los convierte a documentos para ser agregados al índice, y hace operaciones de recuperación. Page: Esta clase es el objeto pagina, la cual agrupa objetos (usuarios o programas) de 10 en 10 para su mejor visualización en lugar mostrar una lista de objetos muy larga. 65

4.4 Interacción Java, Hibernate y MySQL. La interacción de Java con MySQL, se lleva a cabo totalmente a través de Hibernate, ahora se mostrará como está la base de datos realmente: Tabla Clasificación: Figura 4.6 Tabla Clasificación Tabla Programa: Figura 4.6 Tabla Programa 66

Tabla Usuario: Figura 4.8 Tabla usuario. Ahora bien después de tener las dos perspectivas, se pueden percibir diferencias entre los objetos y la base de datos. (Para diferenciar el objeto Java de la tabla en la base de datos, ahora nos referiremos a todo lo referente a la base de datos con nombres en letras mayúsculas). Clasificación tiene 6 atributos mientras que CLASIFICACIÓN tiene solo 4, se puede observar en la Figura 4.8 que los 2 atributos que faltan están relacionados en el primer caso hijas se asocia con otras tuplas directamente por el atributo PADRE_ID, para el caso de programas está definido en PROGRAMA en la columna CLASIFICACIÓN. Se puede observar que la recuperación de objetos implicaría una serie de operaciones SQL un tanto laboriosas para poder recuperar el objeto completo. Si ahora en lugar de buscar se quisiera borrar todo lo relacionado con alguna clasificación padre, sería aun más complicado. Sin embargo al manejar la persistencia con Hibernate estás operaciones se vuelven sencillas. Como ya se vio en el capítulo 2. 67

Figura 4.9 Relación Objeto Tabla Clasificación Para el caso de Programa se observa (Figura 4.9) que la tabla tiene igual numero columnas que la clase de Java tiene de atributos. Esto se debe a que las relaciones con los objetos Clasificación y Programa es de uno a muchos. Figura 4.10 Relación Objeto Tabla Programa 68

Para el caso de usuario (Véase Figura 4.10) se observa la situación similar a Clasificación la clase tiene más atributos que la tabla, debido a que se está asociando a muchos programas, el atributo programas se ve relacionado con el id de USUARIO Figura 4.11 Relación Objeto Tabla Usuario 4.5 Diagramas de clase Los diagramas de clase nos muestran la representación de las clases en el sistema, incluyendo las definiciones de los atributos y las operaciones. Para ver los diagramas del sistema véase Apéndice C. 69