Académique Documents
Professionnel Documents
Culture Documents
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
PALABRAS CLAVE
Diagrama Diseo Editor Interconexin Objeto Entorno Colaborativo Web Semntica AJAX Grficos Vectoriales GraphML Modelo-Vista-Controlador Struts
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
RESUMEN
La aplicacin consta de dos partes: cliente y servidor. La parte servidor se desarrollar mediante el patrn Modelo-VistaControlador (MVC) junto con el empleo de diversas tecnologas de Web Semntica que aporten extensibilidad y simplifiquen en la medida de lo posible el diseo del modelo de datos y de comportamiento que servir de lenguaje comn entre el cliente y el servidor. En cuanto a la parte cliente el objetivo es que sea completamente independiente de la parte servidor y a ser posible independiente del navegador; preferiblemente ser desarrollada mediante AJAX con el fin de lograr un entorno visual ms amigable para el usuario, similar a las aplicaciones tpicas de escritorio, que adems no requiera ninguna instalacin adicional por parte del usuario. Tambin se valorar la viabilidad de implementar un entorno colaborativo dnde varios usuarios puedan interaccionar simultneamente sobre el mismo diagrama de forma similar a las posibilidades que ofrece una pizarra compartida. Respecto a los requisitos funcionales, bsicamente se espera conseguir la misma funcionalidad que cualquier otra aplicacin de diseo de diagramas, circuitos, redes, etc. Aadiendo la posibilidad de disear nuevos objetos y tecnologas segn las necesidades de los usuarios del entorno. La principal ventaja reside en la ubicuidad y disponibilidad propias de un entorno de este tipo, que permite que el usuario acceda a sus contenidos, guarde sus progresos y comparta sus diagramas desde cualquier ordenador con conexin a Internet.
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
HISTRICO DE VERSIONES
Versin Fecha Resumen de los cambios producidos
Estructura y formato. Estudio de viabilidad. Tecnologas, libreras y herramientas. Prototipos preliminares del cliente. Anlisis y Diseo preliminares. Primer borrador completo. Versin definitiva de este documento.
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
TABLA DE CONTENIDOS
PALABRAS CLAVE.................................................................................................... 2 RESUMEN.................................................................................................................. 4 HISTRICO DE VERSIONES ...................................................................................... 6 TABLA DE CONTENIDOS .......................................................................................... 8 NDICE DE FIGURAS ............................................................................................... 12 NDICE DE TABLAS ................................................................................................. 14 CAPTULO 1: MEMORIA ......................................................................................... 18
1.1. Agradecimientos .......................................................................................................19 1.2. Objetivos .....................................................................................................................20 1.3. Motivacin ..................................................................................................................21 1.4. Estructura de la Documentacin...........................................................................22 1.5. Evolucin del Proyecto ............................................................................................23 1.6. Tecnologas.................................................................................................................24
1.6.1. XML............................................................................................................................... 25 1.6.2. XML Schema............................................................................................................... 27 1.6.3. GraphML ..................................................................................................................... 28 1.6.4. JavaScript ................................................................................................................... 29 1.6.5. AJAX y JSON............................................................................................................... 31 1.6.6. CSS ............................................................................................................................... 33 1.6.7. JEE ................................................................................................................................ 34 1.6.8. Struts ............................................................................................................................. 35
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
10
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
11
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
NDICE DE FIGURAS
Fig. 2-1. Espacio de simulacin de DomoSim-TPC .....................................................54 Fig. 2-2. Arquitectura de DomoSim-TPC .......................................................................54 Fig. 2-3. Crear componente en DomoEdit ..................................................................55 Fig. 2-4. Diseo de ejercicios en DomoEdit..................................................................55 Fig. 2-5. Chequear conexin en DomoApplet ...........................................................56 Fig. 2-6. Solucin de un ejercicio en DomoApplet.....................................................56 Fig. 3-1. Diagrama de Casos de Uso.............................................................................83 Fig. 3-2. Diagrama de Clases (Preliminar) ..................................................................107 Fig. 3-3. Estructura General de la Interfaz de Usuario..............................................115 Fig. 3-4. Interfaz de Usuario 1: Gestionar Diagramas (R1) .......................................117 Fig. 3-5. Interfaz de Usuario 2: Disear Diagramas (R2) ...........................................117 Fig. 3-6. Interfaz de Usuario 3: Gestionar Componentes (R3).................................118 Fig. 3-7. Interfaz de Usuario 4: Disear Componentes (R4).....................................118 Fig. 3-8. Interfaz de Usuario 5: Gestionar Cuentas de Usuario (R5) .......................119 Fig. 3-9. Modelo de Navegacin de la Interfaz de Usuario ...................................120 Fig. 3-10. Prototipo 1: Interconexin de Componentes ..........................................126 Fig. 3-11. Prototipo 2: Formato de la Interfaz de Usuario ........................................127 Fig. 3-12. Prototipo 3: Integracin de capas del Sistema .......................................128 Fig. 4-1. Diagrama de Paquetes ..................................................................................135 Fig. 4-2. Paquete model.............................................................................................136 Fig. 4-3. Paquete model.persistence.......................................................................137 Fig. 4-4. Paquete model.graphml ............................................................................138 Fig. 4-5. Paquete common........................................................................................139 Fig. 4-6. Paquete controller .......................................................................................140 Fig. 4-7. Paquete view ................................................................................................141 Fig. 4-8. Interaccin Vista Controlador .....................................................................143 Fig. 4-9. Interaccin Modelo Persistencia ...............................................................144 Fig. 4-10. Procesar archivo GraphML ..........................................................................145 Fig. 4-11. Diagrama Entidad-Relacin ........................................................................146 Fig. 4-12. Diagrama de Componentes.......................................................................176 Fig. 7-1. Formulario de conexin ..................................................................................327 Fig. 7-2. Crear usuario.....................................................................................................328 Fig. 7-3. Datos de la cuenta de usuario .....................................................................329 Fig. 7-4. Crear diagrama ...............................................................................................330 Fig. 7-5. Consultar diagramas .......................................................................................331 Fig. 7-6. Gestionar permisos sobre diagramas ..........................................................332 Fig. 7-7. Edicin de diagramas.....................................................................................334
12
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
13
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
NDICE DE TABLAS
Tabla 3.2-1. Actor 1: Usuario Registrado.......................................................................84 Tabla 3.2-2. Actor 2: Propietario.....................................................................................84 Tabla 3.2-3. Actor 3: Colaborador.................................................................................84 Tabla 3.2-4. Caso de Uso 1: Gestionar Diagramas (R1) ............................................85 Tabla 3.2-5. Escenario 1.1: Alta, baja y modificacin de diagramas (R1.1) .........85 Tabla 3.2-6. Escenario 1.2: Buscar diagramas (R1.2)..................................................86 Tabla 3.2-7. Escenario 1.3: Publicar / compartir diagramas (R1.3) .........................86 Tabla 3.2-8. Escenario 1.4: Control de versiones de los diagramas (R1.4).............87 Tabla 3.2-9. Caso de Uso 2: Disear Diagramas (R2).................................................88 Tabla 3.2-10. Escenario 2.1: Definir dimensiones del rea de diseo (R2.1) .........88 Tabla 3.2-11. Escenario 2.2: Aadir y eliminar componentes (R2.2) .......................89 Tabla 3.2-12. Escenario 2.3: Realizar conexiones entre componentes (R2.3).......89 Tabla 3.2-13. Escenario 2.4: Aplicar transformaciones bsicas (R2.4)....................90 Tabla 3.2-14. Escenario 2.5: Cortar, copiar y pegar (R2.5) .......................................90 Tabla 3.2-15. Escenario 2.6: Historial de deshacer / rehacer (R2.6)........................91 Tabla 3.2-16. Escenario 2.7: Guardar, exportar e importar (R2.7) ...........................91 Tabla 3.2-17. Escenario 2.8: Colaborar mediante pizarra compartida (R2.8) ......92 Tabla 3.2-18. Caso de Uso 3: Gestionar Componentes (R3) ....................................93 Tabla 3.2-19. Escenario 3.1: Alta, baja y modificacin de componentes (R3.1) .93 Tabla 3.2-20. Escenario 3.2: Buscar componentes (R3.2) .........................................94 Tabla 3.2-21. Escenario 3.3: Publicar / compartir componentes (R3.3) .................94 Tabla 3.2-22. Escenario 3.4: Control de versiones de los componentes (R3.4) ....95 Tabla 3.2-23. Caso de Uso 4: Disear Componentes (R4) ........................................96 Tabla 3.2-24. Escenario 4.1: Definir dimensiones del componente (R4.1) .............96 Tabla 3.2-25. Escenario 4.2: Aadir y eliminar formas bsicas (R4.2) .....................97 Tabla 3.2-26. Escenario 4.3: Definir zonas de interconexin (R4.3) .........................97 Tabla 3.2-27. Escenario 4.4: Aplicar transformaciones bsicas (R4.4)....................98 Tabla 3.2-28. Escenario 4.5: Cortar, copiar y pegar (R4.5) .......................................98 Tabla 3.2-29. Escenario 4.6: Historial de deshacer / rehacer (R4.6)........................99 Tabla 3.2-30. Escenario 4.7: Guardar, exportar e importar (R4.7) ...........................99 Tabla 3.2-31. Caso de Uso 5: Gestionar Cuentas de Usuario (R5).........................100 Tabla 3.2-32. Escenario 5.1: Alta, baja y modificacin de usuarios (R5.1) ..........100 Tabla 3.2-33. Escenario 5.2: Validar usuario (R5.2) ...................................................101 Tabla 3.2-34. Escenario 5.3: Buscar usuarios (R5.3)...................................................101 Tabla 3.2-35. Escenario 5.4: Consultar estadsticas y puntuaciones (R5.4) .........102
14
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Tabla 3.3-1. Anlisis del Caso de Uso 1: Gestionar Diagramas (R1)..................... 104 Tabla 3.3-2. Anlisis del Caso de Uso 2: Disear Diagramas (R2) ..........................104 Tabla 3.3-3. Anlisis del Caso de Uso 3: Gestionar Componentes (R3) ...............105 Tabla 3.3-4. Anlisis del Caso de Uso 4: Disear Componentes (R4)....................105 Tabla 3.3-5. Anlisis del Caso de Uso 5: Gestionar Usuarios (R5) ...........................106 Tabla 3.3-6. Clase DiagramManager (Modelo)........................................................108 Tabla 3.3-7. Clase Diagram (Modelo).........................................................................108 Tabla 3.3-8. Clase ComponentManager (Modelo) .................................................109 Tabla 3.3-9. Clase Component (Modelo) ..................................................................109 Tabla 3.3-10. Clase UserManager (Modelo) ..............................................................109 Tabla 3.3-11. Clase User (Modelo) ...............................................................................110 Tabla 3.3-12. Clase DiagramManager (Vista) ...........................................................111 Tabla 3.3-13. Clase DiagramEditor (Vista)..................................................................111 Tabla 3.3-14. Clase ComponentManager (Vista) ....................................................112 Tabla 3.3-15. Clase ComponentEditor (Vista) ...........................................................112 Tabla 3.3-16. Clase UserManager (Vista) ...................................................................112 Tabla 3.3-17. Clase DiagramDynaActionForm (Vista) .............................................113 Tabla 3.3-18. Clase ComponentDynaActionForm (Vista).......................................113 Tabla 3.3-19. Clase UserDynaActionForm (Vista)......................................................113 Tabla 3.6-1. Prototipo 1: Interconexin de Componentes .....................................126 Tabla 3.6-2. Prototipo 2: Formato de la Interfaz de Usuario ...................................127 Tabla 3.6-3. Integracin de capas del Sistema ........................................................128
15
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Tabla 4.6-1. Clase ModelFacade ................................................................................148 Tabla 4.6-2. Clase DiagramManager..........................................................................149 Tabla 4.6-3. Clase UserManager ..................................................................................150 Tabla 4.6-4. Clase PersistenceFacade........................................................................151 Tabla 4.6-5. Clase DAOFactory ....................................................................................152 Tabla 4.6-6. Interfaz DiagramDAO...............................................................................153 Tabla 4.6-7. Interfaz UserDAO .......................................................................................154 Tabla 4.6-8. Clase OracleDAOFactory .......................................................................155 Tabla 4.6-9. Clase OracleDiagramDAO .....................................................................156 Tabla 4.6-10. Clase OracleUserDAO ...........................................................................157 Tabla 4.6-11. Clase GraphMLFile..................................................................................158 Tabla 4.6-12. Clase GraphMLDefaultHandler............................................................159 Tabla 4.6-13. Clase GraphMLErrorHandler .................................................................160 Tabla 4.6-14. Clase GraphMLSerializer........................................................................161 Tabla 4.6-15. Clase JSONSerializer ...............................................................................162 Tabla 4.6-16. Clase DiagramBean ...............................................................................163 Tabla 4.6-17. Clase DiagramPrivilegeBean................................................................164 Tabla 4.6-18. Clase DiagramChangeBean................................................................164 Tabla 4.6-19. Clase TinyUserBean.................................................................................165 Tabla 4.6-20. Clase UserBean .......................................................................................165 Tabla 4.6-21. Clase FilterLogin.......................................................................................166 Tabla 4.6-22. Clase AddDiagramAction.....................................................................167 Tabla 4.6-23. Clase QueryDiagramAction .................................................................167 Tabla 4.6-24. Clase DestroyDiagramAction...............................................................167 Tabla 4.6-25. Clase QueryDiagramChangeAction ..................................................168 Tabla 4.6-26. Clase CommitDiagramChangeAction...............................................168 Tabla 4.6-27. Clase LoadDiagramAction ...................................................................169 Tabla 4.6-28. Clase QueryAllDiagramsAction ...........................................................169 Tabla 4.6-29. Clase QueryDiagramPrivilegesAction.................................................169 Tabla 4.6-30. Clase ChangeDiagramPrivilegeAction ..............................................170 Tabla 4.6-31. Clase AddUserAction .............................................................................171 Tabla 4.6-32. Clase QueryUserAction..........................................................................171 Tabla 4.6-33. Clase QueryAllUsersAction ....................................................................171 Tabla 4.6-34. Clase LoginAction...................................................................................172 Tabla 4.6-35. Clase LoginCounterAction....................................................................172 Tabla 4.6-36. Clase ExitAction.......................................................................................172 Tabla 4.6-37. Clase DiagramEditor ..............................................................................173 Tabla 4.6-38. Clase Node ..............................................................................................174 Tabla 4.6-39. Clase Link ..................................................................................................175 Tabla 7.1-1. Requisitos hardware .................................................................................324 Tabla 7.1-2. Requisitos software ...................................................................................324
16
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
17
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
CAPTULO 1: MEMORIA
Este primer captulo se dedica a la descripcin general del proyecto realizado, basada en los objetivos que se persiguen alcanzar y la motivacin que justifica el planteamiento del mismo. Se expone brevemente la estructura general de este documento, as como la evolucin del proyecto a lo largo de su ciclo de vida. Finalmente se describen en mayor detalle las tecnologas, libreras y herramientas estudiadas y que han servido de soporte al proyecto.
18
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.1. Agradecimientos
Este proyecto nunca podra haberse encarado sin el apoyo de todas las personas que supieron darme nimos en los momentos ms duros. En primer lugar a mi director Jos Emilio Labra Gayo por su inestimable visin prctica del problema y su enfoque didctico y humano de esta experiencia. A mi compaera Sheila Mndez Nez por compartir esta recta final conmigo y mostrarme su apoyo incondicional durante todo este tiempo. A mi hermano y mis padres por la confianza que han depositado siempre en mi esfuerzo y mis inquietudes.
19
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.2. Objetivos
El objetivo principal de este proyecto es el desarrollo de un prototipo lo ms completo y funcional posible de un entrono de diseo de diagramas de interconexin de objetos a travs de Internet. Se busca una aplicacin escalable que admita ampliaciones continuas, sin necesidad de remodelar las funcionalidades desarrolladas previamente. Para lo cual se emplea el patrn de diseo MVC que garantiza cierta independencia entre las diferentes capas del sistema y favorece la separacin de responsabilidades. En principio el sistema est pensado como una aplicacin Web que permita a los usuarios acceder a su funcionalidad desde cualquier ordenador con conexin a Internet, facilitando en la medida de lo posible la internacionalizacin de los recursos y la usabilidad y accesibilidad de los mismos. Como objetivo especfico, se espera poder emplear tecnologas Web 2.0, como AJAX y JSON, que aporten un grado mucho ms elevado de interactividad al cliente Web, tratando de aproximar la experiencia del usuario a la de las aplicaciones tpicas de escritorio. Tambin se espera encontrar un vocabulario XML que encaje con los requisitos del sistema, evitando desarrollar recursos ya existentes, siempre y cuando tampoco suponga una barrera en la consecucin del resto de los objetivos presentados. Dadas las necesidades de escalabilidad funcional del sistema sera muy conveniente desarrollar un lenguaje especfico del dominio, permitiendo a los usuarios disear nuevos componentes bien directamente o bien mediante algn editor diseado a tal efecto. Otro de los objetivos tcnicos especficos es conseguir desarrollar un entorno independiente del navegador utilizado, basado en estndares del W3C y en tcnicas y patrones AJAX ampliamente utilizados, preferiblemente mediante alguna librera o herramienta de cdigo libre. Se tendrn en cuenta las necesidades de seguridad y control de accesos requeridos por el sistema de cara a preservar la privacidad, consistencia e integridad de los datos. Dentro de los objetivos funcionales del sistema, debe proveer un espacio de diseo donde situar objetos y definir conexiones entre ellos, de un modo similar a otras aplicaciones existentes de diseo de diagramas UML, redes de ordenadores, circuitos digitales, pero completamente genrico y extensible. El entorno desarrollado fomentar la colaboracin entre los usuarios mediante tcnicas y mecanismos adecuados que permitan compartir recursos, discutir opiniones, valorar contenidos, acceso incremental a contenidos y funcionalidad segn puntuaciones, etc. Finalmente se pretende distribuir el sistema como un proyecto de cdigo abierto basado en licencias que permitan su libre ampliacin y reutilizacin. 20
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.3. Motivacin
El proyecto surge de la necesidad de ubicuidad actual de las aplicaciones, que normalmente exigen la instalacin de componentes en el ordenador desde el cual desean utilizarse, lo que supone una serie de inconvenientes de portabilidad entre plataformas que suele solventarse mediante el empleo de mquinas virtuales. Este proyecto propone una alternativa mucho ms atractiva que evita la necesidad de realizar ninguna descarga o instalacin adicional, adems de ser completamente gratuito y permitir el libre acceso al cdigo fuente. La idea bsica es desarrollar una aplicacin Web que sirva de soporte y almacenamiento persistente de los contenidos diseados por los usuarios que facilite el acceso a los mismos desde cualquier ordenador y la colaboracin sncrona de los usuarios en tiempo real, del mismo modo que las pizarras compartidas tpicas de los sistemas de e-Learning. Debe existir un claro enfoque a la libertad de accin de los usuarios a la hora de avanzar dentro del sistema, pero que a su vez sea les permita orientarse adecuadamente y no se encuentren perdidos, tanto en la bsqueda de contenidos como en su progresin formativa. El fomento de la colaboracin y comunicacin entre usuarios es la forma ms segura y rpida de aumentar el volumen de contenidos y componentes, permitiendo adems que los usuarios compartan sus propios recursos. Desarrollar el afn de superacin de los usuarios puede resultar ventajoso, aunque arriesgado. Se podra experimentar con el uso de un sistema de rankings y estadsticas que permitan una visin global de la evolucin o las destrezas propias de cada usuario. Motivando a los usuarios a mejorar dicha situacin a travs de la realizacin de pruebas, aadiendo contenidos o componentes, con valoraciones positivas de otros usuarios, etc. Tambin se busca estudiar tcnicas de esfuerzo-recompensa con un sistema de bonificacin (acceso a recursos avanzados, nuevas funcionalidades o privilegios,), tratando de conseguir una experiencia ms atractiva y motivadora a los usuarios, que sin duda son el elemento clave del sistema. En resumen, la motivacin principal es el estudio de viabilidad y el lanzamiento de una alternativa de cdigo abierto que permita disear diagramas en un entorno colaborativo, aplicando tecnologas de Web Semntica y Web 2.0, accediendo a sus funcionalidades desde cualquier ordenador con conexin a Internet y facilitando el intercambio de recursos entre los usuarios.
21
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
22
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
23
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.6. Tecnologas
Este apartado nicamente cubre las tecnologas investigadas de mayor peso en el proyecto y que quedan fuera de los conocimientos bsicos adquiridos durante de la carrera o los amplan.
24
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.6.1. XML
Se trata de un estndar aprobado por el W3C que define un lenguaje extensible de marcado, es decir, la estructura del documento se construye mediante etiquetas. Cada vez ms proyectos se apoyan en las enormes posibilidades de este lenguaje y se ha convertido en una referencia obligada en la comunicacin estructurada entre sistemas, especialmente en el mbito de Internet, la Web Semntica y los Servicios Web. Aunque podra considerarse un lenguaje por s mismo, en la prctica se emplea para construir vocabularios especficos de un dominio, como XHTML, SVG, GraphML Est formado principalmente por elementos y atributos extensibles. Un elemento es una entidad que puede albergar otros elementos y atributos o contenido simple de tipo texto. Adems se pueden definir los tipos de estos elementos y atributos, as como el nmero de ocurrencias y el orden o jerarqua de los mismos. Existen dos conceptos a tener en cuenta y que tienden a confundirse. Por un lado est el concepto de documento bien formado que implica un documento correcto en cuanto a sintaxis o anidacin de etiquetas, por otro el de documento vlido que supone la adecuacin del mismo a las reglas definidas en el vocabulario asociado [Wikipedia] [XML]. 1.6.1.1. Ventajas Su principal ventaja es que es extensible y adems permite compatibilidad hacia atrs, de tal manera que podemos ampliar un lenguaje definido mediante XML sin necesidad de modificar las aplicaciones existentes, a menos que sea necesario tener acceso a las nuevas ampliaciones. Tambin es vital el hecho de que sea un estndar internacional, empleado en infinidad de contextos con notables ventajas de integracin entre distintas plataformas y sistemas. Existe una larga lista de recursos disponibles para procesar y validar documentos, simplificando y agilizando el desarrollo de sistemas que emplean este lenguaje. A pesar de ser un lenguaje de intercambio de datos entre sistemas resulta relativamente fcil de leer y entender en comparacin con otros formatos, disponiendo de multitud de herramientas para su edicin y visualizacin. Finalmente tambin se puede destacar que, a diferencia de HTML, separa el contenido del formato, permitiendo su visualizacin y transformacin en infinidad de dispositivos.
25
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.6.1.2. Desventajas Quiz la mayor desventaja que puede presentarse es el tamao de los ficheros de este tipo en comparacin con otros formatos como JSON, de cara a comunicar datos entre el cliente y el servidor en el sistema a desarrollar. Tambin hay que tener en cuenta que el cliente va a ser desarrollado mediante JavaScript, con soporte directo para JSON y como consecuencia su transformacin y utilizacin es casi inmediata, en comparacin con XML que necesitara ser analizado y generado tambin desde el propio cliente, ralentizando significativamente la sincronizacin entre los usuarios que trabajen de manera colaborativa. 1.6.1.3. Conclusiones En principio se adopta XML como formato de serializacin de los diagramas de tal manera que puedan ser editados o modificados posteriormente, aunque se evaluar la posibilidad de reemplazarlo por JSON en el intercambio de informacin entre cliente y servidor para agilizar este proceso. Tambin es de uso obligado para poder emplear otras tecnologas y herramientas como Struts o Ant, expuestas en mayor detalle ms adelante.
26
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
27
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.6.3. GraphML
Es un vocabulario fcil de usar y comprender basado en XML Schema, que incluye soporte para: Grafos dirigidos, no dirigidos o mixtos, hipergrafos (con relaciones ternarias) y grafos anidados. Nodos, conexiones y puertos. Representaciones grficas. 1.6.3.1. Ventajas El ncleo principal del lenguaje permite representar grafos bsicos, pero adems permite aadir datos especficos para cada aplicacin, sin que dichos datos adicionales influyan en otras aplicaciones. Al contrario que otros lenguajes de representacin de grafos, emplea XML como soporte, por lo que se beneficia de todas las ventajas propias de este lenguaje. Tambin permite referenciar datos externos mediante XLink, aportando una enorme funcionalidad a los grafos ya que pueden contener enlaces a otros recursos. Es un formato ampliamente utilizado a nivel internacional en aplicaciones de diseo de grafos y diagramas, dada su simplicidad y escalabilidad. Permite especificar la cantidad y el grado de los nodos, el orden del contenido (primero nodos y luego conexiones), con el fin de poder desarrollar analizadores semnticos mucho ms eficientes. 1.6.3.2. Desventajas Puede presentar problemas de tamao de ficheros, por ser un lenguaje XML. 1.6.3.3. Conclusiones Como ya se expuso anteriormente se valorar el empleo de XML en la serializacin de los diagramas, posiblemente mediante este vocabulario, sin embargo se estudiarn otras alternativas en el intercambio de informacin entre cliente y servidor para reducir el consumo de ancho de banda.
28
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.6.4. JavaScript
Es un lenguaje de script, es decir no se compila, sino que es el propio navegador Web el que lo interpreta al cargar la pgina donde se haya incrustado el cdigo. Actualmente est ganando importancia gracias a nuevas tendencias Web 2.0, como AJAX. Existe una versin estandarizada llamada ECMAScript, si bien posee notables limitaciones y existe falta de soporte completo en muchos de los navegadores Web ms utilizados hoy en da. A pesar de poder definir objetos, el mecanismo que se emplea no es el mismo que usa Java, basado en clases, JavaScript utiliza un modelo de prototipos bastante ms complejo de entender y utilizar. Este defecto puede verse mitigado en gran medida gracias a las numerosas libreras existentes que permiten que el desarrollador pueda abstraerse de esta labor mediante funciones que simulen el modelo de clases de Java, como Dojo Toolkit. En los ltimos aos ha empezado a surgir una nueva tendencia denominada JavaScript no obstructivo, que pretende separar la funcionalidad JavaScript (capa lgica) del resto de capas, como ya se hace con el contenido y la presentacin mediante CSS. Tambin promueve el uso patrones para evitar inconsistencias entre navegadores o la falta de escalabilidad [Wikipedia]. 1.6.4.1. Ventajas Permite desarrollar clientes complejos sin necesidad de instalar nuevos componentes en el navegador, ni siquiera necesita Applets. Adems el cdigo resultante suele ser ms ligero y por tanto mucho ms rpido. Tiene un soporte completo de eventos que facilitan en gran medida el desarrollo de interfaces de usuario que respondan a los mismos, e incluso acceder al DOM de la pgina desde la que se carg. No necesita definir los tipos de manera anticipada, aportando gran flexibilidad, a pesar de un aumento asumible en la complejidad de su uso. Las funciones se consideran un tipo ms y pueden ser empleadas directamente como argumentos de otra funcin, aumentando enormemente la potencia del lenguaje, ya que se puede emplear para crear cdigo genrico de manera muy sencilla. Existe un plugin para Firefox llamado Firebug que nos permite depurar JavaScript en tiempo real y recorrer el DOM de la pgina, los estilos CSS Slo sera necesario en el entorno de desarrollo, no en el entorno final. Se puede encontrar mucha documentacin e infinidad de ejemplos en Internet con casos prcticos, libreras, entornos de desarrollo, manuales
29
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.6.4.2. Desventajas No es completamente estndar, de hecho una de las labores ms tediosas del desarrollo de un cliente mediante este lenguaje es que el resultado pueda ejecutarse sin problemas en cualquier navegador, optndose normalmente por dar soporte nicamente a los ms empleados. Puede llegar a resultar lento y poco escalable en funcin de la calidad del diseo realizado o de la cantidad de objetos almacenados en memoria. No hay que olvidar que no se trata de un lenguaje para desarrollar programas, sino trozos de cdigo que son interpretados por el navegador al cargar la pgina correspondiente. Necesita que el navegador tenga activada la opcin de ejecutar el cdigo JavaScript contenido en las pginas. 1.6.4.3. Conclusiones A pesar de ser un lenguaje bastante complejo de utilizar, con una curva de aprendizaje muy pronunciada, existen muchos recursos de carcter abierto, principalmente libreras, que simplifican muchos de estos aspectos e incluso aaden una capa de abstraccin que evita tener en cuenta restricciones propias de los navegadores. Por tanto resulta muy apropiado su uso, ya que es multi-plataforma y no requiere instalacin alguna por parte de los usuarios, adems de posibilitar holgadamente el desarrollo de una interfaz de usuario completa. La librera elegida para dar soporte a este lenguaje es Dojo Toolkit, por las ventajas expuestas posteriormente en este mismo captulo, en el apartado de libreras y herramientas.
30
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.6.5.2. Desventajas La gestin de errores puede llegar a ser compleja en algunas circunstancias y es muy recomendable el empleo de alguna librera para paliar estos inconvenientes. No todos los navegadores implementan estas tcnicas del mismo modo, algunos ni siquiera tienen soporte para ellas. En ocasiones el modelo de aplicacin Web tradicional es ms conveniente debido a la complejidad aadida que supone el uso de estas tecnologas. 1.6.5.3. Conclusiones Dado que uno de los objetivos principales del proyecto es crear una interfaz de usuario completa, similar a las aplicaciones tpicas de escritorio para interaccionar con objetos en un entorno de diseo interactivo, resulta muy apropiado el uso de estas tcnicas. Sobre las diferencias entre AJAX y JSON, realmente se puede decir que JSON es un lenguaje que puede ser empleado por AJAX, algo ms ligero que XML y cuya principal ventaja es la facilidad con la que los navegadores pueden procesarlo, que es una transformacin casi directa. En principio JSON ser el mecanismo principal de intercambio de informacin entre el cliente y el servidor, dejando XML para la serializacin, ya que ste sea posiblemente ms fcil de entender para un usuario final.
32
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.6.6. CSS
Es un acrnimo de Cascading Style Sheets, bsicamente es un mecanismo que define el formato que va a tener un documento en pantalla, o cmo se va a imprimir, o incluso cmo va a ser pronunciada la informacin presente en ese documento a travs de un dispositivo de lectura. Se emplea para dar estilo a documentos de marcado tipo XML o HTML, separando correctamente el contenido de la presentacin. Funciona a base de reglas, es decir, declaraciones sobre el estilo de uno o ms elementos, las hojas de estilo estn compuestas por una o ms de esas reglas y cada regla tiene dos partes: un selector y la declaracin, que est compuesta por una propiedad y un valor [W3CBreves]. 1.6.6.1. Ventajas Ofrece a los desarrolladores el control total sobre estilo y formato de sus documentos, pudindose redefinir estilos o incluso combinarlos. Permite controlar el estilo y el formato de mltiples pginas Web al mismo tiempo. Cualquier cambio en el estilo marcado para un elemento en la CSS afectar a todas las pginas vinculadas a esa CSS. 1.6.6.2. Desventajas A pesar de ser un estndar aprobado por el W3C no es totalmente independiente del navegador, por lo que muchas veces es necesario realizar ciertos trucos a la hora de crear hojas de estilo que definan un formato comn para varios navegadores distintos. 1.6.6.3. Conclusiones Esta tecnologa ser empleada para definir un formato de estilo general para todas las pginas Web que conformen el sitio a desarrollar, adems Dojo Toolkit hace uso directo de esta tecnologa y es indispensable para su correcto funcionamiento.
33
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.6.7. JEE
Acrnimo de Java Enterprise Edition o Java EE (anteriormente conocido como Java 2 Enterprise Edition o J2EE), es una parte de la plataforma Java de Sun Microsistems destinada al desarrollo de aplicaciones distribuidas, construidas mediante componentes modulares y con soporte para arquitecturas basadas en el patrn MVC, como Struts. Las aplicaciones desarrolladas con esta tecnologa se despliegan sobre un servidor de aplicaciones. A pesar de no ser un estndar ISO o ECMA s que est definido mediante una especificacin que determina el comportamiento bsico que debe cumplir cualquier implementacin para poder declarar su conformidad con dicha especificacin. 1.6.7.1. Ventajas Al apoyarse sobre Java es totalmente independiente de la plataforma, aumentando en gran medida su portabilidad entre sistemas. El servidor de aplicaciones puede ocuparse de las transacciones, la seguridad, escalabilidad, concurrencia y gestin de los componentes desplegados, derivando en que los desarrolladores pueden dedicar sus esfuerzos en la lgica de negocio de los componentes en lugar de en tareas de mantenimiento de bajo nivel. Otra caracterstica destacable es el gran conjunto de APIs que facilita al desarrollador para trabajar con Servlets, JSF, JSP, EJB, JNDI, SQL, XML Se hace especial hincapi en la reusabilidad y modularidad de las aplicaciones desarrolladas, dividiendo el sistema en capas independientes. Otro de sus grandes beneficios es el desarrollo a bajo coste, pudindose encontrar infinidad de recursos de cdigo abierto, incluso entornos de desarrollo como Eclipse, NetBeans o Jedit. 1.6.7.2. Desventajas Presenta una curva de aprendizaje pronunciada, que en el caso de sistemas Web puede resultar inadecuado para proyectos pequeos que puedan construirse con una solucin simple y rpida. 1.6.7.3. Conclusiones A pesar de su elevada dificultad inicial y su desaconsejado uso en sistemas Web sencillos, es muy recomendable su uso en sistemas con grandes necesidades de escalabilidad como el proyecto a desarrollar.
34
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.6.8. Struts
Es un framework para JEE que propone una capa de control basada en estndares como Servlets, JavaBeans, XML o Jakarta Commons. Aporta facilidades para crear aplicaciones escalables gracias al uso de patrones de diseo conocidos y probados como MVC. La aplicacin Web se divide en tres subsistemas: Modelo: representa el estado y la lgica de la aplicacin. Vista: interfaz de usuario (JSP, HTML). Controlador: gestiona el flujo de la aplicacin. La arquitectura de Struts se compone de un nico Servlet que hace de Controlador y redirige el flujo de la aplicacin entre las acciones y la capa de presentacin. Es como un puente entre la Vista y el Modelo. Normalmente toda la lgica de negocio debera estar contenida en el Modelo, si bien en escenarios ms simples se podra delegar dicha responsabilidad a las acciones invocadas por el Controlador. 1.6.8.1. Ventajas En la capa del Modelo puede interaccionar con sistemas de acceso a datos estndar como JDBC, EJB, Hibernate, iBatis, pero no impone ninguna, por lo que se considera de Modelo neutral. Tiene soporte para JSP, JSF, XSLT y otras tecnologas apropiadas para representar la capa de la Vista. Adems permite desarrollar esta capa mediante plantillas o tiles, empleando etiquetas especiales de la librera Struts Tiles y simplificando en gran medida su mantenimiento y comprensin. Tambin soporta de manera directa internacionalizacin basada en la especificacin ResourceBoundles de Java, o la propia de Struts. Otra librera recomendada es Struts Validator, que permite validar formularios tanto en el cliente como en el servidor, mediante la definicin de restricciones en un archivo XML, evitando el desarrollo de dichas tareas a menudo cotidianas. Adems est perfectamente integrada la internacionalizacin provista por Struts. Proporciona clases base que pueden ser extendidas para implementar las acciones de la aplicacin Web, como las clases Action y ActionForm. La mayora de los IDEs, como Eclipse, dan soporte al desarrollo de aplicaciones con este framework. 1.6.8.2. Desventajas Al igual que JEE, presenta una curva de aprendizaje pronunciada, por lo que puede resultar inadecuado para proyectos pequeos que admitan soluciones ms sencillas. 35
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.6.8.3. Conclusiones Por los mismos motivos que se decide aprobar JEE para el desarrollo de este proyecto, se considera viable la adopcin de Struts, ya que ha dems se dispone de un prototipo completamente funcional que integra Struts Tiles y Validator, internacionalizacin, DynaActionFormss, desarrollado como prctica final de la asignatura Desarrollo de Aplicaciones en Sistemas Distribuidos e Internet.
36
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
37
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
38
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.7.1.3. Conclusiones En principio se plante la posibilidad de emplear la versin 0.4.3, sin embargo durante el mes de junio fue lanzada una nueva versin, la 0.9.0, como precursora de la primera versin completa de Dojo que ser la 1.0. El mayor problema fue que la 0.9.0 no tiene compatibilidad hacia atrs, ya que Dojo ha sufrido una reestructuracin completa de su cdigo para mejorar la escalabilidad y comprensin del mismo, as como el rendimiento, las capacidades de internacionalizacin y accesibilidad. A pesar de la migracin necesaria del prototipo inicial que se desarroll durante el mes de mayo, es ms recomendable emplear la versin 0.9.0 por los beneficios a largo plazo y sobretodo de cara a futuras ampliaciones que se deseen realizar sobre este proyecto.
39
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.7.2. SAX
Las siglas de SAX vienen de Simple API for XML, se trata de un conjunto de interfaces pensadas para procesar documentos XML de manera sencilla y eficiente. SAX funciona mediante eventos y manejadores, de tal manera que la aplicacin pueda saber el orden de apertura y el anidamiento de las etiquetas y que, al contrario que otras APIs como DOM (Document Object Model), no requiere almacenar en memoria el rbol del documento y por tanto puede ser mucho ms eficiente en muchos contextos. 1.7.2.1. Ventajas Emplea manejadores de eventos en lugar de cargar el rbol del documento en memoria, por lo que consume menos recursos y suele ser ms eficiente. La mayora de las libreras para Java que trabajan con XML tienen soporte para esta API y es de uso ampliamente extendido. Es sencillo de entender y de utilizar, pudiendo extenderse su funcionalidad sin necesidad de desarrollar complejos sistemas de procesamiento. 1.7.2.2. Desventajas En algunas circunstancias concretas puede ser necesario el empleo de analizadores basados en DOM, porque si bien es posible generar un rbol del documento a partir de los eventos invocados por SAX es preferible usar otras alternativas ms enfocadas a ese propsito. 1.7.2.3. Conclusiones Puesto que las necesidades del proyecto respecto al procesamiento de documentos XML son muy concretas, unido a la extrema simplicidad del vocabulario a utilizar (GraphML), es adecuado el uso de esta API en lugar de DOM, obteniendo una serie de ventajas en cuanto a simplicidad y rendimiento. Adems supone un ahorro considerable de recursos, permitiendo una mayor escalabilidad del sistema final a desarrollar.
40
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.7.3. JUNG
Acrnimo de Java Universal Network/Graph Framework, una API de cdigo abierto para Java que propone soluciones comunes y extensibles para el diseo, anlisis y visualizacin de datos representados mediante grafos o redes [JUNG]. 1.7.3.1. Ventajas Soporta multitud de representaciones como grafos dirigidos, no dirigidos, mixtos, hipergrafos Permite anotar meta datos en los grafos, las entidades y las relaciones, facilitando la creacin de herramientas de anlisis. Tiene soporte para GraphML, que es el vocabulario elegido para la serializacin de los diagramas. Permite manipular la distribucin de los elementos mediante algoritmos clsicos de la teora de grafos, que adems pueden ser extendidos y especializados. Incluye otras libreras como Apache Commons, Xerces, JAXP y Colt. 1.7.3.2. Desventajas Ofrece un framework de visualizacin que facilita la construccin de herramientas interactivas, sin embargo slo soporta Swing y sera necesario adaptarlo para poder emplearlo en un entorno basado en AJAX. 1.7.3.3. Conclusiones En principio nicamente dara soporte a la serializacin de los diagramas y su posterior recuperacin, sin embargo en futuras versiones podra valorarse su empleo en escenarios de gestin avanzada de grafos, como distribucin automtica de los elementos segn layouts o la aplicacin de algoritmos.
41
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
42
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
43
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
1.7.6. GIMP
Es una herramienta de cdigo abierto con soporte para edicin de casi cualquier tipo de formato de imagen, tanto raster como vectorial. 1.7.6.1. Ventajas Incluye estructuracin de imgenes por capas, pudiendo ocultarse o aplicar transformaciones de manera independiente. Posee un historial de acciones que nos permite avanzar o retroceder a cualquier versin del trabajo realizado. Ideal para generar imgenes con transparencia para el diseo de interfaces de usuario, especialmente en aplicaciones Web. 1.7.6.2. Desventajas Tiene un elevado tiempo de respuesta al arrancar el programa ya que necesita cargar un gran nmero de mdulos, que pueden ser desactivados para agilizar este proceso. 1.7.6.3. Conclusiones El empleo de esta herramienta surge de la necesidad de crear imgenes con fondo transparente para el diseo y elaboracin de la interfaz de usuario.
44
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
45
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
46
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
47
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
48
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Sistemas de puntuacin y rankings por categoras. Pruebas terico-prcticas de autoevaluacin o seguimiento. Bsqueda de documentacin y ejemplos prcticos. Bsqueda de profesionales cualificados por perfil. Acceso incremental a contenidos y funcionalidad segn puntuaciones. Base de datos de usuarios, currculos, documentos, artculos
49
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
50
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
51
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
52
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
53
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Todas y cada una de las caractersticas son accesibles a distancia, empleando para ello cualquier navegador Web con soporte para cdigo Java.
54
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
2.2.1.2. DomoEdit & DomoApplet (2005) Tutorial sobre Domtica e Inmtica AUTOR: Pedro Cantero Espadas. TUTORES: Ricardo Mayo Bayn, Vctor M. Gonzlez Surez. UNIVERSIDAD: Universidad de Oviedo (http://www.uniovi.es). DomoEdit es una herramienta que permite a un usuario debidamente formado disear ejercicios de conexionados de circuitos domticos y generar automticamente una pgina Web que los contenga para poder proponrselos a un alumno. DomoApplet es el nombre que se le ha dado al Applet Java que permite a un usuario intentar resolver el problema diseado con DomoEdit [Cantero]. Caractersticas generales: DomoEdit no es una aplicacin Web, sino de escritorio. Se trata de una aplicacin totalmente visual en la cual se utilizan imgenes de componentes domticos reales para disear los ejercicios.
Los profesores pueden crear componentes nuevos con DomoEdit. Se ha diseado una aplicacin de fcil manejo de forma que la manera de hacer las cosas sea muy intuitiva.
55
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Pueden crearse ejercicios partiendo componentes anteriormente creados para conectarlos entre s y proponrselos a los alumnos mediante DomoApplet. Aunque en principio DomoEdit ha sido pensado para componentes y circuitos domticos, debido a la transparencia de su diseo puede utilizarse para disear otro tipo de circuitos para los cuales no fue inicialmente concebida. Para el almacenamiento de la informacin se ha decidido utilizar ficheros XML, en lugar de una base de datos relacional. La pgina Web que realiza la llamada al Applet con los parmetros pertinentes ha sido generada previamente y debe ser copiada en el servidor. El alumno puede chequear las conexiones para verificar que son correctas.
56
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
2.2.1.3. CoVis (1994) Learning through Collaborative Visualization UNIVERSIDAD: Universidad (http://www.northwestern.edu/). de Northwestern
El Proyecto CoVis (1994) surgi en la como una iniciativa para transformar el aprendizaje de la Ciencia en la educacin bsica a travs del aprendizaje colaborativo con soporte computacional. Introduce la metfora de cuadernos de notas organizados en una biblioteca jerrquica, y divididos en pginas [CoVis]. 2.2.1.4. Moodle (2002) Modular Object-Oriented Dynamic Learning Environment AUTOR: Martin Dougiamas (http://dougiamas.com/). Es un sistema de gestin de cursos Open Source que ayuda a los educadores a crear comunidades de aprendizaje en lnea. Fue creado por Martin Dougiamas, quien era el administrador de WebCT en la Universidad Tecnolgica de Curtin, y se bas en las ideas del constructivismo en pedagoga que afirman que el conocimiento se construye en la mente del estudiante en lugar de ser transmitido sin cambios a partir de libros o enseanzas y en el aprendizaje colaborativo. Un profesor que opera desde este punto de vista crea un ambiente centrado en el estudiante que le ayuda a construir ese conocimiento con base en sus habilidades y conocimientos propios en lugar de simplemente publicar y transmitir la informacin que se considera que los estudiantes deben conocer [Moodle]. 2.2.1.5. CSILE (1993) Computer Supported Intentional Learning Environments AUTORES: Carl Bereiter y Marlene Scardamalia. UNIVERSIDAD: Universidad de Toronto (http://www.utoronto.ca/). Base de conocimientos comn utilizada en entornos acadmicos que permite crear problemas y aportar opiniones. Permite a los usuarios obtener mucha ms retroalimentacin sobre sus ideas de la que tendran si el docente fuera la nica fuente de retroalimentacin. Adems se pueden formular hiptesis y sugerencias, lo que suele inducir a los alumnos a revisar sus ideas. Presenta un entorno de trabajo estructurado en espacios de trabajo separados y maneja informacin compartida. La unidad bsica de almacenamiento es la anotacin que puede tener formato de texto o grfico y est relacionada con otras notas de la base de datos. Cuando un determinado tema est suficientemente explorado se publica y pasa a formar parte del conocimiento colectivo [CSILE].
57
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
2.2.1.6. TIBCO General Interface (2005) Ajax Rich Internet Application Resource Center AUTOR: TIBCO Software Inc. (http://www.tibco.com/). Entorno de desarrollo de aplicaciones Web de caractersticas similares, en cuanto a apariencia y rendimiento, a las aplicaciones cotidianas de escritorio. Evita la necesidad de instalar plugins para Applets mediante el uso de AJAX, uno de los objetivos tcnicos del proyecto. Caractersticas generales [TibcoRIA]: Licencia BSD Open Source. Ms de 100 componentes AJAX para utilizar. Herramientas visuales de diseo de interfaces grficas. Soporte para Internet Explorer 7 y Firefox 2. Depuracin integrada.
58
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
59
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
60
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
61
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
62
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
63
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
2.3.3.4. Gestionar Componentes Es uno de los subsistemas ms relevantes ya que se encarga de gestionar todos los aspectos relacionados con los componentes que se van a usar en los ejercicios que sean propuestos. Se contempla el acceso incremental a los componentes segn las puntuaciones de los usuarios. Funciones de segundo nivel identificadas: Alta, baja, modificacin y consulta de componentes. Buscar componentes. Compartir componentes. 2.3.3.5. Gestionar Reglas de Interconexin Este subsistema quiz sea uno de los ms complejos de disear ya que se trata de un campo totalmente novedoso de investigacin en el que se proponen mecanismos para extraer la lgica de negocio de una aplicacin y dejarla en manos de los usuarios finales, de cara a mejorar la experiencia y formacin de los mismos. Estas reglas pueden ser de mbito global o pueden estar enfocadas a una tecnologa o componente en particular por lo que habr que considerar la mejor alternativa a la hora de decidir su medio de almacenamiento persistente. Funciones de segundo nivel identificadas: Alta, baja, modificacin y consulta de reglas de interconexin. Buscar reglas de interconexin. Compartir reglas de interconexin. 2.3.3.6. Gestionar Ejercicios Se encarga de proveer un sistema de evaluacin mediante pruebas tericoprcticas de auto-evaluacin o seguimiento de los usuarios que se ejecutarn de forma dinmica en el navegador del usuario. Funciones de segundo nivel identificadas: Alta, baja, modificacin y consulta de ejercicios. Buscar ejercicios. Realizar ejercicio. Evaluar solucin.
64
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
65
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
66
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
67
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
68
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Caractersticas:
2.5.1.2. InfiView URL: Cliente: Servidor: XML: http://www.infiview.com/ AJAX Neutral GraphML Desarrollo de clientes basados en Bindows Framework (AJAX) Soporte para gran cantidad de nodos y tipos de diagramas. Algoritmos de despliegue para grafos Eficiente gestin del ancho de banda Incluye entorno de desarrollo. Inconvenientes: Requiere licencia de pago.
Caractersticas:
69
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
2.5.1.3. yFiles URL: Cliente: Servidor: XML: http://www.yworks.com/en/products_yfiles_about.htm AJAX o Flash Java GraphML Desarrollo de clientes basados Dojo Toolkit (AJAX) Soporte para gran cantidad de nodos y tipos de diagramas. Algoritos de despliegue para grafos Eficiente gestin del ancho de banda Incluye entorno de desarrollo. Inconvenientes: Requiere licencia de pago.
Caractersticas:
2.5.1.4. Cumulate Draw URL: Cliente: Servidor: XML: http://www.cumulatelabs.com/cumulatedraw/ AJAX Java SVG, MMD, FMD. Gran variedad de tipos de diagramas. Interfaz grfica muy elaborada. Diseo de nuevos componentes. Licencia Creative Commons. Exportacin a JPG, PNG y PDF. Versin on-line gratuita. Inconvenientes: Cdigo fuente disponible slo bajo peticin.
Caractersticas:
70
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
2.5.1.5. JGraph, Layout Pro y mxGraph URL: Cliente: Servidor: XML: http://www.jgraph.com AJAX Java Formato propio. Gran variedad de tipos de diagramas. Algoritmos de despliegue para grafos. Interfaz grfica muy elaborada. Diseo de nuevos componentes. Licencia LGPL slo para JGraph. Inconvenientes: Licencia de pago para los extras y mxGraph (AJAX).
Caractersticas:
2.5.1.6. Flowchart URL: Cliente: Servidor: XML: http://www.flowchart.com/ AJAX Slo disponible en versin on-line. No disponible. Colaboracin en tiempo real. Almacenamiento on-line. Exportacin a PNG y PDF. Interfaz grfica muy elaborada. Gran variedad de tipos de diagramas. Versin demo on-line gratuita. Inconvenientes: Sin exportacin a XML. Sin acceso al cdigo fuente.
Caractersticas:
71
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
2.5.1.7. Gliffy URL: Cliente: Servidor: XML: http://gliffy.com/ Flash Slo disponible en versin on-line. SVG Colaboracin en tiempo real. Almacenamiento on-line. Exportacin a PNG y JPG. Interfaz grfica muy elaborada. Gran variedad de tipos de diagramas. Versin on-line gratuita, aunque limitada. Inconvenientes: Slo 5 diagramas en la versin gratuita. Sin acceso al cdigo fuente.
Caractersticas:
2.5.1.8. Visuwords URL: Cliente: Servidor: XML: http://www.visuwords.com/ Flash Slo disponible en versin on-line. No disponible. Diccionario grfico on-line gratuito. Cdigo fuente bajo licencia Open Source. Inconvenientes: Muy limitado: no permite editar. Sin exportacin a XML.
Caractersticas:
72
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
2.5.1.9. Kayuda URL: Cliente: Servidor: XML: http://www.kayuda.com/ AJAX Slo disponible en versin on-line. SVG Basado en Dojo Toolkit (AJAX). Permite compartir diagramas. Versin on-line gratuita. Inconvenientes: Escasa variedad de componentes. Sin exportacin a XML. Sin acceso al cdigo fuente. Poco usable.
Caractersticas:
2.5.1.10. Mind42 URL: Cliente: Servidor: XML: http://www.mind42.com/portal/index.xhtml AJAX Slo disponible en versin on-line. FreeMind, mind42 Basado en Dojo Toolkit (AJAX). Colaboracin en tiempo real. Incluye Google Talk Gadget. Exportacin a RTF. Inconvenientes: Muy limitado: slo mapas de ideas. Sin acceso al cdigo fuente.
Caractersticas:
73
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
2.5.1.11. Bubbl.us URL: Cliente: Servidor: XML: http://www.bubbl.us/ Flash Solo disponible versin on-line. Formato propio. Permite compartir diagramas Exportacin a JPG, PNG y HTML Inconvenientes: Muy limitado: slo mapas de ideas. Escasa variedad de componentes. Sin acceso al cdigo fuente.
Caractersticas:
2.5.1.12. MindMeister URL: Cliente: Servidor: XML: http://www.mindmeister.com/ AJAX Solo disponible versin on-line FreeMind, MindManager. Colaboracin en tiempo real Permite compartir diagramas Exportacin a GIF, JPG, PNG y RTF. Inconvenientes: Muy limitado: slo mapas de ideas. Escasa variedad de componentes. Emplea la librera wz_jsgraphics.js.
Caractersticas:
74
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
2.5.1.13. Open-jACOB Draw2D URL: Cliente: Servidor: XML: http://www.openjacob.org/draw2d.html AJAX Cualquiera. Formato propio. Open-jACOB Framework Cdigo disponible bajo licencia Open Source. Inconvenientes: Proyecto en estado de beta. Emplea la librera wz_jsgraphics.js.
Caractersticas:
2.5.1.14. Web Sequence Diagram Generator URL: Cliente: Servidor: XML: http://www.websequencediagrams.com/ HTML Solo disponible versin on-line FreeMind, MindManager. Simplicidad de uso. Edicin y exportacin en formato texto. Inconvenientes: Muy limitado: slo diagramas de secuencia. Escasa variedad de opciones.
Caractersticas:
75
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
CAPTULO 3: ANLISIS
En este captulo se especifican en mayor detalle los requerimientos del sistema a desarrollar, partiendo de una especificacin textual de los mismos se extraer una lista clasificada y se disearan los casos de uso asociados. Posteriormente se identifican las clases asociadas a cada caso de uso y se realiza el diagrama de clases preliminar junto con una breve descripcin de las clases encontradas. Finalmente se propone un formato base para la interfaz de usuario, que abarque las funcionalidades bsicas descritas este captulo y aporte una visin global de las pantallas a desarrollar.
76
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
77
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
78
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
79
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
3.1.2.3. R3 Gestionar Componentes Adicionalmente se valorar la posibilidad de desarrollar un subsistema de gestin de componentes que permita crear, borrar y modificar nuevos componentes o extender los ya existentes, con el fin de poder emplearlos en el subsistema de diseo de diagramas. Al igual que con la gestin de diagramas se permitir el acceso a versiones anteriores sin perder los cambios actuales. Funciones de segundo nivel identificadas: R3.1 Alta, baja y modificacin de componentes. R3.2 Buscar componentes. R3.3 Publicar / compartir componentes. R3.4 Control de versiones de los componentes. 3.1.2.4. R4 Disear Componentes Este subsistema quiz sea uno de los ms complejos de disear ya que se trata de un campo totalmente novedoso de investigacin en el que se proponen mecanismos para extraer la lgica de negocio de una aplicacin y dejarla en manos de los usuarios finales, de cara a mejorar su experiencia en el sistema. Funciones de segundo nivel identificadas: R4.1 Definir dimensiones del componente. R4.2 Aadir y eliminar formas bsicas (geometras, imgenes). R4.3 Definir zonas de interconexin (puertos). R4.4 Aplicar transformaciones bsicas (zoom, rotacin). R4.5 Cortar, copiar y pegar. R4.6 Historial de deshacer / rehacer. R4.7 Guardar, exportar e importar. 3.1.2.5. R5 Gestionar Cuentas de Usuario Como cualquier otro sistema en el que intervengan usuarios es necesario disponer de mecanismo para crear, borrar y actualizar sus datos. Funciones de segundo nivel identificadas: R5.1 Alta, baja y modificacin. R5.2 Validar usuario (login). R5.3 Buscar usuarios. R5.4 Consultar estadsticas y puntuaciones.
80
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
81
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
3.1.3.2. RNF 2: Requerimientos Tcnicos Finalmente se presentan los requerimientos tcnicos que debe cubrir el sistema a desarrollar: RNF 2.1 Emplear el patrn MVC para disear la arquitectura del sistema. El sistema final debe ser una aplicacin Web de dominio pblico diseada mediante el patrn MVC. RNF 2.2 Emplear tecnologas AJAX en el desarrollo del cliente. Puesto que actualmente no se concibe un enfoque esttico para una aplicacin de estas caractersticas ser necesario distribuir parte de la carga computacional en el cliente (navegador Web). RNF 2.3 Dar soporte directo a la internacionalizacin de la interfaz. A la hora de elegir el entorno de desarrollo de la aplicacin es aconsejable tener en cuenta las posibilidades que ofrece de internacionalizacin. RNF 2.4 Dar soporte a los navegadores Web ms empleados. Actualmente hay un gran problema respecto a la portabilidad de las aplicaciones Web entre diferentes navegadores, por lo que se recomienda el uso de estndares del W3C (World Wide Web Consortium) con el objetivo de disponer de una aplicacin que pueda visualizarse correctamente desde cualquier navegador (cross-browser). RNF 2.5 Evitar la necesidad de instalar plugins en los navegadores. Permitir que los usuarios puedan tener acceso al sistema desde cualquier ordenador con un navegador Web y conexin a Internet. RNF 2.6 Definir el modelo de datos mediante tecnologas XML. Es de vital importancia fomentar el empleo de vocabularios desde el principio del desarrollo para evitar inconsistencias y congelaciones de requisitos y aumentar la escalabilidad global del sistema. RNF 2.7 Definir un lenguaje especfico del domino para las conexiones. La lgica de negocio relativa a las reglas de interconexin podra estar definida mediante un lenguaje especfico del dominio (DSL) y que adems fuese extensible y adaptable. RNF 2.8 Valorar el uso de meta-informacin en los recursos. Un paso ms all sera aadir meta-informacin a los recursos a travs de RDF (Resource Description Format) y definir o reutilizar una ontologa existente en OWL (Web Ontology Lenguaje). RNF 2.9 Disear un sistema de control de accesos y seguridad adecuado. Se debe prestar especial atencin al sistema control de accesos y seguridad que se implemente o sobre el que se implante la aplicacin.
82
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
83
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
3.2.1. Actores
En principio la aplicacin no contempla diferentes tipos de usuarios por lo que los actores que se describen a continuacin pueden representar a una misma persona en contextos diferentes. 3.2.1.1. Actor 1: Usuario Registrado
Definicin
Representa al usuario cuando interacta con el sistema de cara a obtener informacin pblica o compartida, es decir, cuando accede a contenidos sobre los que no tiene derechos de propietario. Tiene acceso total a los contenidos pblicos del sistema. Los permisos de este actor sobre los contenidos compartidos estn definidos por el propietario de los mismos.
Tabla 3.2-1. Actor 1: Usuario Registrado
Notas
Representa al usuario cuando accede a los contenidos sobre los que tiene derechos de propietario, incluyendo diagramas, componentes y datos personales. Tiene acceso total a sus propios contenidos. Puede definir permisos para otros usuarios sobre sus contenidos. Los contenidos pueden tener varios propietarios.
Tabla 3.2-2. Actor 2: Propietario
Notas
Representa al usuario cuando colabora de manera sincronizada con otros usuarios en el diseo de un diagrama. No necesita derechos de propietario sobre el diagrama. El propietario define los permisos que tienen el resto de colaboradores.
Tabla 3.2-3. Actor 3: Colaborador
Notas
84
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Proporciona la funcionalidad necesaria para crear, eliminar, modificar, compartir y acceder a los diagramas. Tambin se encarga del control de versiones. Propietario / Usuario Registrado. Alta. Alta. R1.1, R1.2, R1.3, R1.4. El propietario define los permisos que tienen el resto de usuarios sobre sus diagramas. Un diagrama puede tener varios propietarios.
Tabla 3.2-4. Caso de Uso 1: Gestionar Diagramas (R1)
El usuario debe estar registrado en el sistema. Los cambios deben actualizarse en la interfaz de usuario. Propietario / Usuario Registrado. Propietario / Usuario Registrado. El usuario solicita la operacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus diagramas.
85
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Los criterios de bsqueda deben ser vlidos. Los resultados deben mostrarse en la interfaz de usuario. Propietario / Usuario Registrado. Propietario / Usuario Registrado. El usuario establece los criterios de bsqueda. El sistema valida los datos de entrada. Se realizan las acciones pertinentes. Se muestra el resultado en la interfaz de usuario.
Excepciones
No se encuentra ningn diagrama que cumpla los criterios de bsqueda establecidos. Los propietarios definen la visibilidad de sus diagramas para el resto de usuarios, es decir, pueden ocultarlos.
Tabla 3.2-6. Escenario 1.2: Buscar diagramas (R1.2)
Notas
El usuario debe tener derechos de propietario. Los cambios deben actualizarse en la interfaz de usuario. Propietario. Propietario. El usuario define los permisos sobre el diagrama. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Slo el propietario puede definir permisos sobre sus diagramas. Un diagrama puede tener varios propietarios.
86
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
El usuario debe tener permiso de edicin sobre el diagrama Los cambios deben actualizarse en la interfaz de usuario. Propietario / Usuario Registrado. Propietario / Usuario Registrado. El usuario selecciona la versin del diagrama. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se muestra el diagrama en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus diagramas.
87
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
El diseo de los diagramas abarca cualquier cambio que se desee realizar sobre el contenido o la disposicin de un diagrama concreto. Se trata de desarrollar un entorno grfico de dibujo dnde se buscar la forma de permitir a los usuarios trabajar de manera conjunta y remota sobre un mismo diagrama y a ser posible que los cambios se actualicen en tiempo real en todos los clientes. Propietario / Usuario Registrado / Colaborador. Mxima. Mxima. R2.1, R2.2, R2.3, R2.4, R2.5, R2.6, R2.7, R2.8 Los propietarios definen los permisos que tienen el resto de usuarios sobre sus diagramas. Un diagrama puede tener varios propietarios.
Tabla 3.2-9. Caso de Uso 2: Disear Diagramas (R2)
El usuario debe tener permiso de edicin sobre el diagrama Los cambios deben actualizarse en todos los clientes. Propietario / Usuario Registrado / Colaborador. Propietario / Usuario Registrado / Colaborador. El usuario solicita redimensionar el rea de diseo. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en todos los clientes conectados.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus diagramas.
Tabla 3.2-10. Escenario 2.1: Definir dimensiones del rea de diseo (R2.1)
88
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
El usuario debe tener permiso de edicin sobre el diagrama Los cambios deben actualizarse en todos los clientes. Propietario / Usuario Registrado / Colaborador. Propietario / Usuario Registrado / Colaborador. El usuario solicita la operacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en todos los clientes conectados.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus diagramas.
El usuario debe tener permiso de edicin sobre el diagrama Los cambios deben actualizarse en todos los clientes. Propietario / Usuario Registrado / Colaborador. Propietario / Usuario Registrado / Colaborador. El usuario solicita la operacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en todos los clientes conectados.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus diagramas.
89
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
El usuario debe tener permiso de edicin sobre el diagrama Los cambios deben actualizarse en todos los clientes. Propietario / Usuario Registrado / Colaborador. Propietario / Usuario Registrado / Colaborador. El usuario solicita la transformacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en todos los clientes conectados.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus diagramas.
El usuario debe tener permiso de edicin sobre el diagrama Los cambios deben actualizarse en todos los clientes. Propietario / Usuario Registrado / Colaborador. Propietario / Usuario Registrado / Colaborador. El usuario solicita la operacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en todos los clientes conectados.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus diagramas.
90
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
El usuario debe tener permiso de edicin sobre el diagrama Los cambios deben actualizarse en todos los clientes. Propietario / Usuario Registrado / Colaborador. Propietario / Usuario Registrado / Colaborador. El usuario solicita cambiar a un estado anterior o posterior. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en todos los clientes conectados.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus diagramas.
El usuario debe tener permiso de edicin sobre el diagrama Los cambios deben ser visibles en todo el sistema. Propietario / Usuario Registrado / Colaborador. Propietario / Usuario Registrado / Colaborador. El usuario solicita la operacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en todo el sistema.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus diagramas.
91
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
El usuario debe tener permiso de edicin sobre el diagrama El usuario puede comunicarse con los dems colaboradores Colaborador. Colaborador. El usuario solicita colaborar en un diagrama o es invitado. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en todo los clientes conectados.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus diagramas. Se valorar la posibilidad de implementar o reutilizar una herramienta tipo Chat para la comunicacin entre colaboradores.
92
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Permite crear, borrar y modificar nuevos componentes o extender los ya existentes, con el fin de poder emplearlos en el diseo de diagramas. Al igual que con la gestin de diagramas se permitir el acceso a versiones anteriores sin perder los cambios actuales. Propietario / Usuario Registrado. Media. Alta. R3.1, R3.2, R3.3, R3.4. El propietario define los permisos que tienen el resto de usuarios sobre sus componentes. Un componente puede tener varios propietarios.
Tabla 3.2-18. Caso de Uso 3: Gestionar Componentes (R3)
El usuario debe estar registrado en el sistema. Los cambios deben actualizarse en la interfaz de usuario. Propietario / Usuario Registrado. Propietario / Usuario Registrado. El usuario solicita la operacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus componentes.
93
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Los criterios de bsqueda deben ser vlidos. Los resultados deben mostrarse en la interfaz de usuario. Propietario / Usuario Registrado. Propietario / Usuario Registrado. El usuario establece los criterios de bsqueda. El sistema valida los datos de entrada. Se realizan las acciones pertinentes. Se muestra el resultado en la interfaz de usuario.
Excepciones
No se encuentra ningn componente que cumpla los criterios de bsqueda establecidos. Los propietarios definen la visibilidad de sus componentes para el resto de usuarios, es decir, pueden ocultarlos.
Tabla 3.2-20. Escenario 3.2: Buscar componentes (R3.2)
Notas
El usuario debe tener derechos de propietario. Los cambios deben actualizarse en la interfaz de usuario. Propietario. Propietario. El usuario define los permisos sobre el componente. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Slo el propietario puede definir permisos sobre sus componentes. Un componente puede tener varios propietarios.
94
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Tener permiso de edicin sobre el componente. Los cambios deben actualizarse en la interfaz de usuario. Propietario / Usuario Registrado. Propietario / Usuario Registrado. El usuario selecciona la versin del componente. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se muestra el diagrama en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus componentes.
95
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Este subsistema quiz sea uno de los ms complejos de disear ya que se trata de un campo totalmente novedoso en el que se proponen mecanismos para extraer la lgica de negocio de una aplicacin y dejarla en manos de los usuarios finales, de cara a mejorar su experiencia en el sistema. Propietario / Usuario Registrado. Baja. Alta. R4.1, R4.2, R4.3, R4.4, R4.5, R4.6, R4.7. No se contempla colaboracin sncrona entre usuarios. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus componentes. Un componente puede tener varios propietarios.
Tabla 3.2-23. Caso de Uso 4: Disear Componentes (R4)
Tener permiso de edicin sobre el componente. Los cambios deben actualizarse en la interfaz de usuario. Propietario / Usuario Registrado. Propietario / Usuario Registrado. El usuario solicita redimensionar el rea de diseo. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus componentes.
96
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Tener permiso de edicin sobre el componente. Los cambios deben actualizarse en la interfaz de usuario. Propietario / Usuario Registrado. Propietario / Usuario Registrado. El usuario solicita la operacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus componentes.
Tener permiso de edicin sobre el componente. Los cambios deben actualizarse en la interfaz de usuario. Propietario / Usuario Registrado. Propietario / Usuario Registrado. El usuario solicita la operacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus componentes.
97
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Tener permiso de edicin sobre el componente. Los cambios deben actualizarse en la interfaz de usuario. Propietario / Usuario Registrado. Propietario / Usuario Registrado. El usuario solicita la transformacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus componentes.
Tener permiso de edicin sobre el componente. Los cambios deben actualizarse en la interfaz de usuario. Propietario / Usuario Registrado / Colaborador. Propietario / Usuario Registrado / Colaborador. El usuario solicita la operacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus componentes.
98
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Tener permiso de edicin sobre el componente. Los cambios deben actualizarse en la interfaz de usuario. Propietario / Usuario Registrado / Colaborador. Propietario / Usuario Registrado / Colaborador. El usuario solicita cambiar a un estado anterior o posterior. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus componentes.
Tener permiso de edicin sobre el componente. Los cambios deben ser visibles en todo el sistema. Propietario / Usuario Registrado / Colaborador. Propietario / Usuario Registrado / Colaborador. El usuario solicita la operacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en todo el sistema.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen los permisos que tienen el resto de usuarios sobre sus componentes.
99
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Como cualquier otro sistema en el que intervengan usuarios es necesario disponer de mecanismo para crear, borrar y actualizar sus datos. Propietario / Usuario Registrado. Media. Media. R5.1, R5.2, R5.3, R5.4. Slo el propietario de la cuenta puede borrar o modificar los datos de la misma.
El usuario debe estar registrado en el sistema. Los cambios deben actualizarse en la interfaz de usuario. Propietario. Propietario. El usuario solicita la operacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Slo el propietario de la cuenta puede borrar o modificar los datos de la misma.
100
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Los datos de identificacin del usuario deben ser vlidos. El usuario puede acceder a sus contenidos privados. Propietario. Propietario. El usuario introduce sus datos de identificacin. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se actualizan los cambios en la interfaz de usuario.
Excepciones Notas
Los datos de identificacin son incorrectos. Un usuario puede validarse tantas veces como sea necesario.
Tabla 3.2-33. Escenario 5.2: Validar usuario (R5.2)
Los criterios de bsqueda deben ser vlidos. Los resultados deben mostrarse en la interfaz de usuario. Propietario / Usuario Registrado. Propietario / Usuario Registrado. El usuario establece los criterios de bsqueda. El sistema valida los datos de entrada. Se realizan las acciones pertinentes. Se muestra el resultado en la interfaz de usuario.
Excepciones
No se encuentra ningn usuario que cumpla los criterios de bsqueda establecidos. Los propietarios definen la visibilidad de sus datos para el resto de usuarios, es decir, pueden ocultarlos.
Tabla 3.2-34. Escenario 5.3: Buscar usuarios (R5.3)
Notas
101
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
El usuario debe estar registrado en el sistema. Los datos deben mostrarse en la interfaz de usuario. Propietario / Usuario Registrado. Propietario / Usuario Registrado. El usuario selecciona la opcin a visualizar. El sistema comprueba que tiene los permisos adecuados. Se realizan las acciones pertinentes. Se muestran los datos en la interfaz de usuario.
Excepciones Notas
El usuario no tiene permisos suficientes. Los propietarios definen la visibilidad de sus datos para el resto de usuarios, es decir, pueden ocultarlos.
102
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
103
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
DiagramManager Diagram
Java Java JSP + JavaScript XML / Struts Java / Struts Java / Struts Java / Struts Java / Struts Java / Struts Java / Struts
Vista
Controlador
AddDiagramAction.do (R1.1) RemoveDiagramAction.do (R1.1) EditDiagramAction.do (R1.1) QueryDiagramsAction.do (R1.2) ShareDiagramAction.do (R1.3) RestoreDiagramAction.do (R1.4)
DiagramManager Diagram
Java Java JSP + JavaScript Java / Struts Java / Struts Java / Struts Java / Struts Java / Struts
Vista Controlador
DiagramEditor CommitChangeAction.do (R2.x) QueryChangesAction.do (R2.x) SaveChangesAction.do (R2.7) ExportDiagramAction.do (R2.7) SendMessageAction.do (R2.8)
104
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
ComponentManager Component
Java Java JSP + JavaScript XML / Struts Java / Struts Java / Struts Java / Struts Java / Struts Java / Struts Java / Struts
Vista
Controlador
AddComponentAction.do (R3.1) RemoveComponentAction.do (R3.1) EditComponentAction.do (R3.1) QueryComponentsAction.do (R3.2) ShareComponentAction.do (R3.3) RestoreComponentAction.do (R3.4)
ComponentManager Component
Java Java JSP + JavaScript Java / Struts Java / Struts Java / Struts Java / Struts
Vista Controlador
105
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
UserManager User
Java Java JSP + JavaScript XML / Struts Java / Struts Java / Struts Java / Struts Java / Struts Java / Struts Java / Struts
Vista
Controlador
AddUserAction.do (R5.1) RemoveUserAction.do (R5.1) EditUserAction.do (R5.1) LoginAction.do (R5.2) QueryUsersAction.do (R5.3) QueryStatisticsAction.do (R5.4)
106
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
107
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Java
Requerimiento
R1 Gestionar Diagramas
Responsabilidades Descripcin Alta, baja y modificacin de diagramas Buscar diagramas Publicar / compartir diagramas Control de versiones de diagramas Observaciones
Puede disearse mediante el patrn Facade, delegando sus responsabilidades en otras clases diseadas a tal efecto.
Tabla 3.3-6. Clase DiagramManager (Modelo)
Java
Requerimiento
R2 Disear Diagramas
Responsabilidades Descripcin
Definir dimensiones del rea de diseo. Aadir y eliminar componentes. Realizar conexiones entre componentes. Aplicar transformaciones bsicas (zoom, rotacin). Cortar, copiar y pegar. Historial de deshacer / rehacer. Guardar, exportar e importar. Colaborar mediante pizarra compartida y Chat.
Observaciones
Para permitir la colaboracin sncrona de varios usuarios es necesario que compartan la misma instancia de esta clase, bien a travs de un repositorio en el contexto de la aplicacin o bien mediante una base da datos.
Tabla 3.3-7. Clase Diagram (Modelo)
108
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Java
Requerimiento
R3 Gestionar Componentes
Responsabilidades Descripcin Alta, baja y modificacin de componentes Buscar componentes Publicar / compartir componentes Control de versiones de componentes Observaciones
Puede disearse mediante el patrn Facade, delegando sus responsabilidades en otras clases diseadas a tal efecto.
Tabla 3.3-8. Clase ComponentManager (Modelo)
Java
Requerimiento
R4 Disear Componentes
Responsabilidades Descripcin
Definir dimensiones del componente. Aadir y eliminar formas bsicas. Definir zonas de interconexin (puertos). Aplicar transformaciones bsicas (zoom, rotacin). Cortar, copiar y pegar. Historial de deshacer / rehacer. Guardar, exportar e importar.
Observaciones
Java
Requerimiento
R5 Gestionar Usuarios
Responsabilidades Descripcin Alta, baja y modificacin de usuarios Validar usuario Buscar Usuarios Consultar estadsticas y puntuaciones Observaciones
Puede disearse mediante el patrn Facade, delegando sus responsabilidades en otras clases diseadas a tal efecto.
Tabla 3.3-10. Clase UserManager (Modelo)
109
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Java
Requerimiento
R5.1 R5.2
Puede implementarse una clase auxiliar tipo JavaBean que almacene los datos bsicos del usuario.
Tabla 3.3-11. Clase User (Modelo)
110
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
3.3.3.2. Vista La Vista es la capa encargada recoger las peticiones del usuario, transmitirlas al Controlador y mostrar los resultados derivados de las operaciones realizadas en el Modelo a travs de los datos depositados en la sesin, el contexto o la peticin.
El usuario solicita la pgina JSP que contiene el cdigo necesario para cargar un objeto JavaScript en el cliente, el cual delegar las operaciones al controlador mediante AJAX.
Tabla 3.3-12. Clase DiagramManager (Vista)
Definir dimensiones del rea de diseo. Aadir y eliminar componentes. Realizar conexiones entre componentes. Aplicar transformaciones bsicas (zoom, rotacin). Cortar, copiar y pegar. Historial de deshacer / rehacer. Guardar, exportar e importar. Colaborar mediante pizarra compartida y Chat.
Observaciones
El usuario solicita la pgina JSP que contiene el cdigo necesario para cargar un objeto JavaScript en el cliente, el cual delegar las operaciones al controlador mediante AJAX.
Tabla 3.3-13. Clase DiagramEditor (Vista)
111
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
El usuario solicita la pgina JSP que contiene el cdigo necesario para cargar un objeto JavaScript en el cliente, el cual delegar las operaciones al controlador mediante AJAX.
Tabla 3.3-14. Clase ComponentManager (Vista)
Definir dimensiones del componente. Aadir y eliminar formas bsicas. Definir zonas de interconexin (puertos). Aplicar transformaciones bsicas (zoom, rotacin). Cortar, copiar y pegar. Historial de deshacer / rehacer. Guardar, exportar e importar.
Observaciones
El usuario solicita la pgina JSP que contiene el cdigo necesario para cargar un objeto JavaScript en el cliente, el cual delegar las operaciones al controlador mediante AJAX.
Tabla 3.3-15. Clase ComponentEditor (Vista)
El usuario solicita la pgina JSP que contiene el cdigo necesario para cargar un objeto JavaScript en el cliente, el cual delegar las operaciones al controlador mediante AJAX.
Tabla 3.3-16. Clase UserManager (Vista)
112
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
XML / Struts
Requerimiento
R1 Gestionar Diagramas
Responsabilidades Descripcin Alta y modificacin de diagramas Observaciones
DynaActionForm
R1.1
No es una clase Java: los campos del formulario se definen en el archivo de configuracin de Struts (Struts-config.xml) y las validaciones en el archivo de configuracin del framework Struts Validator (validation.xml).
Tabla 3.3-17. Clase DiagramDynaActionForm (Vista)
XML / Struts
Requerimiento
R3 Gestionar Componentes
Responsabilidades Descripcin Alta y modificacin de componentes Observaciones
DynaActionForm
R3.1
No es una clase Java: los campos del formulario se definen en el archivo de configuracin de Struts (Struts-config.xml) y las validaciones en el archivo de configuracin del framework Struts Validator (validation.xml).
Tabla 3.3-18. Clase ComponentDynaActionForm (Vista)
XML / Struts
Requerimiento
DynaActionForm
R5.1
No es una clase Java: los campos del formulario se definen en el archivo de configuracin de Struts (Struts-config.xml) y las validaciones en el archivo de configuracin del framework Struts Validator (validation.xml).
Tabla 3.3-19. Clase UserDynaActionForm (Vista)
113
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
3.3.3.3. Controlador Se encarga de coordinar el flujo de la aplicacin, conectando adecuadamente las peticiones de la Vista con servicios del Modelo y actualizando los resultados en la peticin, la sesin o el contexto para que los cambios sean accesibles a la Vista. Al emplear Struts como soporte para el desarrollo del servidor, esta capa queda muy simplificada ya que implementa un nico ActionServlet que se encarga de dirigir automticamente el flujo de la aplicacin a travs de la configuracin definida en el archivo struts-config.xml y mediante la implementacin de clases que deriven de la clase Action. Estas clases derivadas nicamente necesitan implementar el mtodo execute, donde se definirn las llamadas a las clases del Modelo que se encargarn de realizar las operaciones de la lgica de negocio y mantener el estado.
114
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
115
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
116
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
117
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
118
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
119
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
120
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
121
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
122
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
123
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
124
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
3.6. Prototipos
Este apartado se dedica a los prototipos desarrollados durante las fases de anlisis y diseo del sistema, el enfoque elegido es de prototipado funcional, reutilizando los prototipos desarrollados para la construccin de los siguientes. El objetivo de estos prototipos es estudiar la viabilidad del desarrollo del cliente mediante tecnologas AJAX con el soporte de Dojo Toolkit [Dojo] y valorar las posibilidades de integracin de los diferentes paquetes desarrollados.
125
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
126
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
127
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
12/07/2007 1.1, 2.2, 2.4, 2.7, 2.8, 5.1 1.2, 1.5, 1.6, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
128
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
129
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
CAPTULO 4: DISEO
En este captulo se describen brevemente los patrones de diseo empleados, se subdivide el sistema en paquetes o subsistemas y se disean los diagramas de clases. Una vez completados estos apartados se proponen los diagramas de secuencia y de estados ms relevantes, el diagrama Entidad-Relacin para la base de datos a desplegar, la descripcin detallada de las clases y el diagrama de componentes.
130
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
131
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
132
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
133
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
134
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
135
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
136
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
137
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
138
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
139
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
140
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
141
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
142
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
La interaccin entre la vista y el controlador se puede generalizar perfectamente con el diagrama de secuencia anterior. Si la accin solicitada corresponde a la zona privada, el LoginFilter captura la peticin y comprueba que el usuario est registrado mediante un acceso a la sesin del mismo. En el caso de una peticin por formulario, el framework Struts Validator comprueba los campos del formulario y, en caso de encontrar alguno incorrecto, redirecciona de forma automtica a la pgina de la solicitud con los errores correspondientes. Los Action implementados crearn los Beans adecuados del subsistema common para transferir y recibir informacin del modelo, mediante el Facade del mismo, el resto de operaciones se describen ms adelante. Finalmente el framework Struts Tiles genera la respuesta HTTP mediante los JSPs, los archivos de mensajes internacionalizados y los Beans disponibles.
143
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
El modelo recoge todas las peticiones del controlador desde la clase ModelFacade, encargada de redirigirlas hacia el EntityManager adecuado, bien el UserManager para los usuarios, o bien el DiagramManager para los diagramas. Dichas clases se encargarn de realizar todas las acciones necesarias de la lgica de negocio antes y/o despus de acceder a la capa de persistencia, como puede ser la comprobacin de privilegios o el procesamiento y serializacin de datos. La comunicacin entre el modelo y la capa de persistencia se realiza a travs de la clase PersistenceFacade que delega las acciones en las clases OracleEntityDAO, implementadas a partir de las interfaces genricas EntityDAO, es decir, habr un interfaz por cada tipo de entidad y una clase por cada tipo de base de datos a la que se desee dar soporte, en esta versin slo usuarios y diagramas como entidades y Oracle 10g como base de datos.
144
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Los diagramas pueden cargarse desde la base de datos mediante la secuencia de operaciones descrita en el apartado anterior o pueden ser importados desde un archivo XML que use el vocabulario GraphML. Los archivos GraphML permiten exportar e importar los diagramas y se emplearn para recoger los diagramas al crear nuevas versiones, es decir, mientras una versin est en edicin es necesario cargar su archivo correspondiente y actualizarlo en el cliente con los cambios almacenados en la base de datos.
145
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
146
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
147
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
ModelFacade
R1, R2, R5 Proveer al controlador de todos los servicios necesarios. RNF 1 Delegar las peticiones del controlador en la clase adecuada del modelo.
Acceso Retorno Mtodos Nombre Modo Parmetros
public public public public public public public public public public public public public public
void void Collection UserBean boolean void void void void Collection DiagramBean Collection DiagramBean String
addUser exit getAllUsers getUser login addDiagram changeDiagramPrivilege commitDiagramChange destroyDiagram getAllDiagrams getDiagram getDiagramPrivileges loadDiagram queryDiagramChanges
Observaciones
virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual
user : UserBean userId : String void userId : String user : TinyUserBean bean : DiagramBean actorId : String privilege : DiagramPrivilegeBean change : DiagramChangeBean actorId : String diagramId : String actorId : String actorId : String diagramId : String actorId : String diagramId : String actorId : String diagramId : String lastChange : DiagramChangeBean
148
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
DiagramManager R1.1 R1.2 R1.3 R1.4 R2.1 R2.2 R2.3 R2.4 R2.5 R2.6 R2.7 R2.8 RNF 2.9
Acceso
Se encarga de realizar las acciones de la lgica de public negocio correspondiente a los diagramas.
Requerimientos
Alta, baja y modificacin de diagramas Buscar diagramas Publicar / compartir diagramas Control de versiones de diagramas Definir dimensiones del rea de diseo. Aadir y eliminar componentes. Realizar conexiones entre componentes. Aplicar transformaciones bsicas (zoom, rotacin). Cortar, copiar y pegar. Historial de deshacer / rehacer. Guardar, exportar e importar. Colaborar mediante pizarra compartida y Chat. Disear un sistema de control de accesos y seguridad adecuado.
Retorno Mtodos Nombre Modo Parmetros
virtual bean : DiagramBean actorId : String virtual privilege : DiagramPrivilegeBean change : virtual DiagramChangeBean actorId : String virtual diagramId : String virtual actorId : String actorId : String virtual diagramId : String actorId : String virtual diagramId : String actorId : String virtual diagramId : String lastChange : virtual DiagramChangeBean
Esta clase realiza las operaciones de la lgica de negocio relativa a los diagramas, delegando las responsabilidades de mantenimiento del estado a la capa de persistencia. Las acciones restringidas por permisos requieren que se validen los permisos del usuario antes de realizar dichas operaciones.
Tabla 4.5-2. Clase DiagramManager
149
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Se encarga de realizar las acciones de la lgica de public negocio correspondiente a los usuarios.
Requerimientos
Alta, baja y modificacin de usuarios Validar usuario Buscar usuarios Consultar datos de usuarios Disear un sistema de control de accesos y seguridad adecuado.
Retorno Mtodos Nombre Modo Parmetros
Esta clase realiza las operaciones de la lgica de negocio relativa a los usuarios, delegando las responsabilidades de mantenimiento del estado a la capa de persistencia.
Tabla 4.5-3. Clase UserManager
150
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
PersistenceFacade
R1, R2, R5 Proveer al modelo de todos los servicios de persistencia necesarios. RNF 1 Delegar las peticiones del modelo en el DAO adecuado.
Acceso Retorno Mtodos Nombre Modo Parmetros
private public public public public public public public public public public public public public public
DAOFactory void void Collection UserBean boolean void void void void Collection DiagramBean Collection DiagramBean String
getDAOFactory addUser exit getAllUsers getUser login addDiagram changeDiagramPrivilege commitDiagramChange destroyDiagram getAllDiagrams getDiagram getDiagramPrivileges loadDiagram queryDiagramChanges
Observaciones
virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual
void user : UserBean userId : String void userId : String user : TinyUserBean bean : DiagramBean actorId : String privilege : DiagramPrivilegeBean change : DiagramChangeBean actorId : String diagramId : String actorId : String actorId : String diagramId : String actorId : String diagramId : String actorId : String diagramId : String lastChange : DiagramChangeBean
151
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
DAOFactory
Crear el DAOFactory adecuado. Definir los tipos DAO que pueden ser creados.
Atributos Acceso Tipo / Clase Nombre Static
public
Acceso
byte
Retorno
ORACLE
Mtodos Nombre Modo Parmetros
Construye el DAOFactory adecuado en funcin del tipo de base de datos y define los tipos de DAOs que se pueden crear.
Tabla 4.5-5. Clase DAOFactory
152
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
DiagramDAO R1.1 R1.2 R1.3 R1.4 R2.1 R2.2 R2.3 R2.4 R2.5 R2.6 R2.7 R2.8
Acceso
Define las operaciones que se pueden realizar sobre la public entidad Diagram de la base de datos.
Requerimientos
Alta, baja y modificacin de diagramas Buscar diagramas Publicar / compartir diagramas Control de versiones de diagramas Definir dimensiones del rea de diseo. Aadir y eliminar componentes. Realizar conexiones entre componentes. Aplicar transformaciones bsicas (zoom, rotacin). Cortar, copiar y pegar. Historial de deshacer / rehacer. Guardar, exportar e importar. Colaborar mediante pizarra compartida y Chat.
Retorno Mtodos Nombre Modo Parmetros
abstract bean : DiagramBean actorId : String abstract privilege : DiagramPrivilegeBean change : abstract DiagramChangeBean actorId : String abstract diagramId : String abstract actorId : String actorId : String abstract diagramId : String actorId : String abstract diagramId : String actorId : String abstract diagramId : String lastChange : abstract DiagramChangeBean
153
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Define las operaciones que se pueden realizar sobre la public entidad User de la base de datos.
Requerimientos
Alta, baja y modificacin de usuarios Validar usuario Buscar usuarios Consultar datos de usuarios
Retorno Mtodos Nombre Modo Parmetros
154
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Permite crear una conexin JDBC con Oracle 10g y public solicitar los DAO que se definen en DAOFactory.
Requerimientos
Crear y gestionar las conexiones con Oracle. Crear los tipos DAO definidos en DAOFactory. Liberar los recursos empleados al finalizar el acceso a Oracle.
Atributos Acceso Tipo / Clase Nombre Static
public
Acceso
byte
Retorno
ORACLE
Mtodos Nombre Modo Parmetros
SI void stat : Statement static rs : ResultSet abstract void abstract void static
Connection void
createConnection freeResources
Construye el DAOFactory adecuado en funcin del tipo de base de datos y define los tipos de DAOs que se pueden crear.
Tabla 4.5-8. Clase OracleDAOFactory
155
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
OracleDiagramDAO Extiende: DiagramDAO R1.1 R1.2 R1.3 R1.4 R2.1 R2.2 R2.3 R2.4 R2.5 R2.6 R2.7 R2.8
Acceso
Implementa las operaciones que se pueden realizar public sobre la entidad Diagram de la base de datos.
Requerimientos
Alta, baja y modificacin de diagramas Buscar diagramas Publicar / compartir diagramas Control de versiones de diagramas Definir dimensiones del rea de diseo. Aadir y eliminar componentes. Realizar conexiones entre componentes. Aplicar transformaciones bsicas (zoom, rotacin). Cortar, copiar y pegar. Historial de deshacer / rehacer. Guardar, exportar e importar. Colaborar mediante pizarra compartida y Chat.
Retorno Mtodos Nombre Modo Parmetros
virtual bean : DiagramBean actorId : String virtual privilege : DiagramPrivilegeBean change : virtual DiagramChangeBean actorId : String virtual diagramId : String virtual actorId : String actorId : String virtual diagramId : String actorId : String virtual diagramId : String actorId : String virtual diagramId : String lastChange : virtual DiagramChangeBean
156
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Implementa las operaciones que se pueden realizar public sobre la entidad User de la base de datos.
Requerimientos
Alta, baja y modificacin de usuarios Validar usuario Buscar usuarios Consultar datos de usuarios
Retorno Mtodos Nombre Modo Parmetros
157
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
GraphMLFile
public
R2.7 Guardar, exportar e importar. RNF 2.6 Definir el modelo de datos mediante tecnologas XML.
Atributos Acceso Tipo / Clase Nombre Mtodos Nombre Static
private
Acceso
GraphMLDefaultHandler defaultHandler
Retorno Modo
NO
Parmetros
virtual void virtual filename : String virtual stream : Reader graph : Graph virtual filename : String graph : Graph virtual stream : Writer
Esta clase redefine la clase GraphMLFile de la librera JUNG para adaptarla a las necesidades del sistema.
Tabla 4.5-11. Clase GraphMLFile
158
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Gestiona los eventos producidos por el SAXParser GraphMLDefaultHandler public empleado para analizar el documento XML.
Requerimientos
NO NO NO NO NO NO nsUri : String lName : String qName : String attrs : Attributes nsUri : String lName : String qName : String attrs : Attributes chars : char[] start : int length : int e : SAXParseException e : SAXParseException e : SAXParseException void void void attributeMap : Map attributeMap : Map attributeMap : Map attributeMap : Map qName : String attributeMap : Map attrs : Attributes textData : String udc : UserDataContainer attributeMap : Map elem : GraphMlElement
public
void
startElement
virtual
public
void
endElement
virtual
public public public public public protected protected protected protected protected protected private private private private
void void void void GraphMlErrorHandler Graph StringLabeller void void void void Map void void void
characters warning error fatalError getErrorHandler getGraph getLabeller createGraph createVertex createEdge createKey getAttributeMap createTextData setUserData
Observaciones
virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual
protected void
createNestedElem. virtual
addNestedElemen. virtual
Esta clase redefine la clase GraphMLDefaultHandler de la librera JUNG para adaptarla a las necesidades del sistema.
Tabla 4.5-12. Clase GraphMLDefaultHandler
159
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
GraphMLErrorHandler
Captura las excepciones lanzadas por el SAXParser public empleado para analizar el documento XML.
Requerimientos Atributos
NO NO NO virtual virtual virtual virtual virtual virtual virtual e : SAXParseException e : SAXParseException e : SAXParseException void void void e : SAXParseException
Esta clase implementa los mtodos de gestin de excepciones SAXParseException y almacena los mensajes internamente para su posterior consulta. Se emplea internamente en la clase GraphMLDefaultHandler, descrita en el apartado anterior.
Tabla 4.5-13. Clase GraphMLErrorHandler
160
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
GraphMLSerializer
NO NO NO static virtual virtual virtual virtual virtual virtual str : String graph : Graph filename : String graph : Graph stream : PrintStream graph : Graph graph : Graph udc : UserDataContainer elem : GraphMLElement
161
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
JSONSerializer
public
Clase auxiliar para convertir a formato JSON los objetos que se devuelven en las llamadas AJAX de la vista.
Requerimientos Atributos
NO NO NO virtual virtual virtual virtual virtual virtual virtual graph : Graph vector : Vector array : Object[] void void void udc : UserDataContainer
Pueden aadirse tantos mtodos como sean necesarios durante el desarrollo del sistema, tambin sera recomendable valorar el diseo de una interfaz adecuada para transferir parmetros a esta clase.
Tabla 4.5-15. Clase JSONSerializer
162
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public
Alta, baja y modificacin de diagramas Buscar diagramas Publicar / compartir diagramas Control de versiones de diagramas
Atributos Tipo / Clase Nombre Static
public public public public public public public private private private private private private private
byte byte byte byte byte byte byte String String String int String byte String
DIAGRAM_PRIVILEGE_NONE DIAGRAM_PRIVILEGE_VIEW DIAGRAM_PRIVILEGE_COPY DIAGRAM_PRIVILEGE_EDIT DIAGRAM_PRIVILEGE_MAKE_VERSIONS DIAGRAM_PRIVILEGE_TOTAL_CONTROL DIAGRAM_PRIVILEGE_CREATOR id name creator version description privilege jsonObjects
Observaciones
SI SI SI SI SI SI SI NO NO NO NO NO NO NO
Esta clase se emplea para la transferencia de informacin relativa a los diagramas, a travs de todas las capas del sistema a desarrollar.
Tabla 4.5-16. Clase DiagramBean
163
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public
Alta, baja y modificacin de diagramas Buscar diagramas Publicar / compartir diagramas Control de versiones de diagramas Disear un sistema de control de accesos y seguridad adecuado.
Atributos Tipo / Clase Nombre Static
NO NO NO
Esta clase se emplea para la transferencia de informacin relativa a los permisos de los usuarios sobre los diagramas, a travs de todas las capas del sistema a desarrollar.
Tabla 4.5-17. Clase DiagramPrivilegeBean
public
Definir dimensiones del rea de diseo. Aadir y eliminar componentes. Realizar conexiones entre componentes. Aplicar transformaciones bsicas (zoom, rotacin). Cortar, copiar y pegar. Historial de deshacer / rehacer. Guardar, exportar e importar. Colaborar mediante pizarra compartida y Chat.
Atributos Tipo / Clase Nombre Static
NO NO NO NO NO
Esta clase se emplea para la transferencia de informacin relativa a los cambios que los usuarios realizan sobre los diagramas.
Tabla 4.5-18. Clase DiagramChangeBean
164
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
TinyUserBean
public
R5.2 Validar usuario RNF 2.9 Disear un sistema de control de accesos y seguridad adecuado.
Atributos Acceso Tipo / Clase Nombre Static
private private
String String
id password
Observaciones
NO NO
Esta clase se emplea para la transferencia de informacin relativa al proceso de login de los usuarios del sistema.
Tabla 4.5-19. Clase TinyUserBean
public
NO NO NO NO
Esta clase se emplea para la transferencia de informacin relativa a los usuarios del sistema.
Tabla 4.5-20. Clase UserBean
165
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
FilterLogin
public
Comprueba que el usuario est registrado al solicitar un recurso privado del sistema.
Requerimientos
R5.2 Validar usuario RNF 2.9 Disear un sistema de control de accesos y seguridad adecuado.
Acceso Retorno Mtodos Nombre Modo Parmetros
public
void
doFilter
virtual
Observaciones
Todas las peticiones que accedan desde el contexto app/ se consideran accesos privados y requieren que el usuario se haya registrado en el sistema. En caso contrario se le redireccionar a la pgina de registro, mostrando un error adecuado.
Tabla 4.5-21. Clase FilterLogin
166
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public
public
ActionForward
execute
public
public
ActionForward
execute
public
public
ActionForward
execute
167
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
QueryDiagramChangeAction Extiende: Action R2.1 R2.2 R2.3 R2.4 R2.5 R2.6 R2.7 R2.8
Acceso
public
Requerimientos
Definir dimensiones del rea de diseo. Aadir y eliminar componentes. Realizar conexiones entre componentes. Aplicar transformaciones bsicas (zoom, rotacin). Cortar, copiar y pegar. Historial de deshacer / rehacer. Guardar, exportar e importar. Colaborar mediante pizarra compartida y Chat.
Retorno Mtodos Nombre Modo Parmetros
public
ActionForward
execute
CommitDiagramChangeAction Extiende: Action R2.1 R2.2 R2.3 R2.4 R2.5 R2.6 R2.7 R2.8
Acceso
public
Requerimientos
Definir dimensiones del rea de diseo. Aadir y eliminar componentes. Realizar conexiones entre componentes. Aplicar transformaciones bsicas (zoom, rotacin). Cortar, copiar y pegar. Historial de deshacer / rehacer. Guardar, exportar e importar. Colaborar mediante pizarra compartida y Chat.
Retorno Mtodos Nombre Modo Parmetros
public
ActionForward
execute
168
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public
Control de versiones de diagramas Historial de deshacer / rehacer. Guardar, exportar e importar. Colaborar mediante pizarra compartida y Chat.
Retorno Mtodos Nombre Modo Parmetros
public
ActionForward
execute
Consulta todos los diagramas a los que puede public acceder el usuario.
Requerimientos
public
ActionForward
execute
public
Requerimientos
public
ActionForward
execute
virtual
169
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Consulta los permisos de los usuarios del public sistema sobre el diagrama.
Requerimientos
public
ActionForward
execute
virtual
170
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public
ActionForward
execute
virtual
public
ActionForward
execute
virtual
public
ActionForward
execute
virtual
171
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
R5.2 Validar usuario RNF 2.9 Disear un sistema de control de accesos y seguridad adecuado.
Acceso Retorno Mtodos Nombre Modo Parmetros
public
ActionForward
execute
virtual
Validar usuario
Retorno Parmetros
public
ActionForward
execute
virtual
Validar usuario
Retorno Mtodos Nombre Modo Parmetros
public
ActionForward
execute
virtual
172
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public
Definir dimensiones del rea de diseo. Aadir y eliminar componentes. Realizar conexiones entre componentes. Aplicar transformaciones bsicas (zoom, rotacin). Cortar, copiar y pegar. Historial de deshacer / rehacer. Guardar, exportar e importar. Colaborar mediante pizarra compartida y Chat.
Atributos Tipo / Clase Nombre Static
NO NO NO NO NO NO virtual virtual virtual virtual virtual virtual virtual virtual virtual virtual node : Json sourceId : String targetId : String void void change : Json void e : Event e : Event e : Event response HttpResponse ioArgs : xhrArgs
public public public public public public public public public private
void void void void void void void void void void
createNode createLink zoomIn zoomOut commitChange queryChanges onMouseDown onMouseMove onMouseUp handleXhrResponse
Observaciones
No es una clase real tal y como se entiende en Java, ya que JavaScript es un lenguaje de prototipos, sin embargo la sintaxis a emplear es muy similar gracias a los mecanismos de definicin de clases de Dojo Toolkit.
Tabla 4.5-37. Clase DiagramEditor
173
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public
Almacena los datos necesarios para la representacin e interaccin de los objetos del diagrama a disear.
Responsabilidades
Aadir y eliminar componentes. Realizar conexiones entre componentes. Aplicar transformaciones bsicas (zoom, rotacin).
Atributos Tipo / Clase Nombre Static
No es una clase real tal y como se entiende en Java, ya que JavaScript es un lenguaje de prototipos, sin embargo la sintaxis a emplear es muy similar gracias a los mecanismos de definicin de clases de Dojo Toolkit.
Tabla 4.5-38. Clase Node
174
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public
Almacena los datos necesarios para la representacin e interaccin de las conexiones entre los nodos del diagrama a disear.
Responsabilidades
public public
void String
createLink toJson
Observaciones
virtual virtual
No es una clase real tal y como se entiende en Java, ya que JavaScript es un lenguaje de prototipos, sin embargo la sintaxis a emplear es muy similar gracias a los mecanismos de definicin de clases de Dojo Toolkit.
Tabla 4.5-39. Clase Link
175
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
176
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
177
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
CAPTULO 5: CONSTRUCCIN
Este captulo se dedica ntegramente a los archivos de configuracin desarrollados, as como al cdigo fuente y las pginas JSP.
178
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
179
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.1.1. web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<!--========================================================================--> <!-- Description --> <!--========================================================================--> <description>Web 2.0 Enviroment for Object Interconection Diagram Design </description>
<!--========================================================================--> <!-- Default WEB page --> <!--========================================================================--> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
<!--========================================================================--> <!-- Standard Action Servlet Configuration (with debugging) --> <!--========================================================================--> <servlet>
<!-- Context-relative path to Struts default configuration file --> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param>
180
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<!-- Set numeric Java wrappers default to null --> <init-param> <param-name>convertNull</param-name> <param-value>true</param-value> </init-param>
<!-- Set validate configuration file with XML parser to true (default) --> <init-param> <param-name>validating</param-name> <param-value>true</param-value> </init-param>
<load-on-startup>2</load-on-startup> </servlet>
<!--========================================================================--> <!-- Standard Action Servlet Mapping --> <!--========================================================================--> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
<!--========================================================================--> <!-- Standard Filter Configuration --> <!--========================================================================--> <filter> <filter-name>LoginFilter</filter-name> <filter-class>abstractminds.controller.filter.LoginFilter </filter-class> </filter>
181
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<!--========================================================================--> <!-- Standard Filter Mapping --> <!--========================================================================--> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/app/*</url-pattern> </filter-mapping>
<!--========================================================================--> <!-- Struts Tag Library Descriptors --> <!--========================================================================--> <taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-logic</taglib-uri> <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-nested</taglib-uri> <taglib-location>/WEB-INF/struts-nested.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-tiles</taglib-uri> <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location> </taglib>
</web-app>
182
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.1.2. struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
<!-- Login DynaActionForm --> <form-bean name="LoginForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name="id" type="java.lang.String"/> <form-property name="password" type="java.lang.String"/> </form-bean>
<!-- AddUser DynaActionForm --> <form-bean name="AddUserForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name="id" type="java.lang.String"/> <form-property name="password" type="java.lang.String"/> <form-property name="firstName" type="java.lang.String"/> <form-property name="lastName" type="java.lang.String"/> <form-property name="email" type="java.lang.String"/> </form-bean>
183
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
-->
</form-beans>
<!--========================================================================--> <!-- Global Forward Definitions --> <!--========================================================================--> <global-forwards> <forward name="login" path="loginTilesDefinition"/> <forward name="global_error" path="errorTilesDefinition"/> <forward name="ajax_error" path="/ajax_error.jsp"/> </global-forwards>
<action path="/LoginAction" type="abstractminds.controller.action.LoginAction" scope="request" name="LoginForm" input="/Login.do"> <forward name="success" path="/LoginCounterAction.do"/> <forward name="bad_login" path="/Login.do"/> </action>
184
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<action path="/AddUserAction" type="abstractminds.controller.action.user.AddUserAction" scope="request" name="AddUserForm" input="/AddUser.do"> <forward name="success" path="/LoginCounterAction.do"/> </action>
<action path="/ValidateGraphMLAction" type="abstractminds.controller.action.ValidateGraphMLAction"> <forward name="success" path="/XML.do"/> <forward name="parse_error" path="/XML.do"/> </action>
185
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<action path="/app/AddDiagramAction" type="abstractminds.controller.action.diagram.AddDiagramAction" scope="request" name="AddDiagramForm" input="/app/AddDiagram.do"> <forward name="success" path="/app/LoadDiagramAction.do" redirect="true"/> </action>
<action path="/app/QueryDiagramPrivilegesAction"
<action path="/app/ChangeDiagramPrivilegeAction" type="abstractminds.controller.action.diagram.ChangeDiagramPrivilegeAction"> <forward name="diagrams" path="/app/QueryAllDiagramsAction.do" redirect="true"/> <forward name="privileges" path="/app/QueryDiagramPrivilegesAction.do" redirect="true"/> </action>
186
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
</action-mappings>
<!--========================================================================--> <!-- Message Resources Definitions --> <!--========================================================================--> <message-resources parameter="abstractminds.common.MessageResources" />
<!--========================================================================--> <!-- Plug-in's Configuration --> <!--========================================================================--> <!-- Tiles plugin --> <plug-in className="org.apache.struts.tiles.TilesPlugin" >
<!-- Context-relative path to XML definition file --> <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
187
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<!-- Set XML Validation to true --> <set-property property="definitions-parser-validate" value="true" />
</plug-in>
<!-- Context-relative path to XML definition file --> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
<!-- Tells Javascript to validate all fields --> <set-property property="stopOnFirstError" value="false"/>
</plug-in>
</struts-config>
188
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.1.3. validation.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<formset>
<form name="LoginForm"> <field property="id" depends="required,minlength,maxlength,mask"> <arg0 key="form.user.id"/> <arg1 name="minlength" key="${var:minlength}" resource="false"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <var><var-name>minlength</var-name><var-value>4</var-value></var> <var><var-name>maxlength</var-name><var-value>20</var-value></var> <var> <var-name>mask</var-name> <var-value>^[0-9a-zA-Z_]*$</var-value> </var> </field> <field property="password" depends="required,minlength,maxlength,mask"> <arg0 key="form.user.password"/> <arg1 name="minlength" key="${var:minlength}" resource="false"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <arg1 name="mask" key="${var:mask}" resource="false"/> <var><var-name>minlength</var-name><var-value>4</var-value></var> <var><var-name>maxlength</var-name><var-value>20</var-value></var> <var> <var-name>mask</var-name> <var-value>^[0-9a-zA-Z_]*$</var-value> </var> </field> </form>
189
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<form name="AddUserForm"> <field property="id" depends="required,minlength,maxlength,mask"> <arg0 key="form.user.id"/> <arg1 name="minlength" key="${var:minlength}" resource="false"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <arg1 name="mask" key="${var:mask}" resource="false"/> <var><var-name>minlength</var-name><var-value>4</var-value></var> <var><var-name>maxlength</var-name><var-value>20</var-value></var> <var> <var-name>mask</var-name> <var-value>^[0-9a-zA-Z_]*$</var-value> </var> </field> <field property="password" depends="required,minlength,maxlength,mask"> <arg0 key="form.user.password"/> <arg1 name="minlength" key="${var:minlength}" resource="false"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <arg1 name="mask" key="${var:mask}" resource="false"/> <var><var-name>minlength</var-name><var-value>4</var-value></var> <var><var-name>maxlength</var-name><var-value>20</var-value></var> <var> <var-name>mask</var-name> <var-value>^[0-9a-zA-Z_]*$</var-value> </var> </field> <field property="firstName" depends="maxlength,mask"> <arg0 key="form.user.first_name"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <arg1 name="mask" key="${var:mask}" resource="false"/> <var><var-name>maxlength</var-name><var-value>50</var-value></var> <var> <var-name>mask</var-name> <var-value>^[0-9a-zA-Z_ ]*$</var-value> </var> </field>
190
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<field property="lastName" depends="maxlength,mask"> <arg0 key="form.user.last_name"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <arg1 name="mask" key="${var:mask}" resource="false"/> <var><var-name>maxlength</var-name><var-value>100</var-value></var> <var> <var-name>mask</var-name> <var-value>^[0-9a-zA-Z_ ]*$</var-value> </var> </field> <field property="email" depends="maxlength,email"> <arg0 key="form.user.email"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <var><var-name>maxlength</var-name><var-value>50</var-value></var> </field> </form> <form name="AddDiagramForm"> <field property="name" depends="required,maxlength,mask"> <arg0 key="form.diagram.name"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <var><var-name>maxlength</var-name><var-value>50</var-value></var> <var> <var-name>mask</var-name> <var-value>^[0-9a-zA-Z_ ]*$</var-value> </var> </field> <field property="description" depends="maxlength,mask"> <arg0 key="form.diagram.description"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <arg1 name="mask" key="${var:mask}" resource="false"/> <var><var-name>maxlength</var-name><var-value>500</var-value></var> <var> <var-name>mask</var-name> <var-value>^[0-9a-zA-Z_]*$</var-value> </var> </field> </form> </formset> </form-validation>
191
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.1.4. tiles-defs.xml
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_3.dtd">
<tiles-definitions>
<!--========================================================================--> <!-- Default Tiles Definition --> <!--========================================================================--> <definition name="defaultTilesDefinition" path="/defaultLayout.jsp"> <put name="appTitle" type="string" value="AbstractMinds" /> <put name="titleKey" type="string" value="title.index" /> <put name="header" value="header.jsp" /> <put name="body" value="menu.jsp" /> <put name="menu" value="menu.jsp" /> <put name="footer" value="footer.jsp" /> </definition>
<!--========================================================================--> <!-- Login Tiles Definition --> <!--========================================================================--> <definition name="loginTilesDefinition" extends="defaultTilesDefinition"> <put name="titleKey" type="string" value="title.login"/> <put name="body" value="login.jsp" /> </definition>
<!--========================================================================--> <!-- Add user Tiles Definition --> <!--========================================================================--> <definition name="addUserTilesDefinition" extends="defaultTilesDefinition"> <put name="titleKey" type="string" value="title.add_user" /> <put name="body" value="addUser.jsp" /> </definition>
<!--========================================================================--> <!-- User Tiles Definition --> <!--========================================================================--> <definition name="userTilesDefinition" extends="defaultTilesDefinition"> <put name="titleKey" type="string" value="title.user" /> <put name="body" value="user.jsp" /> </definition>
192
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<!--========================================================================--> <!-- All users Tiles Definition --> <!--========================================================================--> <definition name="usersTilesDefinition" extends="defaultTilesDefinition"> <put name="titleKey" type="string" value="title.users" /> <put name="body" value="users.jsp" /> </definition>
<!--========================================================================--> <!-- Add diagram Tiles Definition --> <!--========================================================================--> <definition name="addDiagramTilesDefinition" extends="defaultTilesDefinition"> <put name="titleKey" type="string" value="title.add_diagram" /> <put name="body" value="addDiagram.jsp" /> </definition>
<!--========================================================================--> <!-- Diagram Tiles Definition --> <!--========================================================================--> <definition name="diagramTilesDefinition" extends="defaultTilesDefinition"> <put name="titleKey" type="string" value="title.diagram" /> <put name="body" value="diagram.jsp" /> </definition>
<!--========================================================================--> <!-- Diagram Users Tiles Definition --> <!--========================================================================--> <definition name="diagramPrivilegesTilesDefinition" extends="defaultTilesDefinition"> <put name="titleKey" type="string" value="title.diagram.privileges" /> <put name="body" value="diagramPrivileges.jsp" /> </definition>
<!--========================================================================--> <!-- All diagrams Tiles Definition --> <!--========================================================================--> <definition name="diagramsTilesDefinition" extends="defaultTilesDefinition"> <put name="titleKey" type="string" value="title.diagrams" /> <put name="body" value="diagrams.jsp" /> </definition>
193
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<!--========================================================================--> <!-- Error Tiles Definition --> <!--========================================================================--> <definition name="errorTilesDefinition" extends="defaultTilesDefinition"> <put name="titleKey" type="string" value="title.error" /> <put name="body" value="error.jsp" /> </definition>
<!--========================================================================--> <!-- XML Tiles Definition --> <!--========================================================================--> <definition name="xmlTilesDefinition" extends="defaultTilesDefinition"> <put name="titleKey" type="string" value="title.xml" /> <put name="body" value="xml.jsp" /> </definition>
</tiles-definitions>
194
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.1.5. build.xml
<?xml version="1.0"?>
<!-- ****************************************************************** --> <!-- BUILD XML FILE FOR ANT <!-- Jos Barranquero Tolosa <!-- Based on build.xml by: Daniel F. LANVIN <!-- DASDI - EUITIO - UNIOVI --> --> --> -->
<!-- ================================================================== --> <!-- General project properties --> <!-- ================================================================== --> <property name="name" value="AbstractMinds"/> <property name="version" value="0.0"/> <!-- Imports all OS enviroment varibles --> <property environment="env"/> <!-- Miscelaneous --> <property name="year" value="2007"/> <property name="ant.home" value="."/> <property name="debug" value="on"/> <property name="optimize" value="off"/> <property name="deprecation" value="off"/>
<!-- ================================================================== --> <!-- Source dirs for compiling and packing --> <!-- ================================================================== --> <property name="src.java.dir" value="../src"/> <property name="web.src.java.dir" value="../src"/> <property name="ejb.src.java.dir" value="../src"/> <property name="configuration.src.dir" value="../configuration"/> <property name="lib.dir" value="../lib"/> <property name="compilelib.dir" value="../compile-lib"/> <property name="misc.dir" value="../misc"/> <property name="conf.dir" value="../conf"/> <property name="devetc.dir" value="../etc"/> <property name="web.dir" value="../web"/>
195
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<!-- ================================================================== --> <!-- Distribution --> <!-- ================================================================== --> <property name="distribution.dir" value="../distribution"/> <!-- WAR file name --> <property name="war.file.name" value="AbstractMinds.war"/>
<!-- ================================================================== --> <!-- Destination build dirs for compiling and packing -->
<!-- ================================================================== --> <property name="build.compiler" value="modern"/> <property name="build.dir" value="../bin"/> <property name="build.src" value="${build.dir}/src"/> <property name="build.src.web" value="${build.dir}/src"/> <property name="build.dest" value="${build.dir}/classes"/> <property name="build.dest.web" value="${build.dir}/classes"/> <property name="build.dest.ejb" value="${build.dir}/classes"/> <property name="build.web" value="${build.dir}/web"/> <property name="build.web-inf" value="${build.dir}/web/WEB-INF"/>
<!-- ================================================================== --> <!-- Destination dirs for local deploy -->
<!-- ================================================================== --> <property name="deliver.dir" value="../ilm"/> <property name="deliver.class" value="${deliver.dir}/WEB-INF/classes"/> <property name="deliver.lib" value="${deliver.dir}/WEB-INF/lib"/> <property name="deliver.ejb" value="${deliver.dir}/ejb-jar"/>
<!-- =================================================================== --> <!-- All source files of the project. --> <!-- These source files will be copied to the destination source --> <!-- directory in the prepare task. -->
<patternset id="all.src.files">
196
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<!-- All web files --> <include name="**/*.jpg"/> <include name="**/*.gif"/> <include name="**/*.js"/> <include name="**/*.jsp"/> <include name="**/*.html"/>
</patternset>
<!-- ================================================================== --> <!-- Prints compiling variables --> <!-- ================================================================== --> <target name="enviroment">
<echo message="build.compiler = ${build.compiler}"/> <echo message="java.class.path = ${java.class.path}"/> <echo message="java.home = ${java.home}"/> <echo message="user.home = ${user.home}"/> <echo message="jboss.home = ${env.JBOSS_HOME}"/>
</target>
<!-- =================================================================== --> <!-- Prepares the build directory --> <!-- =================================================================== --> <target name="prepare" depends="enviroment">
<mkdir dir="${build.dir}"/> <mkdir dir="${build.dest}"/> <mkdir dir="${build.dest.ejb}"/> <mkdir dir="${build.dest.web}"/> <mkdir dir="${build.src}"/> <mkdir dir="${build.web}"/> <mkdir dir="${build.web-inf}"/> <mkdir dir="${distribution.dir}"/> <mkdir dir="${web.src.java.dir}"/> <mkdir dir="${ejb.src.java.dir}"/> <mkdir dir="${build.src.web}"/>
<!-- Add the version number to all source files --> <filter token="version" value="${version}"/>
197
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<copy todir="${build.src}" filtering="on"> <fileset dir="${src.java.dir}" > <patternset refid="all.src.files"/> </fileset> </copy>
<copy todir="${build.web}"> <fileset dir="${web.dir}"> <include name="**/*.*"/> <exclude name="**/*.bak"/> </fileset> </copy>
</target>
<!-- All doc files --> <exclude name="**/package.html"/> <exclude name="**/overview.html"/> <classpath> <path> <fileset dir="${build.dest.ejb}"/> <fileset dir="${lib.dir}"/> <fileset dir="${compilelib.dir}"/> </path> </classpath>
</javac>
198
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<copy todir="${build.web-inf}"> <fileset dir="${devetc.dir}"> <exclude name="**/*.bak"/> <exclude name="ejb-jar.xml"/> </fileset> </copy>
<copy todir="${build.dest.web}"> <fileset dir="${web.src.java.dir}"> <include name="**/*.xml"/> <include name="**/*.properties"/> <exclude name="**/*.bak"/> </fileset> </copy>
</target>
<!-- =================================================================== --> <!-- Generate WEB Aplication .WAR file -->
<!-- =================================================================== --> <target name="war" depends="compile"> <war warfile="${distribution.dir}/${war.file.name}" webxml="${devetc.dir}/web.xml"> <fileset dir="${build.web}"> <exclude name="**/lib/*.*"/> <exclude name="**/classes/**/*.*"/> <exclude name="**/web.xml"/> </fileset>
</war> </target>
199
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
</target>
</target>
</target>
</project>
200
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.1.6. MessageResources.properties
app.index.link=Inicio app.user.link=Cuenta app.users.link=Usuarios app.login.link=Conectar app.add_user.link=Nuevo Usuario app.add_diagram.link=Crear Diagrama app.diagrams.link=Diagramas app.exit.link=Desconectar
title.index=Inicio title.login=Conectar title.add_user=Nuevo Usuario title.user=Datos de la Cuenta de Usuario title.users=Consultar Usuarios title.add_diagram=Crear Diagrama title.diagram=Datos del Diagrama title.diagram.editor=Editar Diagrama title.diagram.copy=Copiar Diagrama title.diagram.privileges=Gestionar Permisos title.diagrams=Consultar Diagramas title.error=Error title.xml=XML
201
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
submit.update=Actualizar
msg.logged_as=Conectado como msg.logout=Usuario desconectado con xito msg.not_logged=No conectado msg.empty=Ninguna fila seleccionada msg.privilege.updated=Se han actualizado los permisos para el usuario
# Struts Validator Error Messages errors.required=Debe especificar un valor para el campo {0}. errors.minlength=El campo {0} no puede tener menos de {1} caracteres. errors.maxlength=El campo {0} no puede tener ms de {1} caracteres. errors.invalid=El campo {0} contiene caracteres no vlidos.
errors.byte=El campo {0} debe ser de tipo byte. errors.short=El campo {0} debe ser de tipo short. errors.integer=El campo {0} debe ser de tipo integer. errors.long=El campo {0} debe ser de tipo long. errors.float=El campo {0} debe ser de tipo float. errors.double=El campo {0} debe ser de tipo double.
errors.date=El campo {0} no es una fecha vlida. errors.range=El campo {0} no est entre {1} y {2}. errors.creditcard=El campo {0} no es un numero de tarjeta de crdito vlido. errors.email=El campo {0} no es una direccin de e-mail correcta.
202
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
203
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
import abstractminds.common.entity.DiagramBean; import abstractminds.common.entity.DiagramChangeBean; import abstractminds.common.entity.DiagramPrivilegeBean; import abstractminds.common.entity.TinyUserBean; import abstractminds.common.entity.UserBean;
public DiagramBean getDiagram( String actorId, String diagramId) throws SQLException { return (new DiagramManager().getDiagram(actorId, diagramId)); }
204
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public String queryDiagramChanges( DiagramChangeBean change) throws SQLException { return (new DiagramManager().queryDiagramChanges(change)); }
public Collection<?> getAllDiagrams( String actorId) throws SQLException { return (new DiagramManager().getAllDiagrams(actorId)); }
public void destroyDiagram( String actorId, String diagramId) throws SQLException { new DiagramManager().destroyDiagram(actorId, diagramId); }
public Collection<?> getDiagramPrivileges( String actorId, String diagramId) throws SQLException { return (new DiagramManager().getDiagramPrivileges(actorId, diagramId)); }
public void changeDiagramPrivilege( String actorId, DiagramPrivilegeBean privilege) throws SQLException { new DiagramManager().changeDiagramPrivilege(actorId, privilege); }
public DiagramBean loadDiagram( String actorId, String diagramId) throws SQLException { return (new DiagramManager().loadDiagram(actorId, diagramId)); } }
205
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.1.2. DiagramManager.java
package abstractminds.model;
import java.sql.SQLException; import java.util.Collection; import java.util.Iterator; import edu.uci.ics.jung.graph.Graph; import abstractminds.common.entity.DiagramBean; import abstractminds.common.entity.DiagramChangeBean; import abstractminds.common.entity.DiagramPrivilegeBean; import abstractminds.model.graphml.GraphMLFile; import abstractminds.model.graphml.JSONSerializer; import abstractminds.model.persistence.PersistenceFacade;
public DiagramBean getDiagram(String actor_id, String diagram_id) throws SQLException { DiagramBean diagramBean = new PersistenceFacade().getDiagram(actor_id, diagram_id); if (diagramBean == null) { throw new IllegalArgumentException( "Not found or insufficient privileges."); } return (diagramBean); }
Collection<?> changes = new PersistenceFacade().queryDiagramChanges(change); StringBuffer buffer = new StringBuffer(); if (changes.size() < 1) { buffer.append("{ack: '" + change.getChangeId() + "'}"); } else { Iterator<?> it = changes.iterator(); change = (DiagramChangeBean) it.next();
206
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
buffer.append("{redo:["); buffer.append(change.getJsonRedo()); while (it.hasNext()) { buffer.append(','); change = (DiagramChangeBean) it.next(); buffer.append(change.getJsonRedo()); } buffer.append("],changeId:'"); buffer.append(change.getChangeId()); buffer.append("'}"); } return buffer.toString(); }
public void destroyDiagram(String actor_id, String diagram_id) throws SQLException { DiagramBean diagram = getDiagram(actor_id, diagram_id); if (diagram.getPrivilege() >= DiagramBean.DIAGRAM_PRIVILEGE_CREATOR) { new PersistenceFacade().destroyDiagram(diagram_id); } else { throw new IllegalArgumentException("Insufficient privileges."); } }
DiagramBean diagram = getDiagram(actor_id, diagram_id); if (diagram.getPrivilege() >= DiagramBean.DIAGRAM_PRIVILEGE_TOTAL_CONTROL) { return (new PersistenceFacade().getDiagramPrivileges(diagram_id)); } else { throw new IllegalArgumentException("Insufficient privileges."); } }
207
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public void changeDiagramPrivilege( String actor_id, DiagramPrivilegeBean privilegeBean) throws SQLException { DiagramBean diagram = getDiagram(actor_id, privilegeBean.getDiagramId()); if (actor_id.equals(privilegeBean.getUserId()) || diagram.getPrivilege() >= DiagramBean.DIAGRAM_PRIVILEGE_TOTAL_CONTROL) {
} else { throw new IllegalArgumentException("Privilege isn't valid."); } } else { throw new IllegalArgumentException("Insufficient privileges."); }
public DiagramBean loadDiagram( String actorId, String diagramId) throws SQLException { DiagramBean diagram = getDiagram(actorId, diagramId); if (diagram.getPrivilege() >= DiagramBean.DIAGRAM_PRIVILEGE_EDIT) { if (diagram.getVersion() > 0) { String path = "../xml/" + diagram.getId() + '_' + diagram.getVersion() + ".graphml"; Graph g = new GraphMLFile().load(path); diagram.setJsonObjects(new JSONSerializer().parseGraph(g)); } else { diagram.setJsonObjects("{ack: 'empty'}"); } } else { throw new IllegalArgumentException("Insufficient privileges."); } return diagram; } }
208
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.1.3. UserManager.java
package abstractminds.model;
209
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
import abstractminds.common.entity.DiagramBean; import abstractminds.common.entity.DiagramChangeBean; import abstractminds.common.entity.DiagramPrivilegeBean; import abstractminds.common.entity.TinyUserBean; import abstractminds.common.entity.UserBean;
210
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public DiagramBean getDiagram(String user_id, String diagram_id) throws SQLException { return getDAOFactory().getDiagramDAO().getDiagram(user_id, diagram_id); }
211
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.2.2. DAOFactory.java
package abstractminds.model.persistence;
import abstractminds.model.persistence.oracle.OracleDAOFactory;
public static DAOFactory getDAOFactory(byte type) { switch (type) { case ORACLE: return new OracleDAOFactory(); } throw new IllegalArgumentException(); }
212
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.2.3. DiagramDAO.java
package abstractminds.model.persistence;
213
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.2.4. UserDAO.java
package abstractminds.model.persistence;
214
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.2.5.1. OracleDAOFactory.java
package abstractminds.model.persistence.oracle;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;
public static Connection createConnection() throws SQLException { return DriverManager.getConnection( "jdbc:oracle:thin:@HP:1521:orcl", "scott", "tiger"); }
215
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public static void freeResources(Statement stat, ResultSet rs) { try { if (stat != null) stat.close(); } catch (Exception e) { System.out.println(e.getLocalizedMessage()); } try { if (rs != null) rs.close(); } catch (Exception e) { System.out.println(e.getLocalizedMessage()); } }
216
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.2.5.2. OracleDiagramDAO.java
package abstractminds.model.persistence.oracle;
import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Collection; import java.util.Vector;
public void addDiagram(DiagramBean diagramBean) throws SQLException { Connection conn = OracleDAOFactory.createConnection(); String sql = "INSERT INTO diagrams" + "(diagram_name,diagram_creator,diagram_description)" + " VALUES(" + "'" + diagramBean.getName() + "'," + "'" + diagramBean.getCreator() + "'," + "'" + diagramBean.getDescription() + "')"; Statement stat = null; ResultSet rs = null; try { stat = conn.createStatement(); stat.executeUpdate(sql); sql = "SELECT MAX(diagram_id) " + "FROM diagrams " + "WHERE diagram_creator='" + diagramBean.getCreator() + "'"; rs = stat.executeQuery(sql); rs.next(); diagramBean.setId(rs.getString(1)); } finally { OracleDAOFactory.freeResources(stat, null); } }
217
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Connection conn = OracleDAOFactory.createConnection(); String sql = "SELECT * FROM ((" + "SELECT diagrams.*, " + " diagram_creator user_id, " + " 5 diagram_privilege " + "FROM diagrams " + "WHERE diagram_creator='" + user_id + "' " + " AND diagram_id='" + diagram_id + "' " + ") UNION (" + "SELECT * " + "FROM (SELECT * FROM diagrams WHERE diagram_id='"+diagram_id+"') "+ "NATURAL JOIN diagram_privileges " + "WHERE user_id='" + user_id + "' " + ")) ORDER BY diagram_privilege DESC, diagram_name"; Statement stat = null; ResultSet rs = null; try { stat = conn.createStatement(); rs = stat.executeQuery(sql); if (!rs.next()) return null; return new DiagramBean( rs.getString("DIAGRAM_ID"), rs.getString("DIAGRAM_NAME"), rs.getString("DIAGRAM_CREATOR"), rs.getInt("DIAGRAM_VERSION"), rs.getString("DIAGRAM_DESCRIPTION"), rs.getByte("DIAGRAM_PRIVILEGE") ); } finally { OracleDAOFactory.freeResources(stat, rs); } }
218
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Connection conn = OracleDAOFactory.createConnection(); String sql = "INSERT INTO diagram_changes" + "(diagram_id,user_id,diagram_change_redo,diagram_change_undo)" + " VALUES(" + "'" + change.getDiagramId() + "'," + "'" + change.getUserId() + "'," + "'" + change.getJsonRedo() + "'," + "'" + change.getJsonUndo() + "')"; Statement stat = null; try { stat = conn.createStatement(); stat.executeUpdate(sql); } finally { OracleDAOFactory.freeResources(stat, null); } }
219
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Connection conn = OracleDAOFactory.createConnection(); String sql = "SELECT " + " diagram_change_id," + " diagram_change_redo " + "FROM diagram_changes " + "WHERE diagram_change_id > '" + diagramChangeBean.getChangeId()+"' " + " AND diagram_id = '" + diagramChangeBean.getDiagramId() + "' "; if(diagramChangeBean.getChangeId() != null && !diagramChangeBean.getChangeId().trim().equals("0")) { sql += " AND user_id<>'" + diagramChangeBean.getUserId() + "' "; } sql += "ORDER BY diagram_change_id"; Vector<DiagramChangeBean> v = new Vector<DiagramChangeBean>(); Statement stat = null; ResultSet rs = null; try { stat = conn.createStatement(); rs = stat.executeQuery(sql); while(rs.next()) { v.add(new DiagramChangeBean( rs.getString(1), null, null, rs.getString(2), null )); } return v; } finally { OracleDAOFactory.freeResources(stat, rs); } }
220
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public Collection<?> getAllDiagrams(String user_id) throws SQLException { Connection conn = OracleDAOFactory.createConnection(); String sql = "SELECT * FROM ((" + "SELECT diagrams.*, " + " diagram_creator user_id, " + " 5 diagram_privilege " + "FROM diagrams " + "WHERE diagram_creator='" + user_id + "' " + ") UNION (" + "SELECT * " + "FROM diagrams " + "NATURAL JOIN diagram_privileges " + "WHERE user_id='" + user_id + "' " + ")) ORDER BY diagram_privilege DESC, diagram_name"; Vector<DiagramBean> v = new Vector<DiagramBean>(); Statement stat = null; ResultSet rs = null; try { stat = conn.createStatement(); rs = stat.executeQuery(sql); while(rs.next()) { v.add(new DiagramBean( rs.getString("DIAGRAM_ID"), rs.getString("DIAGRAM_NAME"), rs.getString("DIAGRAM_CREATOR"), rs.getInt("DIAGRAM_VERSION"), rs.getString("DIAGRAM_DESCRIPTION"), rs.getByte("DIAGRAM_PRIVILEGE") )); } return v; } finally { OracleDAOFactory.freeResources(stat, rs); } }
221
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public Collection<?> getDiagramPrivileges(String diagram_id) throws SQLException { Connection conn = OracleDAOFactory.createConnection(); String sql = "SELECT " + " diagram_id, " + " user_id, " + " MAX(diagram_privilege) diagram_privilege " + "FROM ((" + "SELECT " + " diagram_id, " + " diagram_creator user_id, " + " 5 diagram_privilege " + "FROM diagrams " + "WHERE diagram_id='" + diagram_id + "' " + ") UNION (" + "SELECT " + " diagram_id, " + " user_id, " + " diagram_privilege " + "FROM diagram_privileges " + " WHERE diagram_id='" + diagram_id + "' " + ") UNION (" + "SELECT " + " '" + diagram_id + "' diagram_id, " + " user_id, " + " -1 diagram_privilege " + "FROM users " + ")) " + "GROUP BY user_id, diagram_id " + "ORDER BY diagram_privilege DESC, user_id";
222
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Vector<DiagramPrivilegeBean> v = new Vector<DiagramPrivilegeBean>(); Statement stat = null; ResultSet rs = null; try { stat = conn.createStatement(); rs = stat.executeQuery(sql); while(rs.next()) { v.add(new DiagramPrivilegeBean( rs.getString("DIAGRAM_ID"), rs.getString("USER_ID"), rs.getByte("DIAGRAM_PRIVILEGE") )); } return v; } finally { OracleDAOFactory.freeResources(stat, rs); } }
public void destroyDiagram(String diagram_id) throws SQLException { Connection conn = OracleDAOFactory.createConnection(); String sql = null; Statement stat = null; try { stat = conn.createStatement(); sql = "DELETE FROM diagram_privileges " + "WHERE diagram_id='" + diagram_id + "' "; stat.executeUpdate(sql); sql = "DELETE FROM diagram_changes " + "WHERE diagram_id='" + diagram_id + "' "; stat.executeUpdate(sql); sql = "DELETE FROM diagrams " + "WHERE diagram_id='" + diagram_id + "' "; stat.executeUpdate(sql); } finally { OracleDAOFactory.freeResources(stat, null); } }
223
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public void removeDiagramPrivilege(DiagramPrivilegeBean privilegeBean) throws SQLException { Connection conn = OracleDAOFactory.createConnection(); String sql = "DELETE FROM diagram_privileges " + "WHERE user_id='" + privilegeBean.getUserId() + "' " + " AND diagram_id='" + privilegeBean.getDiagramId() + "'"; Statement stat = null; try { stat = conn.createStatement(); stat.executeUpdate(sql); } finally { OracleDAOFactory.freeResources(stat, null); } }
public void updateDiagramPrivilege(DiagramPrivilegeBean privilegeBean) throws SQLException { Connection conn = OracleDAOFactory.createConnection(); String sql = "UPDATE diagram_privileges " + " SET diagram_privilege=" + privilegeBean.getPrivilege() + " " + "WHERE user_id='" + privilegeBean.getUserId() + "' " + " AND diagram_id='" + privilegeBean.getDiagramId() + "'"; Statement stat = null; try { stat = conn.createStatement(); int c = stat.executeUpdate(sql); System.out.println(c); if (c == 0) { sql = "INSERT INTO diagram_privileges " + " (diagram_id, user_id, diagram_privilege) " + "VALUES (" + "'" + privilegeBean.getDiagramId() + "', " +
"'" + privilegeBean.getUserId() + "', " + privilegeBean.getPrivilege() + ")"; System.out.println(sql); stat.executeUpdate(sql); System.out.println(sql); } } finally { OracleDAOFactory.freeResources(stat, null); } } }
224
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.2.5.3. OracleUserDAO.java
package abstractminds.model.persistence.oracle;
import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Collection; import java.util.Vector;
public void insertUser(UserBean user) throws SQLException { Connection conn = OracleDAOFactory.createConnection(); String sql = "INSERT INTO users" + " VALUES(" + "'" + user.getId() + "'," + "'" + user.getPassword() + "'," + "'" + user.getFirstName() + "'," + "'" + user.getLastName() + "'," + "'" + user.getEmail() + "')"; Statement stat = null; try { stat = conn.createStatement(); stat.executeUpdate(sql); } finally { OracleDAOFactory.freeResources(stat, null); } }
225
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public Collection<UserBean> getAllUsers() throws SQLException { Connection conn = OracleDAOFactory.createConnection(); String sql = "SELECT u.*, " + " NVL(g.diagram_count,0) diagram_count " + "FROM users u LEFT JOIN " + "(SELECT diagram_creator, " + " COUNT(diagram_id) diagram_count " +
" FROM diagrams " + " GROUP BY diagram_creator) g " + "ON u.user_id = g.diagram_creator " + "ORDER BY NVL(g.diagram_count,0) DESC"; Vector<UserBean> v = new Vector<UserBean>(); Statement stat = null; ResultSet rs = null; try { stat = conn.createStatement(); rs = stat.executeQuery(sql); UserBean userBean = null; while(rs.next()) { userBean = new UserBean( rs.getString("USER_ID"), null, rs.getString("USER_FIRSTNAME"), rs.getString("USER_LASTNAME"), rs.getString("USER_EMAIL") ); userBean.setDiagramCount(rs.getInt("DIAGRAM_COUNT")); v.add(userBean); } return v; } finally { OracleDAOFactory.freeResources(stat, rs); } }
226
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public UserBean getUser(String id) throws SQLException { Connection conn = OracleDAOFactory.createConnection(); Statement stat = conn.createStatement(); String sql = "SELECT u.*, " + " NVL(g.diagram_count,0) diagram_count " + "FROM " + "(SELECT * " + " FROM users u " + " WHERE user_id='" + id + "') u " + "LEFT JOIN " + "(SELECT diagram_creator, " + " COUNT(diagram_id) diagram_count " +
" FROM diagrams " + " WHERE diagram_creator='" + id + "' " + " GROUP BY diagram_creator) g " + "ON u.user_id = g.diagram_creator"; ResultSet rs = stat.executeQuery(sql); if (!rs.next()) return null; UserBean userBean = new UserBean( rs.getString("USER_ID"), null, rs.getString("USER_FIRSTNAME"), rs.getString("USER_LASTNAME"), rs.getString("USER_EMAIL") ); userBean.setDiagramCount(rs.getInt("DIAGRAM_COUNT")); return userBean; }
227
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public boolean login(TinyUserBean login) throws SQLException { Connection conn = OracleDAOFactory.createConnection(); String sql = "SELECT user_id, user_password FROM users WHERE user_id='" + login.getId() + "'"; String id = null; String password = null; Statement stat = null; ResultSet rs = null; try { stat = conn.createStatement(); rs = stat.executeQuery(sql); if (!rs.next()) return false; id = rs.getString("USER_ID"); password = rs.getString("USER_PASSWORD"); } finally { OracleDAOFactory.freeResources(stat, rs); } if (!login.getId().equals(id) || !login.getPassword().equals(password)) { return false; } return true; } }
228
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FilenameFilter; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintStream; import java.io.Reader; import java.util.ArrayList; import java.util.List;
import org.xml.sax.InputSource;
public class GraphMLFile implements GraphFile { private GraphMLDefaultHandler mDefaultHandler; protected boolean directed; protected boolean undirected;
229
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public Graph load( String filename ) { File file = new File(filename); FileReader fileReader = null; try { fileReader = new FileReader(file); } catch (FileNotFoundException e) { throw new FatalException("Error loading graphml file", e); } return load( fileReader ); }
public Graph load( Reader reader ) { SAXParserFactory spf = SAXParserFactory.newInstance(); try { spf.setFeature("http://xml.org/sax/features/validation", true); spf.setFeature( "http://apache.org/xml/features/validation/schema",true); spf.setFeature( "http://apache.org/xml/features/validation/dynamic",true); spf.setNamespaceAware(true); spf.setValidating(true); SAXParser parser = spf.newSAXParser(); parser.parse( new InputSource( reader ), } catch (Exception e) { throw new FatalException("Error loading graphml file: " + e); } return mDefaultHandler.getGraph(); } mDefaultHandler );
public List<Graph> loadGraphCollection( String dirName, FilenameFilter filter){ File dir = new File(dirName); if (!dir.isDirectory()) { throw new FatalException("Parameter dirName must be a directory"); } String[] files = dir.list(filter); List<Graph> graphCollection = new ArrayList<Graph>(); for (int i = 0; i < files.length; i++) { String currentFile = dirName + File.separatorChar + files[i]; GraphMLFile graphmlFile = new GraphMLFile(mDefaultHandler); graphCollection.add(graphmlFile.load(currentFile)); } return graphCollection; }
230
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
231
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.3.2. GraphMLDefaultHandler.java
package abstractminds.model.graphml;
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Stack; import java.util.Vector;
import abstractminds.model.graphml.element.GraphMLElement; import abstractminds.model.graphml.element.GraphMLTextData; import edu.uci.ics.jung.exceptions.FatalException; import edu.uci.ics.jung.graph.ArchetypeVertex; import edu.uci.ics.jung.graph.Edge; import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.Vertex; import edu.uci.ics.jung.graph.decorators.StringLabeller; import edu.uci.ics.jung.graph.impl.DirectedSparseEdge; import edu.uci.ics.jung.graph.impl.SparseGraph; import edu.uci.ics.jung.graph.impl.SparseVertex; import edu.uci.ics.jung.graph.impl.UndirectedSparseEdge; import edu.uci.ics.jung.utils.UserData; import edu.uci.ics.jung.utils.UserDataContainer;
public class GraphMLDefaultHandler extends DefaultHandler { private Graph mGraph; private Stack<UserDataContainer> elementsStack; private HashMap<String, GraphMLElement> keysMap; private GraphMLErrorHandler errorHandler; private StringLabeller mLabeller; private boolean default_directed;
public GraphMLDefaultHandler() { elementsStack = new Stack<UserDataContainer>(); keysMap = new HashMap<String, GraphMLElement>(); errorHandler = new GraphMLErrorHandler(); }
232
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public void startElement( String namespaceURI, String lName, // local name String qName, // qualified name Attributes attrs) throws SAXException {
233
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public void characters(char[] ch, int start, int length) { if (elementsStack.empty()) return; String aux = String.copyValueOf(ch, start, length).trim(); if (aux.length() > 0) { createTextData(aux); } }
public void endElement( String namespaceURI, String lName, // local name String qName // qualified name ) throws SAXException {
234
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
protected Graph createGraph(Map<String, String> attributeMap) { mGraph = new SparseGraph(); mGraph.setUserDatum("keysMap", keysMap, UserData.SHARED);
String edgeDefaultType = (String) attributeMap.get("edgedefault"); if (edgeDefaultType.equals("directed")) { default_directed = true; // mGraph = new DirectedSparseGraph(); } else if (edgeDefaultType.equals("undirected")) { default_directed = false; // mGraph = new UndirectedSparseGraph(); } else { throw new FatalException( "Error parsing graph. Edge default type not specified."); }
mLabeller = StringLabeller.getLabeller(mGraph);
protected ArchetypeVertex createVertex(Map<String, String> attributeMap) { if (mGraph == null) { throw new FatalException("Error parsing graph. " + "Graph element must be specified before node element."); }
try { mLabeller.setLabel((Vertex) vertex,idString); } catch (StringLabeller.UniqueLabelException ule) { throw new FatalException("Ids must be unique");
235
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
protected Edge createEdge(Map<String, String> attributeMap) { if (mGraph == null) { throw new FatalException("Error parsing graph. " + "Graph element must be specified before edge element."); } String sourceId = (String) attributeMap.remove("source"); Vertex sourceVertex = mLabeller.getVertex(sourceId);
String direction = (String) attributeMap.remove("directed"); boolean directed; if (direction == null) { // use default_directed directed = default_directed; } else { // use specified direction if (direction.equals("true")) directed = true; else if (direction.equals("false")) directed = false; else throw new FatalException( "Error parsing graph: 'directed' tag has invalid value: " + direction); } Edge e; if (directed) e = mGraph.addEdge( new DirectedSparseEdge(sourceVertex, targetVertex)); else e = mGraph.addEdge( new UndirectedSparseEdge(sourceVertex, targetVertex));
236
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
protected GraphMLElement createKey(Map<String, String> attributeMap) { if (mGraph != null) { throw new FatalException("Error parsing graph. " + "Key elements must be specified before graph element."); }
return key; }
if (elementsStack.size() == 0) { throw new FatalException( "Error parsing graph. Unespected element \"" + qName + "\"."); }
setUserData(element, attributeMap);
addNestedElement(element);
return element; }
private void createTextData(String textData) { UserDataContainer udc = elementsStack.peek(); // if different from graph, node or edge if (udc instanceof GraphMLElement) { addNestedElement(new GraphMLTextData(textData)); } }
237
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
for (Iterator<String> keyIt = attributeMap.keySet().iterator(); keyIt.hasNext(); ) { Object key = keyIt.next(); Object value = attributeMap.get(key); udc.setUserDatum(key, value, UserData.SHARED); } }
private void addNestedElement(GraphMLElement nestedElement) { Vector ne = (Vector) elementsStack.peek().getUserDatum("nestedElements"); if (ne == null) { ne = new Vector<GraphMLElement>(); elementsStack.peek() .setUserDatum("nestedElements", ne, UserData.SHARED); } ne.add(nestedElement); }
private Map<String, String> getAttributeMap(Attributes attrs) { Map<String, String> map = new HashMap<String, String>(); if (attrs != null) { for (int i = 0; i < attrs.getLength(); i++) { map.put(attrs.getQName(i), attrs.getValue(i)); } } return map; } }
238
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.3.3. GraphMLErrorHandler.java
package abstractminds.model.graphml;
import java.util.Vector;
public class GraphMLErrorHandler implements ErrorHandler { private long errorCount = 0; private long warnCount = 0;
public void fatalError(SAXParseException e) throws SAXException { ++errorCount; messages.add("Fatal error " + getLineAndCol(e) + e.getMessage()); throw new SAXException(messages.lastElement()); }
239
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
private String getLineAndCol(SAXParseException e) { return " on line " + e.getLineNumber() + ", column " + e.getColumnNumber() + " >> "; } }
240
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.3.4. GraphMLSerializer.java
package abstractminds.model.graphml;
import java.io.FileOutputStream; import java.io.PrintStream; import java.util.HashMap; import java.util.Iterator; import java.util.Vector;
import abstractminds.model.graphml.element.GraphMLElement; import edu.uci.ics.jung.exceptions.FatalException; import edu.uci.ics.jung.graph.DirectedEdge; import edu.uci.ics.jung.graph.Edge; import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.UndirectedEdge; import edu.uci.ics.jung.graph.Vertex; import edu.uci.ics.jung.graph.decorators.Indexer; import edu.uci.ics.jung.graph.decorators.StringLabeller; import edu.uci.ics.jung.utils.Pair; import edu.uci.ics.jung.utils.PredicateUtils; import edu.uci.ics.jung.utils.UserData; import edu.uci.ics.jung.utils.UserDataContainer;
public static boolean invalidXMLData(String str) { if (str.indexOf("&") >= 0) return true; if (str.indexOf("<") >= 0) return true; if (str.indexOf(">") >= 0) return true; if (str.indexOf("\'") >= 0) return true; if (str.indexOf("\"") >= 0) return true; return false; }
241
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public void save(Graph g, String filename) { try { out = new PrintStream(new FileOutputStream(filename, false)); } catch (Exception e) { throw new FatalException( "Could not open file \"" + filename + "\" for writing. " + e); } save(g, out); out.close(); }
public void save(Graph g, PrintStream out) { this.out = out; level = 0; out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); out.println("<graphml xmlns=\"http://graphml.graphdrawing.org/xmlns\""); out.println(" out.print(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"");
xsi:schemaLocation=\"");
out.println("http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd\">");
HashMap keysMap = (HashMap) g.removeUserDatum("keysMap"); if (keysMap != null) { level--; saveNestedElements(keysMap.values().iterator()); level++; } directed = PredicateUtils.enforcesEdgeConstraint(g, Graph.DIRECTED_EDGE) || g.removeUserDatum("edgedefault").toString().equalsIgnoreCase("directed");
242
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
if (directed) out.print("directed\""); else out.print("undirected\""); if (!saveUserData(g)) out.print(">"); saveVerticesSection(g); saveEdgesSection(g); newLine(); out.print("</graph>"); newLine(); out.print("</graphml>"); }
private void saveVerticesSection(Graph g) { level++; int numVertices = g.getVertices().size(); Indexer indexer = Indexer.getIndexer(g); for (int i = 0; i < numVertices; i++) { newLine(); Vertex v = (Vertex) indexer.getVertex(i); String vId = StringLabeller.getLabeller(g).getLabel(v); out.print("<node id=\"" + vId + "\"");
243
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
private void saveEdgesSection(Graph g) { level++; for (Iterator edgeIterator = g.getEdges().iterator(); edgeIterator.hasNext();) newLine(); Edge e = (Edge) edgeIterator.next(); Pair p = e.getEndpoints(); Vertex src = (Vertex) p.getFirst(); Vertex dest = (Vertex) p.getSecond(); String srcId = StringLabeller.getLabeller(g).getLabel(src); out.print("<edge source=\"" + srcId + "\" "); String destId = StringLabeller.getLabeller(g).getLabel(dest); out.print("target=\"" + destId + "\""); {
// only tag the edges that don't match the default if (directed) { if (e instanceof UndirectedEdge) out.print(" directed=\"false\""); } else // undirected if (e instanceof DirectedEdge) out.print(" directed=\"true\"");
244
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
private void saveNestedElements(Iterator<GraphMLElement> iterator) { level++; boolean data = false; GraphMLElement element = null; for (; iterator.hasNext(); ) { element = iterator.next(); String qName = element.getQName(); if (qName == null) { // textData out.print(element); } else { data = true; newLine(); out.print("<" + qName); if (saveUserData(element)) { out.print("</" + qName + ">"); } else { out.print("/>"); } } } level--; if (data) newLine(); }
for (Iterator udki = udc.getUserDatumKeyIterator(); udki.hasNext(); ) { Object key_obj = udki.next(); if (udc.getUserDatumCopyAction(key_obj) == UserData.REMOVE) continue; String key = key_obj.toString(); if (invalidXMLData(key)) continue; Object o = udc.getUserDatum(key); if (o == null) continue; if (key == "nestedElements") { elements = (Vector) o; } else { String datum = o.toString(); if (invalidXMLData(datum)) continue; out.print(" " + key + "=\"" + datum + "\""); } }
245
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
private void newLine() { out.println(); if (level < 0) return; else if (level < TABS.length) out.print(TABS[level]);
private static final String[] TABS = { "", " " " " " " " " }; } ", ", ", ", ", ", ", "
246
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
import abstractminds.model.graphml.element.GraphMLElement; import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.Vertex; import edu.uci.ics.jung.graph.decorators.Indexer; import edu.uci.ics.jung.graph.decorators.StringLabeller; import edu.uci.ics.jung.utils.PredicateUtils; import edu.uci.ics.jung.utils.UserDataContainer;
247
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
private void parseVertices() { int numVertices = g.getVertices().size(); Indexer indexer = Indexer.getIndexer(g); for (int i = 0;;) { Vertex v = (Vertex) indexer.getVertex(i); String vId = StringLabeller.getLabeller(g).getLabel(v); buffer.append("{nodeId:\""); buffer.append(vId); buffer.append("\",shapes:["); parseShapes(v); buffer.append("],matrix:null}"); if (++i < numVertices) buffer.append(','); else break; } }
private void parseShapes(Vertex v) { Vector<GraphMLElement> data = (Vector<GraphMLElement>) v.getUserDatum("nestedElements"); if (data.size() == 1 && data.lastElement().getQName().equalsIgnoreCase("data")) { Vector<GraphMLElement> shapes = (Vector<GraphMLElement>) data.lastElement().getUserDatum("nestedElements"); for (int i = 0;;) { GraphMLElement currentShape = shapes.get(i); Vector<GraphMLElement> properties = (Vector<GraphMLElement>) currentShape.getUserDatum("nestedElements"); buffer.append("{shapeId:\""); buffer.append(currentShape.getUserDatum("shapeId")); buffer.append("\",fill:"); buffer.append(currentShape.getUserDatum("fill")); buffer.append(",coords:{"); parseAttributes(properties.get(0)); /*buffer.append("},fill:{"); parseAttributes(properties.get(1));*/ buffer.append("},stroke:{"); parseAttributes(properties.get(1)); buffer.append("}}"); if (++i < shapes.size()) buffer.append(','); else break; } } }
248
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
private void parseAttributes(UserDataContainer udc) { for (Iterator udki = udc.getUserDatumKeyIterator();;) { String key = udki.next().toString(); Object o = udc.getUserDatum(key); if (o == null) continue; buffer.append(key); buffer.append(':'); if(key.equalsIgnoreCase("type")) { buffer.append('\"'); buffer.append(o.toString()); buffer.append('\"'); } else { buffer.append(o.toString()); } if (udki.hasNext()) buffer.append(','); else break; } } }
249
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.4.2. Constants.java
package abstractminds.common;
// ATRIBUTTES
250
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
// FORWARDS
251
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.4.3.1. DiagramBean.java
package abstractminds.common.entity;
public final static byte DIAGRAM_PRIVILEGE_NONE = -1; public final static byte DIAGRAM_PRIVILEGE_VIEW = 0; public final static byte DIAGRAM_PRIVILEGE_COPY = 1; public final static byte DIAGRAM_PRIVILEGE_EDIT = 2; public final static byte DIAGRAM_PRIVILEGE_MAKE_VERSIONS = 3; public final static byte DIAGRAM_PRIVILEGE_TOTAL_CONTROL = 4; public final static byte DIAGRAM_PRIVILEGE_CREATOR = 5;
private String id; private String name; private String creator; private int version; private String description; private byte privilege; private String jsonObjects;
public DiagramBean( String id, String name, String creator, int version, String description, byte privilege) {
this.id = id; this.name = name; this.creator = creator; this.version = version; this.description = description; this.privilege = privilege; this.jsonObjects = "{}"; }
252
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
public DiagramBean(DiagramBean diagramBean) { this.id = diagramBean.id; this.name = diagramBean.name; this.creator = diagramBean.creator; this.version = diagramBean.version; this.description = diagramBean.description; this.privilege = diagramBean.privilege; this.jsonObjects = diagramBean.jsonObjects; }
253
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
254
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.4.3.2. DiagramPrivilegeBean.java
package abstractminds.common.entity;
public DiagramPrivilegeBean(String diagramId, String userId, byte privilege) { this.diagramId = diagramId; this.userId = userId; this.privilege = privilege; } public String getDiagramId() { return diagramId; } public void setDiagramId(String diagramId) { this.diagramId = diagramId; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public byte getPrivilege() { return privilege; } public void setPrivilege(byte privilege) { this.privilege = privilege; } }
255
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.4.3.3. DiagramChangeBean.java
package abstractminds.common.entity;
private String changeId; private String diagramId; private String userId; private String jsonRedo; private String jsonUndo;
public DiagramChangeBean( String changeId, String diagramId, String userId, String jsonRedo, String jsonUndo) {
this.changeId = changeId; this.diagramId = diagramId; this.userId = userId; this.jsonRedo = jsonRedo; this.jsonUndo = jsonUndo; }
256
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
257
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.4.3.4. TinyUserBean.java
package abstractminds.common.entity;
public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }
258
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.4.3.5. UserBean.java
package abstractminds.common.entity;
private String firstName; private String lastName; private String email; private int diagramCount;
public UserBean(String id, String password, String firstName, String lastName, String email) { super(id, password); this.firstName = firstName; this.lastName = lastName; this.email = email; }
public UserBean(UserBean userBean) { super(userBean.id, userBean.password); firstName = userBean.firstName; lastName = userBean.lastName; email = userBean.email; }
259
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
260
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.1.1. FilterLogin.java
package abstractminds.controller.filter;
import java.io.IOException;
import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest;
import abstractminds.common.Constants;
public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
try { if (request instanceof HttpServletRequest){ String id = (String) ((HttpServletRequest)request). getSession().getAttribute(Constants.LOGIN); System.out.println("LoginFilter: Quering session");
261
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
if (id == null) { System.out.println( "LoginFilter: Not logged, fowarding to login page..."); request.setAttribute(Constants.ERROR, Constants.ERROR); ((HttpServletRequest) request).getSession() .getServletContext().getContext("/AbstractMinds") .getRequestDispatcher("/Login.do").forward(request, response); return; } else { System.out.println("LoginFilter: Logged as " + id); } chain.doFilter(request, response); } } catch (Exception e) { e.printStackTrace(); System.out.println( "LoginFilter: " + e.getClass().getSimpleName() + " " + e.getMessage()); } } }
262
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.2.1. AddDiagramAction.java
package abstractminds.controller.action.diagram;
public class AddDiagramAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { try { DynaValidatorForm dynaForm = (DynaValidatorForm) form; String name = (String) dynaForm.get(Constants.NAME); String description = (String) dynaForm.get(Constants.DESCRIPTION); String creator_id = (String) request.getSession().getAttribute(Constants.LOGIN); DiagramBean diagram = new DiagramBean( null, name, creator_id, 0, description, DiagramBean.DIAGRAM_PRIVILEGE_CREATOR); new ModelFacade().addDiagram(diagram); request.getSession() .setAttribute(Constants.DIAGRAM_ID, diagram.getId()); System.out.println("AddDiagramAction:" + request.getSession().getAttribute(Constants.DIAGRAM_ID)); } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } return mapping.findForward(Constants.SUCCESS_FORWARD); } }
263
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.2.2. ChangeDiagramPrivilege.java
package abstractminds.controller.action.diagram;
import org.apache.struts.action.*;
public class ChangeDiagramPrivilegeAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { try { String actor_id = (String) request.getSession().getAttribute(Constants.LOGIN); String user_id = request.getParameter(Constants.USER_ID); String diagram_id = request.getParameter(Constants.DIAGRAM_ID); byte privilege = Byte.parseByte(request.getParameter(Constants.PRIVILEGE)); new ModelFacade().changeDiagramPrivilege( actor_id, new DiagramPrivilegeBean(diagram_id, user_id, privilege) ); if (actor_id.equals(user_id) && privilege < DiagramBean.DIAGRAM_PRIVILEGE_TOTAL_CONTROL) { return mapping.findForward(Constants.DIAGRAMS_FORWARD); } else { // Fix for redirections (see QueryDiagramPrivilegesAction) request.getSession().setAttribute(Constants.USER_ID, user_id); request.getSession() .setAttribute(Constants.DIAGRAM_ID,diagram_id); return mapping.findForward(Constants.PRIVILEGES_FORWARD); } } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } } }
264
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.2.3. CommitDiagramChangeAction.java
package abstractminds.controller.action.diagram;
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
265
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
if (request.getParameter("newNode") != null) { jsonRedo = request.getParameter("newNode").replaceAll(" ", ""); } else if (request.getParameter("xx") != null) { GraphMLMatrix matrix = new GraphMLMatrix( Float.parseFloat(request.getParameter("xx")), Float.parseFloat(request.getParameter("xy")), Float.parseFloat(request.getParameter("yx")), Float.parseFloat(request.getParameter("yy")), Float.parseFloat(request.getParameter("dx")), Float.parseFloat(request.getParameter("dy")), request.getParameter("nodeId") ); jsonRedo = matrix.toJSON(); } new ModelFacade().commitDiagramChange( new DiagramChangeBean( null, diagramId, userId, jsonRedo, jsonUndo) );
String resp = "{ack:" + request.getParameter("commitId") + "}"; request.setAttribute(Constants.JSON, resp); } catch(Exception e) { request.setAttribute(Constants.ERROR, e); return mapping.findForward(Constants.AJAX_ERROR_FORWARD); } return mapping.findForward(Constants.SUCCESS_FORWARD); } }
266
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.2.4. DestroyDiagramAction.java
package abstractminds.controller.action.diagram;
public class DestroyDiagramAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
try { String user_id = (String) request.getSession().getAttribute(Constants.LOGIN); String diagram_id = request.getParameter(Constants.DIAGRAM_ID); new ModelFacade().destroyDiagram(user_id, diagram_id); } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } return mapping.findForward(Constants.SUCCESS_FORWARD); } }
267
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.2.5. LoadDiagramAction.java
package abstractminds.controller.action.diagram;
public class LoadDiagramAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
try{ String actorId = (String) request.getSession().getAttribute(Constants.LOGIN); DiagramBean diagram = new ModelFacade().loadDiagram( actorId, request.getParameter("diagramId")); request.setAttribute(Constants.DIAGRAM_BEAN, diagram); } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } return mapping.findForward(Constants.SUCCESS_FORWARD); }
268
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.2.6. QueryAllDiagrams.java
package abstractminds.controller.action.diagram;
import java.util.Collection;
public class QueryAllDiagramsAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
try { String user_id = (String) request.getSession().getAttribute(Constants.LOGIN); Collection<?> diagrams = new ModelFacade().getAllDiagrams(user_id); if (diagrams != null && diagrams.size() > 0) { request.setAttribute(Constants.DIAGRAMS_LIST, diagrams); } } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } return mapping.findForward(Constants.SUCCESS_FORWARD); } }
269
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.2.7. QueryDiagramAction.java
package abstractminds.controller.action.diagram;
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
try { String user_id = (String) request.getSession().getAttribute(Constants.LOGIN); String diagram_id = request.getParameter(Constants.DIAGRAM_ID); request.setAttribute( Constants.DIAGRAM_BEAN, new ModelFacade().getDiagram(user_id, diagram_id)); } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } return mapping.findForward(Constants.SUCCESS_FORWARD); } }
270
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.2.8. QueryDiagramChangesAction.java
package abstractminds.controller.action.diagram;
import org.apache.struts.action.*;
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
try { String actorId = (String) request.getSession().getAttribute(Constants.LOGIN); if (actorId == null) throw new Exception("Not logged");
String json = new ModelFacade().queryDiagramChanges( new DiagramChangeBean( changeId, diagramId, actorId,null, null)); request.setAttribute(Constants.JSON, json);
271
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.2.9. QueryDiagramPrivilegesAction.java
package abstractminds.controller.action.diagram;
import org.apache.struts.action.*;
public class QueryDiagramPrivilegesAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { try { String actor_id = (String) request.getSession().getAttribute(Constants.LOGIN); String diagram_id = request.getParameter(Constants.DIAGRAM_ID); // Fix for redirections (see ChangeDiagramPrivilegeAction) if (diagram_id == null) { diagram_id = (String) request.getSession().getAttribute(Constants.DIAGRAM_ID); request.setAttribute( Constants.USER_ID, (String) request.getSession().getAttribute(Constants.USER_ID) ); request.getSession().removeAttribute(Constants.USER_ID); } request.setAttribute( Constants.DIAGRAM_PRIVILEGES, new ModelFacade().getDiagramPrivileges(actor_id, diagram_id)); } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } return mapping.findForward(Constants.SUCCESS_FORWARD); } }
272
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.3.1. AddUserAction.java
package abstractminds.controller.action.user;
import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.validator.DynaValidatorForm;
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
try { DynaValidatorForm dynaForm = (DynaValidatorForm) form; String id = (String)dynaForm.get(Constants.ID); String pwd = (String)dynaForm.get(Constants.PASSWORD); String firstName = (String)dynaForm.get(Constants.FIRST_NAME); String lastName = (String)dynaForm.get(Constants.LAST_NAME); String email = (String)dynaForm.get(Constants.EMAIL); UserBean user = new UserBean(id, pwd, firstName, lastName, email); new ModelFacade().addUser(user); request.getSession().setAttribute(Constants.LOGIN, user.getId()); } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } return mapping.findForward(Constants.SUCCESS_FORWARD); } }
273
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.3.2. ExitAction.java
package abstractminds.controller.action.user;
import abstractminds.common.entity.TinyUserBean;
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
try { String id = (String) request.getSession().getAttribute(Constants.LOGIN); if (id != null) { new ModelFacade().exit(id); request.getSession().invalidate(); } request.setAttribute(Constants.EXIT, Constants.EXIT); return mapping.findForward(Constants.SUCCESS_FORWARD); } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } } }
274
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.3.3. LoginAction.java
package abstractminds.controller.action.user;
import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.validator.DynaValidatorForm;
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
try { DynaValidatorForm dynaForm = (DynaValidatorForm) form; TinyUserBean user = new TinyUserBean( (String)dynaForm.get("id"), (String)dynaForm.get("password")); if (new ModelFacade().login(user)) { request.getSession() .setAttribute(Constants.LOGIN, user.getId()); return mapping.findForward(Constants.SUCCESS_FORWARD); } request.setAttribute(Constants.ERROR, Constants.ERROR); return mapping.findForward(Constants.BAD_LOGIN_FORWARD); } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } } }
275
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.3.4. LoginCounterAction.java
package abstractminds.controller.action.user;
import org.apache.struts.action.*;
import abstractminds.common.Constants;
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
if (loginCounter == null) { loginCounter = new Integer(1); } else { loginCounter = new Integer(loginCounter.intValue() + 1); } request.getSession().getServletContext() .setAttribute(Constants.LOGIN_COUNTER, loginCounter); System.out.println("Successful logins: " + loginCounter); return mapping.findForward(Constants.SUCCESS_FORWARD); } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } } }
276
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.3.5. QueryAllUsersAction.java
package abstractminds.controller.action.user;
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
try { request.setAttribute( Constants.USERS_LIST, new ModelFacade().getAllUsers()); } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } return mapping.findForward(Constants.SUCCESS_FORWARD); } }
277
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.5.3.6. QueryUserAction.java
package abstractminds.controller.action.user;
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
try { String id = request.getParameter(Constants.ID); if (id == null) { id = (String) request.getSession() .getAttribute(Constants.LOGIN); } request.setAttribute( Constants.USER_BEAN, new ModelFacade().getUser(id)); } catch(Exception e) { request.setAttribute(Constants.EXCEPTION, e); return mapping.findForward(Constants.GLOBAL_ERROR_FORWARD); } return mapping.findForward(Constants.SUCCESS_FORWARD); } }
278
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
diagram.editor = null;
diagram.DiagramEditor = function(jsonDiagram) {
diagram.editor = this;
this._setLoading(true);
// virtual editing surface dimensions this.surfaceTop = 7; this.surfaceLeft = 7; this.surfaceWidth = 600; this.surfaceHeight = 400;
dojo.style("diagramContainer", "background", "#DDDDDD"); dojo.style("diagramContainer", "overflow", "hidden"); dojo.style("diagramBackground", "width", (!dojo.isIE)? this.surfaceWidth : this.surfaceWidth + 1); dojo.style("diagramBackground", "height", (!dojo.isIE)? this.surfaceHeight : this.surfaceHeight + 1); dojo.style("diagramBackground", "position", "absolute"); dojo.style("diagramBackground", "top", (!dojo.isIE)? this.surfaceTop - 1 : this.surfaceTop );
279
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
dojo.style("diagramBackground", "left", (!dojo.isIE)? this.surfaceLeft - 1 : this.surfaceLeft); dojo.style("diagramBackground", "background", "#fff url(\"../css/img/grid.png\") repeat top left"); dojo.style("diagramBackground", "border", "1px solid black"); dojo.style("diagramBackground", "overflow", "hidden");
this._createSurface();
this.panMode = false; this.zoomFactor = 1; // no zoom this.nodes = []; this.nodeCounter = 0; this.currentNode = null; this.initialPosition = {x: 0, y: 0}; this.lastPosition = {x: 0, y: 0}; this.lastChange = 0; this.commitCount = 0; this.userId = jsonDiagram.userId; this.diagramId = jsonDiagram.diagramId; this._createDiagram(jsonDiagram.objects);
// basic mouse handlers dojo.connect(this.surfaceContainer, "onmousedown", this, "onMouseDown"); dojo.connect(this.surfaceContainer, "onmousemove", this, "onMouseMove"); dojo.connect(this.surfaceContainer, "onmouseup", this, "onMouseUp");
// cancel text selection and text dragging dojo.connect(this.surfaceContainer, "ondragstart", dojo, "stopEvent");
280
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
/////////////////////////////////////////////////////////////////////////////// /// // Common methods for 'diagram.DiagramEditor' /////////////////////////////////////////////////////////////////////////////// /// dojo.extend(diagram.DiagramEditor, { _applyChanges: function(changeId, changes){ this.lastChange = changeId; console.debug(this.lastChange); for(var i=0;i<changes.length;++i){ if("shapes" in changes[i]){ this._createNode(changes[i]); }else if("matrix" in changes[i]){ this.nodes[changes[i].nodeId].gfx .setTransform(changes[i].matrix); } } }, _getNodeUniqueId: function(){ var newUniqueId = "n" + (this.nodeCounter++) + this.userId; while(this.nodes[newUniqueId]){ newUniqueId = "n" + (this.nodeCounter++) + this.userId; } return newUniqueId; }, _setLoading:function(loading){ if (loading){ dijit.byId("loadingDialog").show(); }else{ dijit.byId("loadingDialog").hide(); } this.loading = loading; }, _relativePosition: function(p){ var coords = dojo._abs(this.surfaceContainer, true); return { x: (p.x - coords.x - this.surfaceLeft) / this.zoomFactor, y: (p.y - coords.y - this.surfaceTop) / this.zoomFactor }; }, _setLastPosition: function(p){ this.lastPosition = this._relativePosition(p); },
281
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
_setMouseLabel: function(p){ if(!p){ this.mouseLabel.innerHTML = " "; }else{ this.mouseLabel.innerHTML = " x: " + parseInt(p.x) + ", y: " + parseInt(p.y); } }, _addNode: function(node){ if (!node.nodeId){ return; } this.nodes[node.nodeId] = node; }, _getEventNode: function(event) { var id = event.target.getAttribute('nodeId'); return (id ? this.nodes[id] : null); }, _createSurface: function(){ var width = "100%"; var height = "100%"; if (dojo.isIE){ // fix IE bug that escales figures if surface is 100% x 100%, width = screen.width; // max screen width
height = screen.height; // max screen height } // this surface covers all the space withing ContentPane this.surface = dojox.gfx.createSurface( this.surfaceContainer, width , height); // this is a virtual editing surface for pan mode this.mainGroup = this.surface.createGroup(); // places every shape on diagram this.mainGroup.applyTransform( {dx: this.surfaceLeft, dy: this.surfaceTop}); // place surface to begin on top left dojo.style(this.surface.getEventSource(), "position", "absolute"); dojo.style(this.surface.getEventSource(), "top", 0); dojo.style(this.surface.getEventSource(), "left", 0); },
282
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
_createDiagram: function(json){ var i = 0; try{ if("nodes" in json){ for(;i<json.nodes.length;++i){ this._createNode(json.nodes[i]); } } if("edges" in json){ // TODO console.debug("TODO: edges"); } }catch(e){ console.debug(e); } }, _createNode: function(node){ if (!node.nodeId){ node.nodeId = this._getNodeUniqueId(); } this._addNode( new diagram.Node( this.mainGroup, node.nodeId, node.shapes, node.matrix) ); } } );
283
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
dojo.extend(diagram.DiagramEditor, {
onMouseDown: function(event){ if(this.currentNode || this.panMode) {return;} this._setLastPosition({ x: event.pageX, y: event.pageY }); this.initialPosition = { x: this.lastPosition.x, y: this.lastPosition.y }; var node = this._getEventNode(event); if (node) { this.panMode = false; this.currentNode = node; } else { this.currentNode = null; this.panMode = true; } dojo.stopEvent(event); },
284
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
if (relative.x < 0 || relative.x > this.surfaceWidth / this.zoomFactor || relative.y < 0 || relative.y > this.surfaceHeight / this.zoomFactor){ this._setMouseLabel(null); this.onMouseUp(event); dojo.stopEvent(event); return; }
this._setMouseLabel(relative);
if(this.currentNode) { this.currentNode.gfx.applyTransform(transform); } else if (this.panMode) { this.mainGroup.applyTransform(transform); this.surfaceTop += transform.dy * this.zoomFactor; this.surfaceLeft += transform.dx * this.zoomFactor; dojo.style(this.surfaceBackground, "top", (!dojo.isIE)? this.surfaceTop - 1 : this.surfaceTop); dojo.style(this.surfaceBackground, "left", (!dojo.isIE)? this.surfaceLeft - 1 : this.surfaceLeft); } this._setLastPosition(position); dojo.stopEvent(event); },
285
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
onMouseUp: function(event){ var aux = null; if(this.currentNode){ aux = {nodeId: this.currentNode.nodeId}; for (var i in this.currentNode.gfx.matrix) { aux[i] = this.currentNode.gfx.matrix[i]; } this.currentNode = null; this.commitChange(aux); } else if (this.panMode) { this.panMode = false; } dojo.stopEvent(event); } } );
/////////////////////////////////////////////////////////////////////////////// /// // Zoom in and out for 'diagram.DiagramEditor' /////////////////////////////////////////////////////////////////////////////// /// dojo.extend(diagram.DiagramEditor, { zoomIn: function(){ this.zoomFactor *= 2; this.surfaceWidth *= 2; this.surfaceHeight *= 2; this.zoom(dojox.gfx.matrix.scale(2)); }, zoomOut: function(){ this.zoomFactor /= 2; this.surfaceWidth /= 2; this.surfaceHeight /= 2; this.zoom(dojox.gfx.matrix.scale(0.5)); }, zoom: function(matrix){ dojo.style("diagramBackground", "width", this.surfaceWidth); dojo.style("diagramBackground", "height", this.surfaceHeight); this.mainGroup.applyTransform(matrix); } } );
286
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
/////////////////////////////////////////////////////////////////////////////// /// // XHR requests and handles for 'diagram.DiagramEditor' /////////////////////////////////////////////////////////////////////////////// ///
dojo.extend(diagram.DiagramEditor, {
queryAllChanges: function(){ if (this.intervalQuery) { clearInterval(this.intervalQuery); } try { this._setLoading(true); dojo.byId("commitLabel").innerHTML = "Commits: " + (++this.commitCount); dojo.xhrPost( { url: "../ajax/QueryDiagramChangesAction.do", handleAs: "text", timeout: 100000, content: { diagramId: diagram.editor.diagramId, changeId: diagram.editor.lastChange }, handle: function(response, ioArgs){ diagram.editor.handleFirstXhr(response, ioArgs); } }); } catch (e) { console.debug(e); this._setLoading(false); } },
287
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
queryChanges: function(){ try { dojo.byId("commitLabel").innerHTML = "Commits: " + (++diagram.editor.commitCount); dojo.xhrPost( { url: "../ajax/QueryDiagramChangesAction.do", handleAs: "text", timeout: 5000, content: { diagramId: diagram.editor.diagramId, changeId: diagram.editor.lastChange }, handle: function(response, ioArgs){ diagram.editor.handleXhr(response, ioArgs); } }); } catch (e) { console.debug(e); } }, commitChange: function(request){ request.diagramId = diagram.editor.diagramId; try { dojo.byId("commitLabel").innerHTML = "Commits: " + (++diagram.editor.commitCount); dojo.xhrPost( { url: "../ajax/CommitDiagramChangeAction.do", handleAs: "text", timeout: 5000, content: request, handle: function(response, ioArgs){ diagram.editor.handleXhr(response, ioArgs); } }); } catch (e) { console.debug(e); } },
288
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
handleFirstXhr: function(response, ioArgs){ this.handleXhr(response, ioArgs); this._setLoading(false); // simulate live conection with server this.intervalQuery = setInterval(this.queryChanges, 5000); }, handleXhr: function(response, ioArgs){ if(response instanceof Error){ if(response.dojoType == "cancel"){ this.handleXhrCancel(response, ioArgs); }else if(response.dojoType == "timeout"){ this.handleXhrTimeout(response, ioArgs); }else{ this.handleXhrError(response, ioArgs); } }else{ this.handleXhrResponse(response, ioArgs); } return response; }, handleXhrResponse: function(response, ioArgs){ var json = null; var i = 0; try{ json = dojo.fromJson(response); if ("changeId" in json){ this._applyChanges(json.changeId, json.redo); }else if("nodes" in json || "edges" in json){ this._createDiagram(json); }else if ("error" in json){ this.handleXhrError(json.error, ioArgs); } } catch (e) { console.debug("Error on 'handleXhrResponse'."); console.debug(e); } },
289
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
handleXhrError: function(response, ioArgs){ try { console.debug(response); console.debug("HTTP status code: " + ioArgs.xhr.status); } catch (e) { console.debug("Error on 'handleXhrError'."); console.debug(e); } }, handleXhrTimeout: function(response, ioArgs){ try { console.debug("Request timeout"); console.dir(ioArgs); } catch (e) { console.debug("Error on 'handleXhrTimeout'."); console.debug(e); } }, handleXhrCancel: function(response, ioArgs){ try { console.debug("Request cancelled"); console.dir(ioArgs); } catch (e) { console.debug("Error on 'handleXhrCancel'."); console.debug(e); } } } ); }
290
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.6.2. Node.js
if(!dojo._hasResource["diagram.Node"]){ dojo._hasResource["diagram.Node"] = true; dojo.provide("diagram.Node");
dojo.require("dojox.gfx");
if(shapes){ this.addShapes(shapes); }
if(matrix){ this.gfx.setTransform(matrix); } };
291
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
/////////////////////////////////////////////////////////////////////////////// /// // Common methods for 'diag.Node' /////////////////////////////////////////////////////////////////////////////// /// dojo.extend(diagram.Node, { _createShape: function(shape){ var s = null; var shapeId = null;
try{ shapeId = this.nodeId + "_" + (this.shapeCounter++); if(dojo.isObject(shape) && "coords" in shape){ switch(shape.coords.type){ case dojox.gfx.defaultPath.type: s = this.gfx.createPath(shape.coords); break; case dojox.gfx.defaultRect.type: s = this.gfx.createRect(shape.coords); break; case dojox.gfx.defaultCircle.type: s = this.gfx.createCircle(shape.coords); break; case dojox.gfx.defaultEllipse.type: s = this.gfx.createEllipse(shape.coords); break; case dojox.gfx.defaultLine.type: s = this.gfx.createLine(shape.coords); break; case dojox.gfx.defaultPolyline.type: s = this.gfx.createPolyline(shape.coords); break; case dojox.gfx.defaultImage.type: s = this.gfx.createImage(shape.coords); break; case dojox.gfx.defaultText.type: s = this.gfx.createText(shape.coords); break; case dojox.gfx.defaultTextPath.type: s = this.gfx.createTextPath(shape.coords); break; } if("fill" in shape){ s.setFill(shape.fill); } if("stroke" in shape){ s.setStroke(shape.stroke); } s.getEventSource().setAttribute('nodeId', this.nodeId); s.getEventSource().setAttribute('shapeId', shapeId); this.shapes[shapeId] = s; }
292
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
}catch(e){ console.debug(e); } }, addShapes: function(shapes){ if(dojo.isArray(shapes)){ for(i=0;i<shapes.length;++i){ this._createShape(shapes[i]); } }else{ this._createShape(shapes); } }, toJSON: function(){ var i = null; var shapesJSON = []; for(i in this.shapes){ shapesJSON.push({ coords: this.shapes[i].shape, fill: this.shapes[i].fillStyle, stroke: this.shapes[i].strokeStyle }); } return { nodeId: this.nodeId, shapes: shapesJSON, matrix: this.gfx.matrix }; } } ); }
293
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.1. defaultLayout.jsp
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html> <head> <html:base ref="site"/> <bean:define id="titleKey" toScope="request"> <tiles:getAsString name="titleKey"/> </bean:define> <title> <tiles:getAsString name="appTitle"/> <bean:message name="titleKey" scope="request"/> </title> <link rel="stylesheet" type="text/css" href="css/style.css" /> </head> <body> <div id="header"> <tiles:insert attribute="header"> <tiles:put name="session" beanName="footer" beanScope="tile"/> </tiles:insert> </div> <div id="menu"> <tiles:insert attribute="menu" ignore="true"/> </div> <div id="body"> <tiles:insert attribute="body"/> <div id="footer"> <p class="rightBlue"><tiles:insert attribute="footer" ignore="true"/></p> </div> </div> </body> <html/>
294
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.2. index.jsp
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> <logic:redirect page="/Login.do"/>
5.2.7.1.3. header.jsp
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
5.2.7.1.4. footer.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<logic:present name="login" scope="session"> <bean:message key="msg.logged_as"/>: <a href="app/QueryUserAction.do"> <bean:write name="login" scope="session"/> </a> ( <a href="ExitAction.do"><bean:message key="app.exit.link"/></a> ) </logic:present> <logic:notPresent name="login" scope="session"> <bean:message key="msg.not_logged"/> ( <a href="Login.do"><bean:message key="app.login.link"/></a> - <a href="AddUser.do"><bean:message key="app.add_user.link"/></a> ) </logic:notPresent>
5.2.7.1.5. error.jsp
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<h2><bean:message key="errors.global_error"/></h2> <logic:present name="exception" scope="request"> <br> <p class="error"><bean:write name="exception" scope="request"/></p> </logic:present>
295
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.6. menu.jsp
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<ul> <li> <a href="Index.do" title="<bean:message key="app.index.link"/>"> <span><bean:message key="app.index.link"/></span></a> </li> <li> <a href="app/QueryUserAction.do" title="<bean:message key="app.user.link"/>"> <span><bean:message key="app.user.link"/></span></a> </li> <li> <a href="app/QueryAllUsersAction.do" title="<bean:message key="app.users.link"/>"> <span><bean:message key="app.users.link"/></span></a> </li> <li> <a href="app/AddDiagram.do" title="<bean:message key="app.add_diagram.link"/>"> <span><bean:message key="app.add_diagram.link"/></span></a> </li> <li> <a href="app/QueryAllDiagramsAction.do" title="<bean:message key="app.diagrams.link"/>"> <span><bean:message key="app.diagrams.link"/></span></a> </li> </ul>
296
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.7. login.jsp
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<html:form action="/LoginAction.do" focus="id"> <table> <logic:present name="exit" scope="request"> <tr><td colspan="2"> <p class="success"><bean:message key="msg.logout"/>.</p> </td></tr> </logic:present> <logic:present name="error" scope="request"> <tr><td colspan="2"> <p class="error"><bean:message key="errors.login"/></p> </td></tr> </logic:present> <tr> <td class="td10 fieldLabel"> <h1><bean:message key="form.user.id"/>:</h1></td> <td class="tdMax"> <html:text property="id"/> <p class="error"> <html:errors property="id"/> </p> </td> </tr> <tr> <td class="fieldLabel"> <h1><bean:message key="form.user.password"/>:</h1></td> <td> <html:password property="password"/> <p class="error"> <html:errors property="password"/> </p> </td> </tr> <tr> <td></td><td><html:submit/><html:reset/></td> </tr> </table> </html:form>
297
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.8. addUser.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html:form action="/AddUserAction.do" focus="id"> <table> <tr> <td class="td10 fieldLabel"> <h1><bean:message key="form.user.id"/>:</h1></td> <td class="tdMax"><html:text property="id"/> <p class="error"><html:errors property="id"/></p> </td> </tr><tr> <td class="fieldLabel"> <h1><bean:message key="form.user.password"/>:</h1></td> <td><html:password property="password"/> <p class="error"><html:errors property="password"/></p> </td> </tr><tr> <td class="fieldLabel"> <h1><bean:message key="form.user.first_name"/>:</h1></td> <td><html:text property="firstName"/> <p class="error"><html:errors property="firstName"/></p> </td> </tr><tr> <td class="fieldLabel"> <h1><bean:message key="form.user.last_name"/>:</h1></td> <td><html:text property="lastName"/> <p class="error"><html:errors property="lastName"/></p> </td> </tr><tr> <td class="fieldLabel"> <h1><bean:message key="form.user.email"/>:</h1></td> <td><html:text property="email"/> <p class="error"><html:errors property="email"/></p> </td> </tr><tr> <td></td><td><html:submit/><html:reset/></td><td></td> </tr> </table> </html:form>
298
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.9. user.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<table> <tr> <td class="td10"><h1><bean:message key="form.user.id"/>:</h1></td> <td class="tdMax"><h2> <bean:write name="userBean" property="id" scope="request"/> </h2></td> </tr> <tr> <tr> <td><h1><bean:message key="label.diagramCount"/>:</h1></td> <td><h2> <bean:write name="userBean" property="diagramCount" scope="request"/> </h2></td> </tr> <tr> <td><h1><bean:message key="form.user.first_name"/>:</h1></td> <td><h2> <bean:write name="userBean" property="firstName" scope="request"/> </h2></td> </tr> <tr> <td><h1><bean:message key="form.user.last_name"/>:</h1></td> <td><h2> <bean:write name="userBean" property="lastName" scope="request"/> </h2></td> </tr> <tr> <td><h1><bean:message key="form.user.email"/>:</h1></td> <td><h2> <bean:write name="userBean" property="email" scope="request"/> </h2></td> </tr> </table>
299
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.10. users.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<table class="report"> <thead> <tr> <td class="tdMin"><p><bean:message key="form.user.id"/></p></td> <td class="tdMin"><p><bean:message key="label.diagramCount"/></p></td> <td class="td20"><p><bean:message key="form.user.first_name"/></p> </td> <td class="td25"><p><bean:message key="form.user.last_name"/></p></td> <td class="tdReamin"><p><bean:message key="form.user.email"/></p></td> </tr> </thead> <tbody> <logic:iterate id="user" name="usersList" scope="request"> <tr> <td><p><bean:write name="user" property="id"/> </p></td> <td><p><bean:write name="user" property="diagramCount"/> </p></td> <td><p><bean:write name="user" property="firstName"/> </p></td> <td><p><bean:write name="user" property="lastName"/> </p></td> <td><p><bean:write name="user" property="email"/> </p></td> </tr> </logic:iterate> </tbody> </table>
300
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.11. addDiagram.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html:form action="/app/AddDiagramAction.do" focus="name"> <table> <tr> <td class="td10 fieldLabel"> <h1><bean:message key="form.diagram.name"/>:</h1></td> <td class="tdMax"> <html:text property="name"/> <p class="error"><html:errors property="name"/></p> </td> </tr> <tr> <td class="fieldLabel"> <h1><bean:message key="form.diagram.description"/>:</h1></td> <td> <html:textarea property="description"/> <p class="error"><html:errors property="description"/></p> </td> </tr> <tr> <td></td><td><html:submit/><html:reset/></td><td></td> </tr> </table> </html:form>
301
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.12. diagram.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%> <table> <tr> <td width="td10"><h1><bean:message key="form.diagram.id"/>:</h1></td> <td class="tdMax"><h2><bean:write name="diagramBean" property="id" scope="request"/></h2></td> </tr> <tr> <tr> <td><h1><bean:message key="form.diagram.name"/>:</h1></td> <td><h2><bean:write name="diagramBean" property="name" scope="request"/></h2></td> </tr> <tr> <td><h1><bean:message key="form.diagram.creator"/>:</h1></td> <td><h2><bean:write name="diagramBean" property="creator" scope="request"/></h2></td> </tr> <tr> <td><h1><bean:message key="form.diagram.version"/>:</h1></td> <td><h2><bean:write name="diagramBean" property="version" scope="request"/></h2></td> </tr> <tr> <td><h1><bean:message key="label.actions"/>:</h1></td> <td> <tiles:insert page="privilegesActions.jsp"></tiles:insert> </td> </tr> <tr> <td><h1><bean:message key="form.diagram.description"/>:</h1></td> <td><h2><bean:write name="diagramBean" property="description" scope="request"/></h2></td> </tr> </table>
302
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.13. diagrams.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%> <table class="report"> <thead> <tr> <td class="td20"><p><bean:message key="form.diagram.name"/></p></td> <td class="tdMin"> <p><bean:message key="form.diagram.version"/></p></td> <td class="tdMin"> <p><bean:message key="form.diagram.creator"/></p></td> <td class="tdMax"><p><bean:message key="label.actions"/></p></td> </tr> </thead> <logic:present name="diagramsList" scope="request"> <tbody> <logic:iterate id="diagramBean" name="diagramsList" scope="request"> <tr> <td><p><bean:write name="diagramBean" property="name"/> </p></td> <td><p><bean:write name="diagramBean" property="version"/> </p></td> <td><p><bean:write name="diagramBean" property="creator"/> </p></td> <td> <bean:define id="diagramBean" name="diagramBean" toScope="request"/> <jsp:include page="privilegesActions.jsp" flush="true"/> </td> </tr> </logic:iterate> </tbody> </logic:present> <logic:notPresent name="diagramsList" scope="request"> <tr><td colspan="4"> <p><bean:message key="msg.empty"/>.</p> </td></tr> </logic:notPresent> </table>
303
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.14. diagramPrivileges.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> <logic:present name="userId" scope="request"> <p class="success"><bean:message key="msg.privilege.updated"/>: <strong>'<bean:write name="userId"/>'</strong></p> </logic:present> <table class="report"> <thead> <tr> <td class="tdMin"><p><bean:message key="form.user.id"/></p></td> <td class="tdMax"><p><bean:message key="label.privileges"/></p></td> </tr> </thead> <tbody> <logic:iterate id="privilege" name="diagramPrivileges" scope="request"> <tr> <td><p><a href="app/QueryUserAction.do?id=<bean:write name="privilege" property="userId"/>" title="<bean:message key="app.user.link"/>" ><bean:write name="privilege" property="userId"/></p></a> </td> <logic:equal name="privilege" property="privilege" value="5"> <td> <img src="css/img/extra.png" alt="<bean:message key="privilege.creator"/>"> <bean:message key="privilege.creator"/> </td> </logic:equal> <logic:notEqual name="privilege" property="privilege" value="5"> <td> <form method="POST" action="app/ChangeDiagramPrivilegeAction.do"> <input type="hidden" name="diagramId" value="<bean:write name="privilege" property="diagramId"/>"> <input type="hidden" name="userId" value="<bean:write name="privilege" property="userId"/>">
304
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
CHECKED</logic:equal>> <img src="css/img/remove16.png" alt="<bean:message key="privilege.none"/>"> <bean:message key="privilege.none"/><br> <input type="radio" value="0" name="privilege" <logic:equal name="privilege" property="privilege" value="0"> CHECKED</logic:equal>> <img src="css/img/info16.png" alt="<bean:message key="privilege.view"/>"> <bean:message key="privilege.view"/><br> <input type="radio" value="1" name="privilege" <logic:equal name="privilege" property="privilege" value="1"> CHECKED</logic:equal>> <img src="css/img/copy16.png" alt="<bean:message key="privilege.copy"/>"> <bean:message key="privilege.copy"/><br> <input type="radio" value="2" name="privilege" <logic:equal name="privilege" property="privilege" value="2"> CHECKED</logic:equal>> <img src="css/img/open16.png" alt="<bean:message key="privilege.edit"/>"> <bean:message key="privilege.edit"/><br> <input type="radio" value="3" name="privilege" <logic:equal name="privilege" property="privilege" value="3"> CHECKED</logic:equal>> <img src="css/img/versions16.png" alt="<bean:message key="privilege.versions"/>"> <bean:message key="privilege.versions"/><br> <input type="radio" value="4" name="privilege" <logic:equal name="privilege" property="privilege" value="4"> CHECKED</logic:equal>> <img src="css/img/privileges16.png" alt="<bean:message key="privilege.total"/>"> <bean:message key="privilege.total"/><br> <input type="submit" value="<bean:message key="submit.update"/>"/> </form> </td> </logic:notEqual> </tr> </logic:iterate> </tbody> </table>
305
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.15. privilegesActions.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<logic:greaterEqual name="diagramBean" property="privilege" value="0"> <a class="action" href="app/QueryDiagramAction.do?diagramId=<bean:write name="diagramBean" property="id"/>" title="<bean:message key="title.diagram"/>" ><img src="css/img/info.png" alt="<bean:message key="title.diagram"/>"/></a> </logic:greaterEqual>
<logic:greaterEqual name="diagramBean" property="privilege" value="1"> <a class="action" href="app/LoadDiagramAction.do?diagramId=<bean:write name="diagramBean" property="id"/>" title="<bean:message key="title.diagram.copy"/>" ><img src="css/img/copy.png" alt="<bean:message key="title.diagram.copy"/>"/></a> </logic:greaterEqual>
<logic:greaterEqual name="diagramBean" property="privilege" value="2"> <a class="action" target="editor" href="app/LoadDiagramAction.do?diagramId=<bean:write name="diagramBean" property="id"/>" title="<bean:message key="title.diagram.editor"/>" ><img src="css/img/open.png" alt="<bean:message key="title.diagram.editor"/>"/></a> </logic:greaterEqual>
<logic:greaterEqual name="diagramBean" property="privilege" value="4"> <a class="action" href="app/QueryDiagramPrivilegesAction.do?diagramId=<bean:write name="diagramBean" property="id"/>" title="<bean:message key="label.managePrivileges"/>" ><img src="css/img/privileges.png" alt="<bean:message key="title.diagram.privileges"/>"/></a> </logic:greaterEqual>
306
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<logic:lessEqual name="diagramBean" property="privilege" value="4"> <a class="action" href="app/ChangeDiagramPrivilegeAction.do?diagramId=<bean:write name="diagramBean" property="id" />&userId=<bean:write name="login" scope="session" />&privilege=-1" title="<bean:message key="form.diagram.remove"/>" ><img src="css/img/remove.png" alt="<bean:message key="form.diagram.remove"/>"/></a> </logic:lessEqual>
<logic:greaterEqual name="diagramBean" property="privilege" value="5"> <a class="action" href="app/DestroyDiagramAction.do?diagramId=<bean:write name="diagramBean" property="id"/>" title="<bean:message key="form.diagram.destroy"/>" ><img src="css/img/destroy.png" alt="<bean:message key="form.diagram.destroy"/>"/></a> </logic:greaterEqual>
307
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.16. diagramEditor.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <html> <head> <title>Abstract Minds - <bean:message key="title.diagram.editor"/></title> <script type="text/javascript" src="../ajax/dojo/dojo.js.uncompressed.js" djConfig="parseOnLoad: true, isDebug: true"></script> <link rel="stylesheet" type="text/css" href="../ajax/dojo/resources/dojo.css"/> <link rel="stylesheet" type="text/css" href="../ajax/dijit/themes/tundra/tundra.css"/> <link rel="stylesheet" type="text/css" href="../css/diagram.css"/>
<script type="text/javascript"> /* Dojo Parser */ dojo.require("dojo.parser"); /* Widgets */ dojo.require("dijit.Menu"); dojo.require("dijit.Toolbar"); dojo.require("dijit.form.Button"); dojo.require("dijit.layout.ContentPane"); dojo.require("dijit.layout.SplitContainer"); dojo.require("dijit.layout.AccordionContainer"); dojo.require("dijit.layout.LayoutContainer"); dojo.require("dijit.Dialog"); dojo.require("dijit.ProgressBar"); /* Diagram Editor */ dojo.require("diagram.DiagramEditor");
/* Initialization */ function initDiagramEditor(){ editor = new diagram.DiagramEditor({ diagramId:'<bean:write name="diagramBean" property="id" scope="request"/>', userId:'<bean:write name="login" scope="session"/>', objects:<bean:write name="diagramBean" property="jsonObjects" scope="request" filter="false"/> } ); } dojo.addOnLoad(initDiagramEditor); </script> </head>
308
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<body class="tundra">
<div id="loadingDialog" dojoType="dijit.Dialog" title="Loading..." duration="500" style="width: 275px; display: none; position: absolute"> <div id="loadingProgressBar" indeterminate="true" dojoType="dijit.ProgressBar" style="width:250px; height:12px;"></div> </div>
<div id="main" dojoType="dijit.layout.LayoutContainer"> <div id="toolbar" dojoType="dijit.Toolbar" layoutAlign="top"> <button dojoType="dijit.form.ComboButton" iconClass="dijitEditorIconSave" onClick='console.debug("clicked file menu")'> <span>File</span> <div dojoType="dijit.Menu" id="fileMenu" style="display: none;"> <div dojoType="dijit.MenuItem" iconClass="dijitEditorIconSave" Save </div> <div dojoType="dijit.MenuItem" Save As </div> </div> </button> <span dojoType="dijit.ToolbarSeparator"></span> <button dojoType="dijit.form.Button" id="zoomIn" onClick='editor.zoomIn()'> <span>Zoom In</span> </button> <button dojoType="dijit.form.Button" id="zoomOut" onClick='editor.zoomOut()'> <span>Zoom Out</span> </button> <span dojoType="dijit.ToolbarSeparator"></span> </div>
309
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
<div id="accordion" dojoType="dijit.layout.AccordionContainer" duration="300" sizeMin="100" sizeShare="10" style="width:100%; height:100%"> <div dojoType="dijit.layout.AccordionPane" title="Formas" selected="true"> <div id="toolbarShapes" dojoType="dijit.Toolbar"> <button dojoType="dijit.form.Button" id="createRect" onClick='editor.createNode(new diagram.defaultRect)'> </button> <button dojoType="dijit.form.Button" id="createCircle" onClick='editor.createNode(new diagram.defaultCircle)'> </button> <button dojoType="dijit.form.Button" id="createEllipse" onClick='editor.createNode(new diagram.defaultEllipse)'> </button> </div><!-- end Toolbar1 --> </div> <div dojoType="dijit.layout.AccordionPane" title="Conexin"> <div id="commitLabel">Commits: 0</div> </div> </div><!-- end AccordionContainer -->
<div dojoType="dijit.layout.LayoutContainer" sizeMin="300" sizeShare="90"> <div dojoType="dijit.layout.ContentPane" layoutAlign="bottom" id="mouseLabel"> </div> <div dojoType="dijit.layout.ContentPane" id="diagramContainer" layoutAlign="client"> <div id="diagramBackground"></div> </div> </div><!-- end Layoutcontainer -->
</div><!-- end SplitContainer --> </div><!-- end Layoutcontainer --> </body> </html>
310
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.1.17. ajax.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %><bean:write name="JSON" scope="request" filter="false"/>
5.2.7.1.18. ajax_error.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>{error:"<bean:write name="error" scope="request" filter="false"/>"}
311
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.2.1. style.css
body{ margin: 0; padding: 10px; background: #324b63 url(img/prueba.png) repeat-x left top; }
p{ font-size:0.90em; }
/* IDs */
#header{ background: transparent; color: white; padding:0; padding-left: 1em; margin-bottom: 3em; }
#body{ color: black; font-family:Verdana,sans-serif; background: white url(img/body.gif) repeat-x left bottom; border: 1px solid #2956B2; padding: 20px 20px 10px 20px; }
312
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
#body .report thead{ font-family: Arial, sans-serif; background:#324b63 url(img/prueba.png) repeat-x left top; color:white; font-size:1em; font-weight:bold; }
313
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
314
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
#menu a{ float:left; background:url(img/tab-left.gif) no-repeat left top; margin:0; margin-right: 1px; /*Espacio entre pestaas*/ padding:0 0 0 14px; text-decoration:none; }
#menu a span{ float:left; display:block; background:url(img/tab.gif) no-repeat right top; padding: 6px 18px 2px 3px; font-weight:bold; font-family: Arial, sans-serif; color:#3B3B3B; cursor: pointer; }
315
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
#footer{ font-family: Arial, sans-serif; font-size:1em; text-align:right; margin:0; padding-right:5px; padding-bottom:5px; color: #2956B2; }
/* Classes */
.title{ font-style: italic; color: #2956B2; border-bottom:2px solid #7e9fff; margin-top:3em; padding: 0.5em; }
.right{ float:right; }
316
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
.rightWhite{ font-family: Arial, sans-serif; font-size:0.7em; color: white; text-align:right; margin:0; padding-right:5px; }
.hidden { color:white; }
.tdMin{ width:1%; }
.tdMax{ width:100%; }
317
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
.td10{ width:10%; }
.td20{ width:20%; }
.td30{ width:30%; }
.td40{ width:40%; }
.td50{ width:50%; }
.tdRemain{ width:*; }
318
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
5.2.7.2.2. diagram.css
head, body { height: 100%; width: 100%; padding: 0; margin: 0; border: 0; }
319
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
#createRect, #createCircle, #createEllipse, #default { padding: 0; margin: 0; margin-bottom: 2px; background: url('img/button_empty.png') no-repeat; width: 28px; height: 24px; display: block; border: none; background-position: 0 0; }
320
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
321
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
CAPTULO 6: MANUALES
Este captulo incluye el manual de instalacin del sistema con los pasos a seguir y los requisitos mnimos de hardware y software. Tambin se describe el uso bsico del entorno mediante un manual de usuario organizado por funcionalidades.
322
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
323
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Ms de 10 GB Ms de 2 GB Ms de 100 Mbps
6.1.1.2. Software
Recurso Mnimo Recomendado
324
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
325
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
326
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
El usuario y la contrasea deben estar formados por un mnimo de cuatro caracteres y un mximo de veinte, sin espacios y sin smbolos especiales, nicamente letras, nmeros y el carcter de subrayado (_). En caso de introducir algn campo incorrecto o que no exista el usuario en el sistema se mostrar un mensaje de error adaptado al idioma seleccionado en el navegador Web. 327
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
6.2.1.2. Crear Usuario Si el usuario es nuevo en el sistema se requiere la creacin de una nueva cuenta de usuario con un identificador y una contrasea como mnimo, adems de otros datos opcionales que se irn ampliando en futuras versiones del sistema en funcin de las necesidades.
Al igual que en el formulario de conexin los mensajes que se muestran estn internacionalizados, tanto las etiquetas de los campos como los mensajes de error.
328
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
6.2.1.3. Consultar Usuarios Los usuarios del sistema pueden ser consultados libremente por cualquier usuario del sistema tanto desde la opcin del men correspondiente, como desde otras zonas ms especficas. Al seleccionar un usuario concreto se mostrar una pgina con sus datos.
329
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Slo existe un usuario que pueda ser creador de un diagrama y es aquel que lo creara mediante este formulario. El creador es el nico que puede destruir el diagrama y todos los recursos asociados al mismo.
330
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
6.2.2.2. Consultar Diagramas La gestin de diagramas se realiza mediante el listado de diagramas del usuario. En dicho listado aparecen los diagramas a los que tiene acceso ordenados por nivel de privilegios descendente.
El creador puede destruir diagramas desde esta pantalla mediante el botn , sin embargo esta opcin es irreversible, por lo que deber emplearse con cautela. Ningn usuario puede destruir un diagrama que no haya sido creado por l mismo, lo que s puede es descartar el acceso a dicho diagrama mediante .
331
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
6.2.2.3. Gestionar Permisos sobre Diagramas Uno de los apartados ms importantes de la gestin de diagramas es la gestin de los privilegios asociados a cada usuario.
Desde esta pgina podemos asignar los permisos apropiados para cada usuario del sistema. Slo los usuarios con privilegio de control total o el propio creador pueden gestionar los permisos, es decir, inicialmente slo el creador puede acceder a esta funcionalidad. Las acciones permitidas por cada privilegio son acumulables y van de menos a ms funcionalidad.
332
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Puede crear una copia exacta del diagrama para uso personal. El nuevo diagrama tendr por creador el usuario que solicita la copia.
Permite cargar y modificar libremente el diagrama, as como colaborar de manera sncrona con otros usuarios autorizados.
Aade permisos para exportar y publicar o crear nuevas versiones del diagrama.
Este ltimo privilegio da acceso total al diagrama, permitiendo incluso modificar los permisos de otros usuarios (salvo del creador).
333
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Entre las acciones posibles destacan algunas como definir las dimensiones del rea de diseo, aadir y eliminar componentes, realizar conexiones entre componentes, aplicar transformaciones bsicas (zoom, rotacin), cortar, copiar y pegar, historial de deshacer / rehacer, guardar, exportar e importar.
334
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
335
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
CAPTULO 7: CONCLUSIONES
Como captulo final se exponen las conclusiones derivadas de todo el trabjo realizado para el anlisis, diseo y construccin del prototipo final, as como para la elaboracin de este documento. Adicionalmente se detalla el contenido de los entregables y el catlogo de ampliaciones que se proponen.
336
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
7.1. Resultados
Este apartado comprende todas las conclusiones derivadas de la realizacin de este proyecto, tanto en los estudios previos como en las fases ms avanzadas de desarrollo. Estudios realizados Durante la mayor parte de este proyecto la actividad principal ha sido el estudio de las diferentes tecnologas, libreras y herramientas a emplear para cumplir los objetivos marcados. La metodologa de trabajo empleada enfoca la solucin al problema hacia la reutilizacin de componentes ya desarrollados, preferiblemente basados en cdigo abierto. Lo cual a primera vista supone un ahorro de tiempo de desarrollo, pero que sin embargo requiere un esfuerzo continuo, ms an cuando es necesario realizar alguna funcin concreta a travs de estos componentes. Quiz la mayor barrera sea la escasa documentacin del cdigo y las libreras empleadas, incluso la falta de madurez que llegan a presentar estos recursos al profundizar en sus funcionalidades ms complejas. Para solver estos problemas, en muchas ocasiones se ha optado por consultar el cdigo fuente directamente, como es el caso del mdulo de grficos vectoriales de Dojo, cuya documentacin es mnima y que sin embargo se pueden conseguir resultados de gran calidad mediante el examen detallado del cdigo fuente. De no haber elegido recursos de cdigo abierto esto nunca hubiese sido posible y se podra haber convertido en una barrera ms difcil de solucionar. De esta fase cabe destacar el conocimiento adquirido sobre tecnologas relativamente modernas como XML, AJAX, Web 2.0 y Struts entre otras. Planificacin Este ha sido uno de los apartados en los que se ha hecho ms notable la falta de experiencia con la que se afronta un proyecto de fin de carrera. Resulta muy complicado prever cunto tiempo puede requerir una actividad concreta, de hecho se ha tendido a planificar con holgura las diferentes fases del proyecto de tal modo que pudiesen acometerse con los menores contratiempos posibles, y an as siempre hay momentos en los que por circunstacias externas puede tambalearse cualquier plan previsto. Sin duda el mejor mecanismo de la que se ha hecho uso es la elaboracin de los prototipos, que ha permitido ir acotando paulatinamente el alcance del prototipo final, consiguiendo ajustar adecuadamente los plazos de desarrollo y documentacin del proyecto a las fechas previstas.
337
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Prototipos La decisin de usar una metodologa de desarrollo basada en prototipado gil surge ya en la primera reunin con el director del proyecto. La motivacin fue el hecho de plantear el sistema como un entorno Web 2.0, ya que este tipo de sistemas se basan en el concepto de beta continua, lo que supone que nacen como prototipo y evolucionan continuamente como prototipos cada vez ms completos y fiables. Este hecho unido a la motivacin de crear un proyecto de cdigo abierto permite que sean los propios usuarios los que depuren el sistema a traves de listas de bugs y peticiones, siempre que se consiga proveerlos de un entorno y una documentacin adecuados. Incluso la colaboracin de los usuarios puede ser directa mediante la modificacin explcita del sistema o proponiendo modulos y ampliaciones adicionales. Anlisis En esta fase tambin se ha hecho palpable la falta de experiencia anterior en la identificacin y especificacin de requerimientos. Se ha tratado de llevar un seguimiento exhaustivo de la especificacin realizada al principio del anlisis que ha permitido delimitar adecuadamente el grado de completitud de cada prototipo y que ha sido un gran apoyo de cara a afrontar el diseo detallado del sistema y su posterior desarrollo. Una vez superadas todas las fases del proyecto resulta evidente la importancia de esta actividad en el ciclo de vida de cualquier proyecto, hasta el punto de que muchas de las barreras y contratiempos detectados durante el desarrollo surgen de incoherencias en los requisitos o en los casos de uso. Diseo A partir de esta actividad el proyecto empieza a tomar forma y pueden probarse las funcionalidades ms bsicas mediante los prototipos que se han ido desarrollando con anterioridad. Los mtodos empleados para disear el sistema han resultado ms amigables y expresivos que los del anlisis. Se define la arquitetura del sistema mediante el patrn MVC, que le confiere un grado de escalabilidad destacable y permite separar las responsabilidades en capas con muy bajo acoplamiento entre s, normalmente interconectadas mediante clases basadas en el patrn Facade. Sin duda esta ha sido la actividad ms laboriosa de completar, y quiz la ms tensa, por la necesidad de acotar correctamente el alcance del prototipo final y disponer de tiempo suficiente para disear una arquitectura global y su posterior implementacin.
338
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
Construccin El objetivo original de este proyecto es el desarrollo de un prototipo lo ms completo y funcional posible de un entorno de diseo de diagramas de interconexin de objetos a travs de Internet. Al ser una aplicacin Web permite a los usuarios acceder a su funcionalidad desde cualquier ordenador con conexin a Internet. Adems se ha construido mediante tecnologas Web 2.0, como AJAX y JSON, que aportan un grado mucho ms elevado de interactividad y dinamismo a las interfaces de usuario. Tambin se logr encontrar un vocabulario XML apropiado, GraphML, que es empleado en la representacin de grafos y por tanto cubre perfectamente las necesidades del diseo de diagramas. Al final el requerimiento de colaboracin sncrona entre usuarios ha sido prioritario respecto al resto por lo que ha podido ser completado con xito y adems se incluye un entorno de diseo y gestin de diagramas bastante completo, en el que los usuarios pueden compartir sus recursos. En lo que respecta a los navegadote, puede decirse que cubre ampliamente el catlogo de alternativas ms utilizadas por los usuarios, habiendo sido prubado con xito en Internet Explorer 6, Mozilla Firefox 2. Opera 9 y Safari 3. Adems no requiere de instalacin alguna de plugins en ninguno de ellos. Gracias a las facilidades aportadas por Struts tambin ha sido posible realizar una interfaz de usuario internacionalizada completamente mediante archivos de recursos.
339
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
7.2. Entregables
El presente documento adjunta un CD cuyo contenido se detalla brevemente a continuacin: Archivo LEEME.txt Archivo de texto con la descripcin del contenido del CD y la identificacin del proyecto y del autor. Directorio Entorno Entorno de desarrollo empleado en la construccin del proyecto. Directorio Sistema Archivo de despliegue WAR para JBOSS y archivo de comandos SQL para crear la base de datos en Oracle 10g. Directorio Fuentes Cdigo fuente, ficheros de configuracin y libreras necesarias para compilar el proyecto desde Eclipse u otro entorno de desarrollo para JEE. Directorio Documentacion Copia digital de este documento y otros recursos empleados en su elaboracin. Directorio Manuales Manuales de instalacin y de usuario.
340
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
7.3. Ampliaciones
La siguiente actividad a llevar a cabo antes de proseguir el desarrollo de prototipos es la especificacin detallada de un plan de pruebas que incluya pruebas individuales exhaustivas de todos los componentes desarrollados, pruebas de integracin de todos los subsistemas y pruebas de rendimiento para comprobar la escalabilidad del sistema y la correcin de la gestin de recursos del hardware de cara a afrontar un gran numero de usuarios simultneos. Tambin es imprescindible realizar tests apropiados de usabilidad que garantizen la calidad de la interfaz de usuario en sucesivas versiones. Uno de los aspectos ms destacables de la solucin planteada es la arquitectura del sistema ya mencionada en anteriores ocasiones que realmente supone una puerta abierta para incorporar al sistema las ampliaciones que se proponen a continuacin. Mejorar el entorno de diseo de diagramas El editor de diagramas admite ms funcionalidades de las implementadas, algunas de las cuales se prev que surjan del uso mismo del sistema. Mejorar el gestor de contenidos El prototipo desarrollado no est destinado a trabajar con un gran nmero de ocurrencias en los listados, en caso de querer gestionar una cantidad elevada de infomacin sera conveniente aadir funcionalidades bsicas de paginacin de resultados. Mejorar el sistema de comunicacin entre usuarios Cualquier ampliacin que suponga una mejora en los mecanismos disponibles para fomentar la comunicacin entre usuarios, puede suponer un gran avance en la usabilidad del subsistema de colaboracin sncrona. Editor de componentes La incorporacin de un subsistema de gestin y edicin de componentes permitira a los usuarios personalizar las herramientas empleadas en el diseo de los diagramas. Teora de grafos Existen mltiples posibilidades de ampliacin en este campo, entre las que destaca la posibilidad de distribuir los elementos del diagrama en estructura jerrquica, orgnica, circular... Tambin podran aadirse utilidades especficas para el diseo de grafos y la aplicacin de algoritmos cuyos resultados se reflejen en el propio grafo.
341
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
342
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
343
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
GLOSARIO
Componente
Objeto con entidad propia que tiene una representacin grfica y un comportamiento especficos dentro del editor de diagramas. Lnea de unin entre dos componentes que representa un relacin lgica determinada entre ambos. Capa encargada de coordinar el flujo de la aplicacin y gestionar las peticiones del servidor en el patrn MVC. Estructura formada por un conjunto componentes o nodos y las conexiones existentes entre ellos. Capa responsable de la lgica de negocio dentro del patrn de diseo MVC. Un patrn de diseo es una solucin a un problema de diseo no trivial que es efectiva y reutilizable. Conjunto de mdulos o subsistemas que se integran para proporcionar una funcionalidad completa. Cambio en las propiedades de un componente o diagrama que modifica su aspecto o su colocacin. Esta capa se encarga de mostrar los resultados al usuario y recoger sus solicitudes en el patrn MVC.
Conexin
Controlador
Diagrama
Modelo
Patrn
Sistema
Transformacin
Vista
344
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
345
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
BIBLIOGRAFA
[Cantero] Pedro Cantero Espadas. Tutorial sobre Domtica e Inmtica Universidad de Oviedo, Escuela Politcnica Superior de Informtica de Gijn. PFC 1042012, Enero de 2005. [Chico] Grupo CHICO. DomoSim-TPC Universidad de Castilla - La Mancha, Escuela Superior de Informtica. http://chico.inf-cr.uclm.es/domosim/ [CoVis] The School of Education & Social Policy. Learning through Collaborative Visualization Northwestern University. http://www.covis.northwestern.edu/ [CSILE] Marlene Scardamalia, Carl Bereiter. Computer-Supported Intentional Learning Environments Ontario Institute for Studies in Education. http://www.ed.gov/pubs/EdReformStudies/EdTech/csile.html [Dojo] Dojo Fundation. The Dojo Toolkit, The JavaScript Toolkit http://dojotoolkit.org/ [eLearning] Wikimedia Foundation. Aprendizaje Colaborativo http://es.wikibooks.org/wiki/Aprendizaje_colaborativo [GraphML] GraphML Project Group. The GraphML File Format http://graphml.graphdrawing.org/
346
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
[JEE] Sun Microsistems. Java Enterprise Edition http://java.sun.com/javaee/ [JUNG] The JUNG Framework Development Team. Java Universal Network/Graph Framework http://jung.sourceforge.net/ [Moodle] Martin Dougiamas. Modular Object-Oriented Dynamic Learning Environment http://moodle.org/ [Redaccin] Jos A. Mari Mutt. Manual de Redaccin Cientfica Universidad de Puerto Rico, Departamento de Biologa. http://caribjsci.org/epub1/index.htm [Redondo] Miguel ngel Redondo Duque. Planificacin Colaborativa del Diseo en Entornos de Simulacin para el Aprendizaje a Distancia Universidad de Castilla - La Mancha, Escuela Superior de Informtica. Marzo de 2002. http://chico.inf-cr.uclm.es/mredondo/dsk/inves/tesis/tesis.pdf [Struts] The Apache Software Foundation. Apache Jakarta Struts Framework http://struts.apache.org/1.x/userGuide/ [TibcoRIA] TIBCO Software Inc. Ajax Rich Internet Application Resource Center http://www.tibco.com/software/rich_internet_application/general_interface/ [W3CBreves] The World Wide Web Consortium (W3C). Guas Breves de Tecnologas W3C http://www.w3c.es/Divulgacion/Guiasbreves/
347
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
[W3Schools] Refsnes Data. Full Web Building Tutorials - All Free http://www.w3schools.com/ [Wikipedia] Wikimedia Fundation. Wikipedia, The Free Encyclopedia http://en.wikipedia.org/ [XML] The World Wide Web Consortium (W3C). Extensible Markup Language (XML) http://www.w3.org/XML/ [XMLSchema] The World Wide Web Consortium (W3C). XML Schema http://www.w3.org/XML/Schema
348
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
349
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
NDICE ALFABTICO
Domtica 23, 48, 51, 52, 53, 55, 66, 346
A
Action 35, 114, 132, 133, 134, 143, 167, 168, 169, 170, 171, 172, 180, 181, 184, 263, 264, 265, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278 Actor 84 AJAX 4, 20, 29, 31, 32, 38, 41, 49, 58, 59, 62, 65, 69, 70, 71, 73, 74, 75, 78, 82, 111, 112, 116, 125, 126, 162, 187, 251, 266, 271, 339 Alcance 47, 51 Anlisis 6, 60, 103, 104, 105, 106, 338
E
Eclipse 34, 35, 42, 43 Edicin 75, 334 Editar 201, 202 Entidad 22, 130, 146 Entorno 49, 58 Escenario 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102 Especificacin 22, 78, 79, 81, 83, 116, 117, 120 Estructura 6, 22, 115 Estudio 6, 22, 49, 50, 51, 52, 66, 68
B
Bean 183
F
Formato 71, 74, 75, 122, 127 Formulario 327 Framework 41, 69, 75, 347
C
Caso de Uso 85, 88, 93, 96, 100, 104, 105, 106, 108, 109, 110, 111, 112, 113 Casos de Uso 83, 85 Clase 108, 109, 110, 111, 112, 113, 148, 149, 150, 151, 152, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175 Clasificacin 69 Cdigo Fuente 203 Conexin 310, 324 Configuracin 179 Construccin 122, 124 Controlador 4, 35, 78, 104, 105, 106, 111, 114, 123, 132, 143 CSS 29, 33, 38, 203, 312
G
Gestin 23, 38, 66, 327, 330 Gestionar 63, 64, 79, 80, 85, 93, 100, 104, 105, 106, 108, 109, 110, 111, 112, 113, 117, 118, 119, 124, 201, 332 GraphML 25, 27, 28, 40, 41, 69, 70, 134, 142, 145, 158, 159, 160, 161, 229, 231, 232, 346
I
Identificacin 22, 61, 62, 63, 104 Implementacin 108, 109, 110, 111, 112, 113 Instalacin 323, 325 Integracin 38, 42, 122, 128 Interconexin 64, 122, 126 Interfaz de Usuario 115, 117, 118, 119, 120, 127 Internet 4, 20, 21, 23, 25, 29, 31, 36, 49, 58, 63, 78, 82, 127, 324, 339, 347 IU 115, 116
D
Desarrollo 23, 36, 38, 69, 70 Descripcin de Clases 108 Despliegue 325 Detalle IU 116 Diagrama 83, 107, 135, 146, 176, 201, 330 Diagrama de Clases 107 Diagrama de Componentes 176 Diagrama de Flujo IU 115 Diagrama de Paquetes 135 Diccionario de Datos 147 Disear 79, 80, 82, 88, 96, 104, 105, 108, 109, 111, 112, 117, 118, 124, 149, 150, 164, 165, 166, 172 Diseo 6, 55, 69, 70, 71, 123, 131, 338, 347 Dojo 29, 30, 33, 38, 39, 70, 73, 125, 126, 173, 174, 175, 308, 324, 346
J
Java 29, 34, 35, 38, 40, 41, 54, 55, 56, 66, 69, 70, 71, 104, 105, 106, 108, 109, 110, 113, 173, 174, 175, 181, 203, 294, 324, 325, 347 JavaScript 26, 29, 30, 31, 38, 42, 104, 105, 106, 111, 112, 173, 174, 175, 346 JEE 34, 35, 36, 179, 347
350
Universidad de Oviedo E.U.I.T.I.O. Entorno Web 2.0 para el Diseo de Diagramas de Interconexin de Objetos
JSON 20, 26, 31, 32, 38, 162, 250, 266, 271, 311, 339 JSP 34, 35, 104, 105, 106, 111, 112, 178, 179, 203, 294 JUNG 41, 158, 159, 324, 347
Struts 23, 26, 34, 35, 36, 104, 105, 106, 113, 114, 132, 134, 143, 179, 180, 182, 183, 202, 324, 347
T
Tiles 35, 36, 143, 187, 192, 193, 194 Toolkit 29, 30, 33, 38, 70, 73, 125, 126, 173, 174, 175, 324, 346
M
Manual 323, 326, 347 Modelo 4, 35, 77, 78, 104, 105, 106, 108, 109, 110, 111, 114, 120, 123, 132, 144 Modelo de Requerimientos 77 MVC 4, 20, 34, 35, 49, 62, 78, 82, 108, 116, 131, 132, 133, 134, 142
U
Usuario 80, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 110, 113, 115, 117, 118, 119, 120, 124, 127, 201, 202, 326, 328
P
Paquete 136, 137, 138, 139, 140, 141, 148, 151, 155, 158, 162, 163, 166, 167, 171, 173, 204, 210, 215, 229, 247, 252, 261, 263, 273, 279 Patrn 132, 133 Plan de Aceptacin 121 Procesar 145 Prototipo 122, 124, 126, 127, 128
V
Validator 35, 36, 113, 143, 188, 189, 202 Viabilidad 50, 51, 68 Vista 4, 35, 78, 104, 105, 106, 111, 112, 113, 114, 123, 132, 143
R
Recurso 324 Relacin 22, 130, 146 Requerimiento 108, 109, 110, 111, 112, 113 Requerimientos no funcionales 81, 126, 127, 128
W
W3C 20, 25, 27, 33, 49, 62, 82, 347, 348 Web 4, 20, 21, 25, 29, 31, 32, 33, 34, 35, 38, 42, 44, 48, 49, 51, 54, 55, 56, 58, 62, 65, 66, 75, 78, 82, 116, 122, 132, 173, 180, 327, 339, 347, 348
S
SAX 40 Sistema 47, 48, 49, 60, 123, 128
X
XML 20, 25, 26, 27, 28, 31, 32, 33, 34, 35, 38, 40, 42, 48, 49, 56, 62, 69, 70, 71, 72, 73, 74, 75, 82, 104, 105, 106, 113, 145, 158, 159, 160, 181, 185, 187, 188, 194, 195, 201, 348 XML Schema 27, 28, 42, 348
351