pfc-prolog-cvs Mailing List for pfc-prolix (Page 4)
Status: Beta
Brought to you by:
ivanfrade
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(77) |
Jun
(37) |
Jul
(152) |
Aug
(180) |
Sep
(45) |
Oct
|
Nov
|
Dec
|
---|
From: <iva...@us...> - 2003-08-26 13:50:31
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/proceso In directory sc8-pr-cvs1:/tmp/cvs-serv21911/proceso Modified Files: proceso.tex Added Files: iteraciones.tex Log Message: Added iteration planning in doc --- NEW FILE: iteraciones.tex --- % % % Proceso de desarrollo :: iteraciones % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Desarrollo iterativo} En la elaboración del programa se ha optado por un proceso de desarrollo iterativo, influenciado por el <<proceso unificado>> descrito en \cite{uml-patrones} y la filosofia XP (eXtreme Programming) descrita en \cite{beck-XP}. De esta manera se optó por dividir el desarrollo en etapas/iteraciones, en cada una de las cuales se le añadia una funcionalidad al programa. El plan de iteraciones fue el siguiente: \begin{enumerate} \item \textbf{Iteración 0.} Configuración y preparación del entorno \item \textbf{Iteración 1.} Carga y consulta de programas en Prolog con resultados en modo texto. \item \textbf{Iteración 2.} Resolución gráfica. Modificar el resultado de la iteración 1 para obtener una representación gráfica del arbol. \item \textbf{Iteración 3.} Usuarios. Funcionalidad referida a usuarios y permisos en las operaciones a realizar. \item \textbf{Iteración 4.} Biblioteca. Desarrollo e integración de lo relacionado con la biblioteca y gestión de programas. \end{enumerate} A continuación explicamos los pasos más importantes en cada una de las iteraciones. \subsection{Iteración 0. Configuración y preparación del entorno} En este momento se tiene una idea aproximada de la arquitectura y las tecnologias que se van a emplear, despues de una fase de documentación, se instalan y configuran las herramientas, y se practican algunos de los ejemplos que las acompañan, a fin de conseguir un dominio elemental de tecnologias fundamentales como \texttt{Ant} o \texttt{CVS}. La instalación necesaria para comenzar el proyecto consiste en el \texttt{servidor de aplicaciones jBoss}, el \texttt{generador de código XDoclet}, la herramienta de compilación \texttt{Ant}, lo necesario para funcionar con el \texttt{CVS} y por supuesto el \texttt{entorno de desarrollo java}. Se preparan los interfaces de comunicación con el intérprete, y se establece una estructura básica del código fuente, a fin de reflejarla en el CVS. A fin de facilitar la comprensión del problema, se escribe en HTML plano un prototipo hueco, sin funcionalidad de las páginas del sistema y la navegación entre ellas. Se da también de alta el proyecto en Sourceforge\cite{sourcerforge-web}, y se crean los módulos en el CVS, las listas de correo, etc\dots. \subsection{Iteración 1. Carga y consulta en modo texto} El objetivo principal es obtener un programa funcional, sobre el que trabajar en las iteraciones posteriores. Las decisiones tomadas en este momento son muy importantes, pues sientan las bases para todo el desarrollo posterior, por lo que se presta mucha atención al diseño. Se toma el primer contacto <<práctico>> con los sessionEJB, HTML y XSLT, y su uso desde JSP. Ajustes fundamentales al XDoclet y las etiquetas a incluir en los ficheros de código. Elaboración del fichero \texttt{buildfile} básico para compilar y desplegar el proyecto. Uso del patrón visitor. Introducción de la tecnologia Struts. Se planea la iteración en los siguientes pasos: \begin{enumerate} \item Estructura fundamental para interactuar con el intérprete: gestión a traves de un EJB. \item Creación de cliente en modo texto para testear el resultado: primera utilización del EJB desde un cliente. \item Aplicación patron visitor para obtener un XML simple que represente las soluciones (SolutionXML) \item Creación y puesta en marcha de la página <<hola mundo>> en JSP. \item Conexión de la página en JSP del EJB: se muestran los resultados en SolutionXML. \item Desarrollo de la hoja de transformación XSLT, para transformar el SolutionXML en HTML. \item Utilización del XSLT desde la página JSP \item Reelaboración de las páginas en una estructura similar a la del prototipo \item Introducción de Struts. \item Añadir la funcionalidad <<Siguiente solución>> \end{enumerate} La introducción de Struts fue necesaria para controlar el proceso de navegación entre las páginas web, que ya en este momento se mostró complicado de manejar sin ensuciar el código de las páginas, especialmente debido al manejo de errores. La abundante documentación y la disponibilidad de ejemplos facilito una integración rápida de esta tecnologia en el proyecto. Durante la iteración, y ante la dificultad de conseguir el intérprete real adaptado a los interfaces definidos, se escribió un <<dummy-interpreter>>, una simulación que devolvia un arbol predefinido fuese cual fuese el programa o consulta cargado. Se fue mejorando según se necesitaban mas detalles para obtener una funcionalidad un poco mas realista. Posteriormente fue util para demostrar la facilidad de adaptación del sistema a intérpretes diferentes. Con todo esto, se consideró acabada la versión 0.1 del programa y se realizó un <<release>> en sourceforge. \subsection{Iteración 2. Representación gráfica del arbol de resolución} En esta iteración el esfuerzo en puntos <<generales>> de la aplicación se reduce considerablemente: la estructura del programa y su representación en el CVS estan hechas, el \texttt{buildfile} solo es necesario ampliarlo y los errores en la configuración de los programas estan solucionados. La principal tecnología introducida es el SVG, aunque se utiliza mas exhaustivamente el patrón visitor y el XML. \begin{enumerate} \item Definición del TreeXML, y escritura de su DTD, ampliando el anterior de SolutionXML. \item Definir visitors necesarios para obtener el XML del arbol que devuelve el intérprete. \item Actualización del cliente texto para comprobar los resultados. \item Toma de contacto con DOM para parsear el TreeXML. Pruebas por separado de transformación a SVG. \item Integración de SVG en el proyecto: servlets. \item Adaptación del cliente web. \end{enumerate} Debido a los problemas de soporte de los navegadores a SVG, la iteración finalizó sin mostrar el SVG, pero con un enlace que permitia descargarlo al ordenador cliente y observarlo desde otro programa. Se comenzaron a estudiar alternativas encontrando algunas soluciones interesantes como la biblioteca Batik, finalmente utilizada, y la etiqueta OBJECT para el HTML/JSP de la página. \subsection{Iteración 3. Sistema de usuarios} La principal dificultad radica en la aparición del primer entityBean, y su preparación para desarrollarlo con XDoclet. El arranque y configuración de MySQL y su conector en el jBoss, la instalación y utilización de phpMyAdmin, y la configuración del jBoss para la conexión a la base de datos. \begin{enumerate} \item Implementación y despliegue del Entity EJB. \item Gestión de login y logout en el Session EJB desarrollado. \item Adaptación del cliente consola para probar estas características \item Creación de las páginas web necesarias para el uso de este servicio: login, registro de usuario. \item Prueba del accceso por la web \item Creación de una página para el administrador donde gestionar usuarios. \end{enumerate} Finaliza la iteración con un sistema de usuarios sencillo, y un tanto esquemático, pero funcional y facilmente ampliable. \subsection{Iteración 4. Biblioteca} Se introduce un nuevo EntityBean, y en este caso la dificultad reside en establecer correctamente la relación <<uno-muchos>> con el Bean de usuario. Un usuario dispones de muchos programas, el programa pertenece a ún único usuario. XDoclet dispone de abundante y bien explicada documentación al respecto, pero la dificultad y tediosidad de las pruebas dificulta el desarrollo. \begin{enumerate} \item Creación del Entity EJB. \item Relación con el Entity EJB de usuario. \item Creación de métodos en el SessionBean para la utilización de las nuevas funcionalidades: introducir o eliminar programa,\dots \item Creación de las nuevas páginas requeridas en JSP. \end{enumerate} Y al final de esta iteración disponemos de un sistema completo con la funcionalidad deseada. \subsection{Aspectos generales a todas las iteraciónes} Es preciso señalar que la introducción de nuevas páginas JSP en la aplicación conllevaban el correspondiente desarrollo, implementación y configuración de clases en Struts para controlar la navegación. Asimismo, el intérprete original a utilizar con la aplicación no pudo estar listo a tiempo. El desarrollo se realizó utilizando la simulación implementada (<<prolix-dummy-interpreter>>, y en la última etapa se pudo utilizar un intérprete real, implementado por D. Berrueta, llamado LUpi. Los cambios a realizar en el código para cambiar el intérprete fueron, como era de esperar, mínimos, por lo que no se esperan grandes problemas para adaptar el intérprete definitivo. Algunas tareas no se incluyeron en la planificación inicial de las iteraciones, y su desarrollo se produjo <<bajo demanda>>, pues se consideraron detalles menores que no afectan a la funcionalidad o diseño de la aplicación, a pesar de facilitar su uso: \begin{itemize} \item Recordatorio de consultas: Se almacenan las últimas consultas escritas por el usuario para permitir su re-ejecución si así se desea. \item Mostrar usuario logeado: Se muestra en todas las páginas el usuario actualmente logeado junto al botón de logout. \item Desarrollo de un sistema para evitar el acceso del usuario sin login a páginas que lo requieren, o al usuario logeado a páginas a las que no tiene permiso: Implementación de una <<custom tag>> (etiqueta de JSP) propia que comprueba el nivel de permisos en cada página. \item Transformación de SVG en JPEG para visualizar resultados. Se añadio posteriormente, junto con la capacidad de responder dinámicamente con SVG o JPEG en función de la capacidad del navegador. \item Uso de hojas CSS para el diseño gráfico. \end{itemize} \subsection{Tareas realizadas una vez finalizado el desarrollo} Una vez considerada la aplicación como en una versión suficientemente estable y que cumple con los requisitos solicitados, se realiza en SourceForge el <<release>> de la versión 0.9. A fin de facilitar su instalación se añade una distribución en binarios, que con pequeñas mejoras constituyen la versión 0.91 Como ultimo paso, se requiere la ayuda de un diseñador gráfico para obtener un resultado visual más agradable, sobre este aspecto hablamos en las conclusiones más ampliamente. Index: proceso.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/proceso/proceso.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** proceso.tex 25 Aug 2003 20:56:02 -0000 1.2 --- proceso.tex 26 Aug 2003 13:50:17 -0000 1.3 *************** *** 4,7 **** %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! \input{proceso/herramientas.tex} ! \clearpage \ No newline at end of file --- 4,7 ---- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! %\input{proceso/herramientas.tex} ! \input{proceso/iteraciones.tex} \ No newline at end of file |
From: <iva...@us...> - 2003-08-26 13:50:31
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es In directory sc8-pr-cvs1:/tmp/cvs-serv21911 Modified Files: bibliografia.tex test.tex Log Message: Added iteration planning in doc Index: bibliografia.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/bibliografia.tex,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** bibliografia.tex 25 Aug 2003 20:56:02 -0000 1.2 --- bibliografia.tex 26 Aug 2003 13:50:17 -0000 1.3 *************** *** 34,36 **** --- 34,38 ---- \bibitem{mozilla-svg}Soporte SVG en mozilla: \url{http://www.mozilla.org/projects/svg/} \bibitem{sun-java-web}Sun - java: \url{http://java.sun.com} + \bibitem{uml-patrones}UML y patrones (2ª edición), Craig Larman, Prentice 2002 + \bibitem{beck-XP} eXtreme Programming explained, Kent Beck. \end{thebibliography} Index: test.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/test.tex,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** test.tex 25 Aug 2003 22:10:37 -0000 1.6 --- test.tex 26 Aug 2003 13:50:17 -0000 1.7 *************** *** 27,41 **** %\clearpage ! \chapter{Diseño} ! \input{diseno/diseno.tex} ! \clearpage ! %\chapter{Proceso de desarrollo} ! %\input{proceso/proceso.tex} %\clearpage ! \chapter{Manual de usuario} ! \input{manual/manual.tex} \clearpage \input{bibliografia.tex} --- 27,45 ---- %\clearpage ! %\chapter{Requisitos} ! %\input{requisitos/formales.tex} ! %\clearpage ! %\chapter{Diseño} ! %\input{diseno/diseno.tex} %\clearpage ! \chapter{Proceso de desarrollo} ! \input{proceso/proceso.tex} \clearpage + + %\chapter{Manual de usuario} + %\input{manual/manual.tex} + %\clearpage \input{bibliografia.tex} |
From: <iva...@us...> - 2003-08-25 22:02:17
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/img/dia In directory sc8-pr-cvs1:/tmp/cvs-serv11533/dia Log Message: Directory /cvsroot/pfc-prolog/prolix-doc/pfc-es/img/dia added to the repository |
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/img/dia In directory sc8-pr-cvs1:/tmp/cvs-serv12017 Added Files: arbol-2-soluciones.dia diagrama-aplicacion.dia diagrama-cliente-web.dia general-alto-nivel-tec.dia general-alto-nivel.dia general-capas.dia Log Message: Added dia diagrams --- NEW FILE: arbol-2-soluciones.dia --- <?xml version="1.0" encoding="UTF-8"?> <dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/"><dia:diagramdata><dia:attribute name="background"><dia:color val="#ffffff"/></dia:attribute><dia:attribute name="paper"><dia:composite type="paper"><dia:attribute name="name"><dia:string>#A4#</dia:string></dia:attribute><dia:attribute name="tmargin"><dia:real val="2.8222"/></dia:attribute><dia:attribute name="bmargin"><dia:real val="2.8222"/></dia:attribute><dia:attribute name="lmargin"><dia:real val="2.8222"/></dia:attribute><dia:attribute name="rmargin"><dia:real val="2.8222"/></dia:attribute><dia:attribute name="is_portrait"><dia:boolean val="true"/></dia:attribute><dia:attribute name="scaling"><dia:real val="1"/></dia:attribute><dia:attribute name="fitto"><dia:boolean val="false"/></dia:attribute></dia:composite></dia:attribute><dia:attribute name="grid"><dia:composite type="grid"><dia:attribute name="width_x"><dia:real val="1"/></dia:attribute><dia:attribute name="width_y"><dia:real val="1"/></dia:attribute><dia:attribute name="visible_x"><dia:int val="1"/></dia:attribute><dia:attribute name="visible_y"><dia:int val="1"/></dia:attribute></dia:composite></dia:attribute><dia:attribute name="guides"><dia:composite type="guides"><dia:attribute name="hguides"/><dia:attribute name="vguides"/></dia:composite></dia:attribute></dia:diagramdata><dia:layer name="Fondo" visible="true"><dia:object type="Standard - Box" version="0" id="O0"><dia:attribute name="obj_pos"><dia:point val="9.05,1"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="9,0.95;15.05,3.35001"/></dia:attribute><dia:attribute name="elem_corner"><dia:point val="9.05,1"/></dia:attribute><dia:attribute name="elem_width"><dia:real val="5.95"/></dia:attribute><dia:attribute name="elem_height"><dia:real val="2.30001"/></dia:attribute><dia:attribute name="show_background"><dia:boolean val="true"/></dia:attribute></dia:object><dia:object type="Standard - Text" version="0" id="O1"><dia:attribute name="obj_pos"><dia:point val="10,2.3"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="10,1.65;14.3,2.65"/></dia:attribute><dia:attribute name="text"><dia:composite type="text"><dia:attribute name="string"><dia:string>#hermano(A,B)#</dia:string></dia:attribute><dia:attribute name="font"><dia:font family="sans" style="0" name="Courier"/></dia:attribute><dia:attribute name="height"><dia:real val="0.8"/></dia:attribute><dia:attribute name="pos"><dia:point val="10,2.3"/></dia:attribute><dia:attribute name="color"><dia:color val="#000000"/></dia:attribute><dia:attribute name="alignment"><dia:enum val="0"/></dia:attribute></dia:composite></dia:attribute></dia:object><dia:object type="Standard - Box" version="0" id="O2"><dia:attribute name="obj_pos"><dia:point val="7.9,4.80001"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="7.85,4.75001;16.25,7.00001"/></dia:attribute><dia:attribute name="elem_corner"><dia:point val="7.9,4.80001"/></dia:attribute><dia:attribute name="elem_width"><dia:real val="8.3"/></dia:attribute><dia:attribute name="elem_height"><dia:real val="2.15"/></dia:attribute><dia:attribute name="show_background"><dia:boolean val="true"/></dia:attribute></dia:object><dia:object type="Standard - Text" version="0" id="O3"><dia:attribute name="obj_pos"><dia:point val="8.55,6.1"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="8.55,5.45;15.55,6.45"/></dia:attribute><dia:attribute name="text"><dia:composite type="text"><dia:attribute name="string"><dia:string>#padre(Z,A),padre(Z,B)#</dia:string></dia:attribute><dia:attribute name="font"><dia:font family="sans" style="0" name="Courier"/></dia:attribute><dia:attribute name="height"><dia:real val="0.8"/></dia:attribute><dia:attribute name="pos"><dia:point val="8.55,6.1"/></dia:attribute><dia:attribute name="color"><dia:color val="#000000"/></dia:attribute><dia:attribute name="alignment"><dia:enum val="0"/></dia:attribute></dia:composite></dia:attribute></dia:object><dia:object type="Standard - Box" version="0" id="O4"><dia:attribute name="obj_pos"><dia:point val="9.2,9"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="9.15,8.95;14.9,11.2"/></dia:attribute><dia:attribute name="elem_corner"><dia:point val="9.2,9"/></dia:attribute><dia:attribute name="elem_width"><dia:real val="5.65"/></dia:attribute><dia:attribute name="elem_height"><dia:real val="2.15001"/></dia:attribute><dia:attribute name="show_background"><dia:boolean val="true"/></dia:attribute></dia:object><dia:object type="Standard - Text" version="0" id="O5"><dia:attribute name="obj_pos"><dia:point val="10.35,10.3"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="10.35,9.65;13.85,10.65"/></dia:attribute><dia:attribute name="text"><dia:composite type="text"><dia:attribute name="string"><dia:string>#padre(JC,B)#</dia:string></dia:attribute><dia:attribute name="font"><dia:font family="sans" style="0" name="Courier"/></dia:attribute><dia:attribute name="height"><dia:real val="0.8"/></dia:attribute><dia:attribute name="pos"><dia:point val="10.35,10.3"/></dia:attribute><dia:attribute name="color"><dia:color val="#000000"/></dia:attribute><dia:attribute name="alignment"><dia:enum val="0"/></dia:attribute></dia:composite></dia:attribute></dia:object><dia:object type="Standard - Box" version="0" id="O6"><dia:attribute name="obj_pos"><dia:point val="5.5,13.6"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="5.45,13.55;10.5,16.3"/></dia:attribute><dia:attribute name="elem_corner"><dia:point val="5.5,13.6"/></dia:attribute><dia:attribute name="elem_width"><dia:real val="4.95"/></dia:attribute><dia:attribute name="elem_height"><dia:real val="2.65"/></dia:attribute><dia:attribute name="show_background"><dia:boolean val="true"/></dia:attribute></dia:object><dia:object type="Standard - Text" version="0" id="O7"><dia:attribute name="obj_pos"><dia:point val="6.35,14.7"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="6.35,14.05;9.55,15.85"/></dia:attribute><dia:attribute name="text"><dia:composite type="text"><dia:attribute name="string"><dia:string>#A : Helena B : Felipe#</dia:string></dia:attribute><dia:attribute name="font"><dia:font family="sans" style="0" name="Courier"/></dia:attribute><dia:attribute name="height"><dia:real val="0.8"/></dia:attribute><dia:attribute name="pos"><dia:point val="6.35,14.7"/></dia:attribute><dia:attribute name="color"><dia:color val="#000000"/></dia:attribute><dia:attribute name="alignment"><dia:enum val="0"/></dia:attribute></dia:composite></dia:attribute></dia:object><dia:object type="Standard - Box" version="0" id="O8"><dia:attribute name="obj_pos"><dia:point val="13.225,13.575"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="13.175,13.525;18.225,16.275"/></dia:attribute><dia:attribute name="elem_corner"><dia:point val="13.225,13.575"/></dia:attribute><dia:attribute name="elem_width"><dia:real val="4.95"/></dia:attribute><dia:attribute name="elem_height"><dia:real val="2.65"/></dia:attribute><dia:attribute name="show_background"><dia:boolean val="true"/></dia:attribute></dia:object><dia:object type="Standard - Text" version="0" id="O9"><dia:attribute name="obj_pos"><dia:point val="14.075,14.675"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="14.075,14.025;16.875,15.825"/></dia:attribute><dia:attribute name="text"><dia:composite type="text"><dia:attribute name="string"><dia:string>#A : Felipe B : Felipe#</dia:string></dia:attribute><dia:attribute name="font"><dia:font family="sans" style="0" name="Courier"/></dia:attribute><dia:attribute name="height"><dia:real val="0.8"/></dia:attribute><dia:attribute name="pos"><dia:point val="14.075,14.675"/></dia:attribute><dia:attribute name="color"><dia:color val="#000000"/></dia:attribute><dia:attribute name="alignment"><dia:enum val="0"/></dia:attribute></dia:composite></dia:attribute></dia:object><dia:object type="Standard - Line" version="0" id="O10"><dia:attribute name="obj_pos"><dia:point val="12.025,3.30001"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="11.9742,3.24918;12.1008,4.85084"/></dia:attribute><dia:attribute name="conn_endpoints"><dia:point val="12.025,3.30001"/><dia:point val="12.05,4.80001"/></dia:attribute><dia:attribute name="numcp"><dia:int val="1"/></dia:attribute><dia:connections><dia:connection handle="0" to="O0" connection="6"/><dia:connection handle="1" to="O2" connection="1"/></dia:connections></dia:object><dia:object type="Standard - Line" version="0" id="O11"><dia:attribute name="obj_pos"><dia:point val="12.05,6.95001"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="11.9744,6.8994;12.1006,9.05061"/></dia:attribute><dia:attribute name="conn_endpoints"><dia:point val="12.05,6.95001"/><dia:point val="12.025,9"/></dia:attribute><dia:attribute name="numcp"><dia:int val="1"/></dia:attribute><dia:connections><dia:connection handle="0" to="O2" connection="6"/><dia:connection handle="1" to="O4" connection="1"/></dia:connections></dia:object><dia:object type="Standard - Line" version="0" id="O12"><dia:attribute name="obj_pos"><dia:point val="12.025,11.15"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="11.9557,11.0807;15.7693,13.6443"/></dia:attribute><dia:attribute name="conn_endpoints"><dia:point val="12.025,11.15"/><dia:point val="15.7,13.575"/></dia:attribute><dia:attribute name="numcp"><dia:int val="1"/></dia:attribute><dia:connections><dia:connection handle="0" to="O4" connection="6"/><dia:connection handle="1" to="O8" connection="1"/></dia:connections></dia:object><dia:object type="Standard - Line" version="0" id="O13"><dia:attribute name="obj_pos"><dia:point val="12.025,11.15"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="7.90634,11.0813;12.0937,13.6687"/></dia:attribute><dia:attribute name="conn_endpoints"><dia:point val="12.025,11.15"/><dia:point val="7.975,13.6"/></dia:attribute><dia:attribute name="numcp"><dia:int val="1"/></dia:attribute><dia:connections><dia:connection handle="0" to="O4" connection="6"/><dia:connection handle="1" to="O6" connection="1"/></dia:connections></dia:object></dia:layer></dia:diagram> --- NEW FILE: diagrama-aplicacion.dia --- (This appears to be a binary file; contents omitted.) --- NEW FILE: diagrama-cliente-web.dia --- <?xml version="1.0" encoding="UTF-8"?> <dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/"><dia:diagramdata><dia:attribute name="background"><dia:color val="#ffffff"/></dia:attribute><dia:attribute name="paper"><dia:composite type="paper"><dia:attribute name="name"><dia:string>#A4#</dia:string></dia:attribute><dia:attribute name="tmargin"><dia:real val="2.8222"/></dia:attribute><dia:attribute name="bmargin"><dia:real val="2.8222"/></dia:attribute><dia:attribute name="lmargin"><dia:real val="2.8222"/></dia:attribute><dia:attribute name="rmargin"><dia:real val="2.8222"/></dia:attribute><dia:attribute name="is_portrait"><dia:boolean val="true"/></dia:attribute><dia:attribute name="scaling"><dia:real val="1"/></dia:attribute><dia:attribute name="fitto"><dia:boolean val="false"/></dia:attribute></dia:composite></dia:attribute><dia:attribute name="grid"><dia:composite type="grid"><dia:attribute name="width_x"><dia:real val="1"/></dia:attribute><dia:attribute name="width_y"><dia:real val="1"/></dia:attribute><dia:attribute name="visible_x"><dia:int val="1"/></dia:attribute><dia:attribute name="visible_y"><dia:int val="1"/></dia:attribute></dia:composite></dia:attribute><dia:attribute name="guides"><dia:composite type="guides"><dia:attribute name="hguides"/><dia:attribute name="vguides"/></dia:composite></dia:attribute></dia:diagramdata><dia:layer name="Fondo" visible="true"><dia:object type="Standard - Box" version="0" id="O0"><dia:attribute name="obj_pos"><dia:point val="4.8,0.95"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="4.75,0.9;27.25,22.05"/></dia:attribute><dia:attribute name="elem_corner"><dia:point val="4.8,0.95"/></dia:attribute><dia:attribute name="elem_width"><dia:real val="22.4"/></dia:attribute><dia:attribute name="elem_height"><dia:real val="21.05"/></dia:attribute><dia:attribute name="inner_color"><dia:color val="#e5e5e5"/></dia:attribute><dia:attribute name="show_background"><dia:boolean val="true"/></dia:attribute><dia:attribute name="line_style"><dia:enum val="1"/></dia:attribute></dia:object><dia:object type="Standard - Text" version="0" id="O1"><dia:attribute name="obj_pos"><dia:point val="6.45,20.85"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="6.45,20.2;11.2,21.2"/></dia:attribute><dia:attribute name="text"><dia:composite type="text"><dia:attribute name="string"><dia:string>#Servidor Web#</dia:string></dia:attribute><dia:attribute name="font"><dia:font family="sans" style="80" name="Courier"/></dia:attribute><dia:attribute name="height"><dia:real val="0.8"/></dia:attribute><dia:attribute name="pos"><dia:point val="6.45,20.85"/></dia:attribute><dia:attribute name="color"><dia:color val="#000000"/></dia:attribute><dia:attribute name="alignment"><dia:enum val="0"/></dia:attribute></dia:composite></dia:attribute></dia:object><dia:object type="Standard - Box" version="0" id="O2"><dia:attribute name="obj_pos"><dia:point val="6.35,2.65"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="6.3,2.6;25.35,19.05"/></dia:attribute><dia:attribute name="elem_corner"><dia:point val="6.35,2.65"/></dia:attribute><dia:attribute name="elem_width"><dia:real val="18.95"/></dia:attribute><dia:attribute name="elem_height"><dia:real val="16.35"/></dia:attribute><dia:attribute name="show_background"><dia:boolean val="true"/></dia:attribute></dia:object><dia:object type="Standard - Text" version="0" id="O3"><dia:attribute name="obj_pos"><dia:point val="7.25,3.85"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="7.25,3.2;11.55,4.2"/></dia:attribute><dia:attribute name="text"><dia:composite type="text"><dia:attribute name="string"><dia:string>#Cliente Web#</dia:string></dia:attribute><dia:attribute name="font"><dia:font family="sans" style="80" name="Courier"/></dia:attribute><dia:attribute name="height"><dia:real val="0.8"/></dia:attribute><dia:attribute name="pos"><dia:point val="7.25,3.85"/></dia:attribute><dia:attribute name="color"><dia:color val="#000000"/></dia:attribute><dia:attribute name="alignment"><dia:enum val="0"/></dia:attribute></dia:composite></dia:attribute></dia:object><dia:object type="Standard - Ellipse" version="0" id="O4"><dia:attribute name="obj_pos"><dia:point val="9.9,13.05"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="9.85,13;13.95,15.9"/></dia:attribute><dia:attribute name="elem_corner"><dia:point val="9.9,13.05"/></dia:attribute><dia:attribute name="elem_width"><dia:real val="4"/></dia:attribute><dia:attribute name="elem_height"><dia:real val="2.8"/></dia:attribute></dia:object><dia:object type="Standard - Text" version="0" id="O5"><dia:attribute name="obj_pos"><dia:point val="11.2,14.25"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="11.2,13.6;12.75,15.4"/></dia:attribute><dia:attribute name="text"><dia:composite type="text"><dia:attribute name="string"><dia:string>#Vista (JSP)#</dia:string></dia:attribute><dia:attribute name="font"><dia:font family="sans" style="0" name="Courier"/></dia:attribute><dia:attribute name="height"><dia:real val="0.8"/></dia:attribute><dia:attribute name="pos"><dia:point val="11.2,14.25"/></dia:attribute><dia:attribute name="color"><dia:color val="#000000"/></dia:attribute><dia:attribute name="alignment"><dia:enum val="0"/></dia:attribute></dia:composite></dia:attribute></dia:object><dia:object type="Standard - Ellipse" version="0" id="O6"><dia:attribute name="obj_pos"><dia:point val="18.55,12.95"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="18.5,12.9;23.5,15.85"/></dia:attribute><dia:attribute name="elem_corner"><dia:point val="18.55,12.95"/></dia:attribute><dia:attribute name="elem_width"><dia:real val="4.9"/></dia:attribute><dia:attribute name="elem_height"><dia:real val="2.85"/></dia:attribute></dia:object><dia:object type="Standard - Text" version="0" id="O7"><dia:attribute name="obj_pos"><dia:point val="21.05,14.2"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="19.2,13.55;22.9,15.35"/></dia:attribute><dia:attribute name="text"><dia:composite type="text"><dia:attribute name="string"><dia:string>#Controlador (Actions)#</dia:string></dia:attribute><dia:attribute name="font"><dia:font family="sans" style="0" name="Courier"/></dia:attribute><dia:attribute name="height"><dia:real val="0.8"/></dia:attribute><dia:attribute name="pos"><dia:point val="21.05,14.2"/></dia:attribute><dia:attribute name="color"><dia:color val="#000000"/></dia:attribute><dia:attribute name="alignment"><dia:enum val="1"/></dia:attribute></dia:composite></dia:attribute></dia:object><dia:object type="Standard - Ellipse" version="0" id="O8"><dia:attribute name="obj_pos"><dia:point val="14.45,6"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="14.4,5.95;19.45,9.2"/></dia:attribute><dia:attribute name="elem_corner"><dia:point val="14.45,6"/></dia:attribute><dia:attribute name="elem_width"><dia:real val="4.95"/></dia:attribute><dia:attribute name="elem_height"><dia:real val="3.15"/></dia:attribute></dia:object><dia:object type="Standard - Text" version="0" id="O9"><dia:attribute name="obj_pos"><dia:point val="17.05,7.35"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="15.2,6.7;18.9,8.5"/></dia:attribute><dia:attribute name="text"><dia:composite type="text"><dia:attribute name="string"><dia:string>#Modelo (JavaBeans)#</dia:string></dia:attribute><dia:attribute name="font"><dia:font family="sans" style="0" name="Courier"/></dia:attribute><dia:attribute name="height"><dia:real val="0.8"/></dia:attribute><dia:attribute name="pos"><dia:point val="17.05,7.35"/></dia:attribute><dia:attribute name="color"><dia:color val="#000000"/></dia:attribute><dia:attribute name="alignment"><dia:enum val="1"/></dia:attribute></dia:composite></dia:attribute></dia:object><dia:object type="Standard - Line" version="0" id="O10"><dia:attribute name="obj_pos"><dia:point val="15.1749,8.68869"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="11.4022,8.30442;15.6727,13.4343"/></dia:attribute><dia:attribute name="conn_endpoints"><dia:point val="15.1749,8.68869"/><dia:point val="11.9,13.05"/></dia:attribute><dia:attribute name="numcp"><dia:int val="1"/></dia:attribute><dia:attribute name="line_width"><dia:real val="0.06"/></dia:attribute><dia:attribute name="start_arrow"><dia:enum val="3"/></dia:attribute><dia:attribute name="start_arrow_length"><dia:real val="0.6"/></dia:attribute><dia:attribute name="start_arrow_width"><dia:real val="0.6"/></dia:attribute><dia:attribute name="end_arrow"><dia:enum val="3"/></dia:attribute><dia:attribute name="end_arrow_length"><dia:real val="0.6"/></dia:attribute><dia:attribute name="end_arrow_width"><dia:real val="0.6"/></dia:attribute><dia:connections><dia:connection handle="0" to="O8" connection="5"/><dia:connection handle="1" to="O4" connection="1"/></dia:connections></dia:object><dia:object type="Standard - Line" version="0" id="O11"><dia:attribute name="obj_pos"><dia:point val="13.9,14.45"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="13.8603,13.7746;18.5897,15.0504"/></dia:attribute><dia:attribute name="conn_endpoints"><dia:point val="13.9,14.45"/><dia:point val="18.55,14.375"/></dia:attribute><dia:attribute name="numcp"><dia:int val="1"/></dia:attribute><dia:attribute name="line_width"><dia:real val="0.06"/></dia:attribute><dia:attribute name="start_arrow"><dia:enum val="3"/></dia:attribute><dia:attribute name="start_arrow_length"><dia:real val="0.6"/></dia:attribute><dia:attribute name="start_arrow_width"><dia:real val="0.6"/></dia:attribute><dia:attribute name="end_arrow"><dia:enum val="3"/></dia:attribute><dia:attribute name="end_arrow_length"><dia:real val="0.6"/></dia:attribute><dia:attribute name="end_arrow_width"><dia:real val="0.6"/></dia:attribute><dia:connections><dia:connection handle="0" to="O4" connection="4"/><dia:connection handle="1" to="O6" connection="3"/></dia:connections></dia:object><dia:object type="Standard - Line" version="0" id="O12"><dia:attribute name="obj_pos"><dia:point val="18.6751,8.68869"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="18.134,8.37499;21.5411,13.2637"/></dia:attribute><dia:attribute name="conn_endpoints"><dia:point val="18.6751,8.68869"/><dia:point val="21,12.95"/></dia:attribute><dia:attribute name="numcp"><dia:int val="1"/></dia:attribute><dia:attribute name="line_width"><dia:real val="0.06"/></dia:attribute><dia:attribute name="start_arrow"><dia:enum val="3"/></dia:attribute><dia:attribute name="start_arrow_length"><dia:real val="0.6"/></dia:attribute><dia:attribute name="start_arrow_width"><dia:real val="0.6"/></dia:attribute><dia:attribute name="end_arrow"><dia:enum val="3"/></dia:attribute><dia:attribute name="end_arrow_length"><dia:real val="0.6"/></dia:attribute><dia:attribute name="end_arrow_width"><dia:real val="0.6"/></dia:attribute><dia:connections><dia:connection handle="0" to="O8" connection="7"/><dia:connection handle="1" to="O6" connection="1"/></dia:connections></dia:object><dia:object type="Standard - Line" version="0" id="O13"><dia:attribute name="obj_pos"><dia:point val="0.95,11.45"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="0.849353,10.2744;4.90779,12.6756"/></dia:attribute><dia:attribute name="conn_endpoints"><dia:point val="0.95,11.45"/><dia:point val="4.8,11.475"/></dia:attribute><dia:attribute name="numcp"><dia:int val="1"/></dia:attribute><dia:attribute name="line_width"><dia:real val="0.2"/></dia:attribute><dia:attribute name="end_arrow"><dia:enum val="3"/></dia:attribute><dia:attribute name="end_arrow_length"><dia:real val="1.2"/></dia:attribute><dia:attribute name="end_arrow_width"><dia:real val="1.2"/></dia:attribute><dia:connections><dia:connection handle="1" to="O0" connection="3"/></dia:connections></dia:object><dia:object type="Standard - Line" version="0" id="O14"><dia:attribute name="obj_pos"><dia:point val="31.75,11.4"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="27.0802,10.2735;31.8516,12.6765"/></dia:attribute><dia:attribute name="conn_endpoints"><dia:point val="31.75,11.4"/><dia:point val="27.2,11.475"/></dia:attribute><dia:attribute name="numcp"><dia:int val="1"/></dia:attribute><dia:attribute name="line_width"><dia:real val="0.2"/></dia:attribute><dia:attribute name="end_arrow"><dia:enum val="3"/></dia:attribute><dia:attribute name="end_arrow_length"><dia:real val="1.2"/></dia:attribute><dia:attribute name="end_arrow_width"><dia:real val="1.2"/></dia:attribute><dia:connections><dia:connection handle="1" to="O0" connection="4"/></dia:connections></dia:object><dia:object type="Standard - Text" version="0" id="O15"><dia:attribute name="obj_pos"><dia:point val="2.7,12.95"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="1.075,12.3;4.325,14.1"/></dia:attribute><dia:attribute name="text"><dia:composite type="text"><dia:attribute name="string"><dia:string>#Peticiones HTTP#</dia:string></dia:attribute><dia:attribute name="font"><dia:font family="sans" style="0" name="Courier"/></dia:attribute><dia:attribute name="height"><dia:real val="0.8"/></dia:attribute><dia:attribute name="pos"><dia:point val="2.7,12.95"/></dia:attribute><dia:attribute name="color"><dia:color val="#000000"/></dia:attribute><dia:attribute name="alignment"><dia:enum val="1"/></dia:attribute></dia:composite></dia:attribute></dia:object><dia:object type="Standard - Text" version="0" id="O16"><dia:attribute name="obj_pos"><dia:point val="29.6,12.85"/></dia:attribute><dia:attribute name="obj_bb"><dia:rectangle val="28.025,12.2;31.175,13.2"/></dia:attribute><dia:attribute name="text"><dia:composite type="text"><dia:attribute name="string"><dia:string>#Aplicación#</dia:string></dia:attribute><dia:attribute name="font"><dia:font family="sans" style="0" name="Courier"/></dia:attribute><dia:attribute name="height"><dia:real val="0.8"/></dia:attribute><dia:attribute name="pos"><dia:point val="29.6,12.85"/></dia:attribute><dia:attribute name="color"><dia:color val="#000000"/></dia:attribute><dia:attribute name="alignment"><dia:enum val="1"/></dia:attribute></dia:composite></dia:attribute></dia:object></dia:layer></dia:diagram> --- NEW FILE: general-alto-nivel-tec.dia --- (This appears to be a binary file; contents omitted.) --- NEW FILE: general-alto-nivel.dia --- (This appears to be a binary file; contents omitted.) --- NEW FILE: general-capas.dia --- (This appears to be a binary file; contents omitted.) |
From: <iva...@us...> - 2003-08-25 20:56:07
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno In directory sc8-pr-cvs1:/tmp/cvs-serv2016/diseno Added Files: diseno.tex j2ee-uml.tex representacion.tex Log Message: General update of doc. Added diseno --- NEW FILE: diseno.tex --- (This appears to be a binary file; contents omitted.) --- NEW FILE: j2ee-uml.tex --- (This appears to be a binary file; contents omitted.) --- NEW FILE: representacion.tex --- (This appears to be a binary file; contents omitted.) |
From: <iva...@us...> - 2003-08-25 20:56:06
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/proceso In directory sc8-pr-cvs1:/tmp/cvs-serv2016/proceso Modified Files: proceso.tex Added Files: herramientas.tex Log Message: General update of doc. Added diseno --- NEW FILE: herramientas.tex --- % % % Introduccion::herramientas % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Herramientas} \subsection{Herramientas software} Para el desarrollo de este proyecto se han utilizado durante todo el proceso herramientas licenciadas como software libre: \begin{itemize} \item Sistema Operativo Debian GNU/Linux (<<woody>> y <<sid>>) \item Entorno de desarrollo Java Blackdown 1.4 \item Editor XEmacs con JDE. \item Herramienta de compilación Ant \item Generador de código XDoclet 1.2b3 \item Implementación de la plataforma J2EE jBoss \item Servidor de Base de Datos mySQL \item Gestión de la base de datos phpMyAdmin % \item Herramientas de depuración como jndi.browser \item Entorno de desarrollo de aplicaciones web Struts \item Sistema de control de versiones CVS (proporcionado por sourceforge.net) \item Sistema de control de bugs (proporcionado por sourceforge.net) \item Sistema de composición de textos \LaTeX % XSLT % SVG % Batik \end{itemize} \subsubsection {Sistema Operativo Debian GNU/Linux} El proyecto comenzó a desarrollarse en la versión <<woody>> de Debian GNU/Linux\cite{debian-web}, hasta este momento la versión estable, pero muchas de las herramientas utilizadas no estaban <<empaquetadas>> (precompiladas) para este sistema. El problema no es solo tener que buscar, bajar, y compilar los programas, sino la molestia de mantener al día las versiones. La actualización a <<sid>> corrigió este problema. Más software, más moderno y actualizado mucho mas a menudo esta a disposición del usuario con esta distribución, al coste de ser considerada <<inestable>>. Es interesante mencionar que durante el desarrollo del proyecto esta presunta <<inestabilidad>> brilló por su ausencia. \subsubsection {Entorno de desarrollo Java Blackdown 1.4} El proyecto Blackdown\cite{blackdown-web} se encarga de portar a Linux el JDK Java de Sun. Empezó siendo el unico entorno disponible en linux, pero hoy en dia hay disponible incluso el famoso JBuilder. %FIXME poner mas \subsubsection {Editor XEmacs con JDE} El editor GNU Emacs es uno de los emblemas del software libre. Se trata de un editor de texto escrito en Lisp, desarrollado originalmente por Richard Stallman (uno de los padres del software libre y de la Free Software Foundation\cite{gnu-fsf}). Debido a diferencias entre los desarrolladores, se produjo una división del proyecto, diferenciandose así la versión GNU Emacs\cite{gnu-emacs-web} de XEmacs\cite{xemacs-web}. Es esta última la utilizada para el desarrollo de \texttt{Prolix} Como editor de texto simple incluye combinaciones de teclas para todos los eventos habituales (ir al principio, final del fichero, o linea o parrafo, borrar una linea, insertar una linea en blanco, avanzar o retroceder u palabra o linea,\dots), pero también dispone de decenas de opciones, algunas muy utiles y otras mas bien curiosas. En el aspecto util de editor, permite comparar ficheros, aplicar parches, y reconoce numerosos formatos a los que puede colorear la sintaxis (Tex, java, c, c++, haskell, \dots). En el aspecto mas lúdico-curioso, dispone de agenda, lector de correo, lector de news, juegos como el buscaminas o el tetris, \dots !incluso de un psicoanalista!. JDE\cite{jdee-web} (Java Development Environment) es un paquete de extras para XEmacs (y GNU Emacs) que integra el editor con el JDK de java. El resultado es el de un Entorno de Desarrollo Integrado (IDE) en nuestro editor habitual. Con unos pequeños retoques a la configuración, podemos compilar nuestro proyecto con una combinación de teclas (\textsf{Ctrl + (c v b)}), obteniendo los errores en una de las ventanas del XEmacs, en la que, seleccionando el error nos lleva a la linea de codigo que causa el problema. Otra de las utilidades, es la de automatizar los imports en java. Cuando se utiliza una clase, basta con ponerse encima del nombre de esa clase, usar la combinación \textsf{ctrl + (c v z)} y ya coloca la linea con el import correspondiente en el lugar apropiado del fichero (la clase debe estar accesible en el CLASSPATH). Y una característica especialmente util, es la de autocompletar nombres de funciones, de nuevo con otra combinación de teclas (\textsf{ctrl + (c v) .}). Estan son las características mas usadas para el desarrollo del proyecto, pero hay muchas más que es posible utilizar como la <<speedbar>> para navegar por el código, o los asistentes para generar código (get-set de atributos, o el esqueleto de una clase). Con un cierto aprendizaje es posible añadir mas plantillas para automatizar ciertas tareas, como incluir la licencia GPL\cite{licencia-gpl} en cada fichero de código fuente. \subsubsection{Herramienta de compilación Ant} A los programadores habituados a C o C++, o usuarios de software libre que hayan compilado algun programa, les sonará la herramienta \texttt{make}. Esta herramienta procesa un fichero con las instrucciones necesarias para compilar el programa, instalarlo, y otras operaciones habituales, facilitando el proceso de compilacion (no es necesario escribir a mano un comando de compilación muy engorroso o activa todo lo necesario para no recompilar ficheros que no han cambiado\dots). Ant\cite{ant-web} cumple la misma función que \texttt{make} pero desarrollado en java y orientado a proyectos en este lenguaje. \texttt{make} resulta muy dependiente de la plataforma, pues al fin y al cabo se parece mucho a un archivo de comandos para ejecutar por el shell del sistema operativo, y la sintaxis de sus ficheros además de complicada es muy quisquillosa con espaciados, lineas en blanco\dots Ant es multiplataforma, y utiliza un fichero XML con todas las ventajas de este en cuanto a facilidad de manejo y comprensión. El fichero XML utilizado por Ant se conoce como \texttt{buildfile} (al igual que en \texttt{make} se habla de \texttt{makefile}) y por defecto se utiliza el \texttt{build.xml} que debe estar en la raiz del proyecto. En él se definen objetivos (targets), que pueden depender de otros objetivos (el objetivo-desplegar-aplicación depende del objetivo-compilar) e incluyen tareas a ejecutar. Ant tiene definidas casi todas las tareas habituales de un proyecto: compilar, establecer los <<paths>> con las librerias, generar la JavaDoc, construir ficheros .jar o .war, copiar, mover o borrar ficheros, etc\dots Pero además se pueden añadir tareas a medida implementando algunos interfaces en Java. Por ejemplo no incluye tarea para compilar documentos en \LaTeX como esta documentación y fue necesario utilizar una tarea externa. A continuación incluimos un fragmento del \texttt{build.xml} con el que se compila esta documentación, donde se declaran 4 tareas, se observan las dependencias entre si (atributo \texttt{depends} del \texttt{target}), y como usamos la clase de java que implementa una tarea con \texttt{taskdef} (el fichero compilado de la clase \textsf{LaTeX.class} esta en el directorio \textsf{build} del proyecto). \begin{verbatim} <target name="prepare"> <tstamp /> <mkdir dir="build" /> </target> <target name="build" depends="prepare" > <javac srcdir="src" destdir="build"/> </target> <target name="declare" depends="build"> <taskdef name="latex" classname="LaTeX" classpath="build"/> </target> <target name="main" depends="declare"> <latex latexfile="${latexfile}.tex" verbose="false" pdf="${pdf}"/> </target> \end{verbatim} \subsubsection{Generador de código XDoclet} En el desarrollo de aplicaciones J2EE es necesario escribir varios ficheros por cada clase <<util>> que desarrollamos (codigo de negocio, interfaz local, interfaz remoto, objeto Value, \dots), que deben ser coherentes entre si, y con muchas dependencias sencillas pero propensas a error (definir un atributo, escribir sus métodos get y set, con el nombre del atributo pero la primera letra en mayúscula, los constructores con las iniciales ejb, \dots). En realidad se trata de normas facilmente automatizables, y esa es la función de XDoclet\cite{xdoclet-web}: escribiendo un único fichero con la información necesaria, él genera todas las clases auxiliares. Esto supone 2 ventajas principalmente: se elimina el factor error humano en la escritura de código repetido, y el desarrollador puede centrarse en escribir una única clase con el código util. Y el resultado de estas 2 es que los cambios en la clase util se propagan a todos los ficheros generados: si se cambia el nombre de un método podemos estar seguros de que se cambia en todos los lugares donde aparece y en todos los descriptores de despliegue y ficheros auxiliares utilizados en la aplicación. XDoclet obtiene la información necesaria del mismo código de la clase, y luego puede darsele información adicional en etiquetas, especificando qué necesitamos que genere y algunos datos que no puede deducir. Esta desarrollado como tareas para Ant. En \texttt{Prolix} se utilizan 2: EJBDoclet para generar el código relacionado con EJB's (Enterprise Java Beans) y WEBDoclet, para generar los ficheros de despliege de la aplicación web en el contenedor de trabajo, que para \texttt{Prolix} fue jBoss). Ejemplo de etiquetas incluidas al principio del fichero java de un EntityBean: Solo con la primera el XDoclet sabria generar la información para el contenedor. Con la \texttt{@ejb.value-object} definimos objetos Value, y con la \texttt{@ejb.finder} metodos que nos permiten obtener todos los EntityBean que cumplen unas determinadas condiciones. \begin{verbatim} /* * @ejb.bean name="Program" * type="CMP" * local-jndi-name="org/asturlinux/frade/prolix/ejb/entityjb/ProgramLocal" * view-type="local" * * @ejb.value-object name="Program" * match="*" * * @ejb.value-object name="ProgramShort" * match="short" * ... * * @ejb.finder signature="java.util.ProgramLocal findByPK(java.lang.String p)" * unchecked="true" * query="SELECT OBJECT(p) FROM Program p WHERE p.title = ?1" * */ \end{verbatim} Ejemplo de las etiquetas añadidas para que el Entity tengo un atributo \texttt{title}, definir su tipo SQL y JDBC, que sea accesible desde el exterior (metodo de interfaz), y que sea la clave principal para estos EntityBeans. \begin{verbatim} public abstract class ProgramBean implements EntityBean { ... /** * @ejb.pk-field * @ejb.persistent-field * @ejb.interface-method * * @jboss.jdbc-type VARCHAR * @jboss.sql-type VARCHAR(50) * * @ejb.value-object match="short" */ public abstractstract java.lang.String getTitle(); } \end{verbatim} \subsubsection{jBoss} La plataforma J2EE\cite{j2ee-web} define un amplio conjunto de estándares con todo lo necesario para el desarrollo y despliege de aplicaciones web (conectividad a bases de datos, transacciones, presentación, <<middleware>>,\dots). Fue definido por Sun en 1999. Para el desarrollo y puesta en marcha de aplicaciones web que cumplan estas recomendaciones es necesaria una implementación de esos estándares, en lo que se conoce como <<contenedor>> de aplicaciones. Hay varios en el mercado, muchos de ellos comerciales (como BEA Weblogig\cite{bea-web} o IBM WebSphere\cite{websphere-web}). Para el desarrollo de \texttt{Prolix} se utilizó la implementación jBoss\cite{jboss-web}. Es un proyecto distribuido como software libre, esta albergado en Sourceforge y es uno de los proyectos estrella en cuanto al índice de actividad (cuenta con 10 desarrolladores fijos y mas de 50 colaboradores). %FIXME Hablar de alternativas y precios. \subsubsection{Servidor de Base de Datos mySQL} Este es uno de los servidores de bases de datos mas populares. Se distribuye bajo dos tipos de licencia, libre bajo la GNU GPL (General Public License) o con licencia comercial estandard, que se adquiere a la compañia que lo desarrolla (MySQL AB). Funciona en más de 20 sistemas operativos. \subsubsection{Gestión de la base de datos phpMyAdmin} phpMyAdmin\cite{phpmyadmin-web} es un interfaz web escrito en PHP para trabajar con las bases de datos de MySQL. Es un proyecto software libre, que al igual que jBoss esta albergado en Sourceforge y tiene un indice de actividad muy alto. Así, a traves de páginas web podemos manejar tanto el servidor completo de MySQL como una sola base de datos (ajustando convenientemente los permisos). Además de todas las tareas habituales (crear y borrar bases de datos, crear, copiar, modificar tablas, añadir y borrar datos, etc\dots) tambien exporta datos en XML y Latex. La versión utilizada es la 2.5.2 y permite escoger más de 40 idiomas, incluido catalán o gallego. Necesita para funcionar PHP3.0.8 o superior, y MySQL al menos la versión 3.21.x. \subsubsection{Entorno de desarrollo de aplicaciones web Struts} Struts\cite{struts-web} es uno de los proyectos del grupo Jakarta, que desarrolla el servidor Web Apache. Implementa una biblioteca de clases en java que facilitan la construcción de aplicaciones web, de acuerdo con el paradigma de diseño Modelo-Vista-Controlador. Esta construido con elementos estandar (JavaServlets, JavaBeans, XML,\dots) y proporciona un conjunto de clases cuya utilidad extendemos para nuestra aplicación obteniendo una separación muy clara entre el control de la navegación, el codigo que actua sobre los datos, y la representación de estos, quedando así un esquema de aplicación donde la parte Web solo representa datos, lo que da lugar a un diseño mas robusto a la par que flexible a cambios. De esta forma el diseño de la aplicación web se resume en unas páginas en JSP que representan datos o los recogen en formularios que con Struts se tratan en una clase donde ser verifica su validez, para, si son correctos, pasarlos a una clase Accion. Esta realiza las tareas necesarias, habla con la aplicacion, actualiza los datos y en función de lo que haya ocurrido decide a que página mandar al usuario. Podemos encontrar varios entornos de desarrollo (más de 20) que ofrecen facilidades como estas (con distintas aproximaciones), muchos de ellos software libre, sin embargo Struts en este momento es el más utilizado, hay publicados al menos 6 libros sobre este entorno, y parece que IBM va a adaptar su WebSphere para poder utilizarlo. Teniendo también en cuenta que se trata de un proyecto de Jakarta, el grupo que desarrolla Apache, Tomcat y otras aplicaciones vitales en el entorno Web, esta implementación se coloca como una de las más sólidas y con más perspectivas de futuro. En su contra se pueden leer comentarios que hablan de su excesiva abstracción, lo cual complica en cierta manera su manejo. Hay incluso un proyecto en Sourceforge (Wafer\cite{wafer-web}) dedicado a la comparación de estos entornos de desarrollo. \subsubsection{Sistema de control de versiones CVS} Cuando varios desarrolladores trabajan en un proyecto, la tarea de coordinar el trabajo y mantener el codigo fuente al dia se complica. Además, si se modifica la misma parte de código y surgen problemas, resulta interesante saber quién y cuando la cambió, que habia antes, \dots Para resolver todos estos problema disponemos del CVS\cite{cvs-web}. En pocas palabras es una especie de <<copia virtual>> del proyecto, que se actualiza por transacciones cuando el programador decide: hace una copia local, trabaja sobre ella, realizando los cambios que considere oportunos y despues manda esos cambios a la copia virtual. Si durante el tiempo intermedio de trabajo otra persona subió cambios a esa copia virtual, el CVS se da cuenta e informa al segundo programador de ello (!si los cambios colisionan!, es decir, se modificó la misma parte de código). Así, varias personas pueden trabajar concurrentemente en el proyecto. En el caso de \texttt{Prolix}, donde solo hay un desarrollador, el CVS sigue resultando util para mantener una única versión del proyecto, a pesar de que el desarrollador trabaje desde distintos lugares y ordenadores. Sobre las modificaciones del código y su control, el CVS guarda las diferencias entre las sucesivas versiones, pudiendo volver de forma sencilla a cualquiera de ellas, o simplemente observar los cambios para entender la evolución del proyecto, y con el uso de <<tags>> (etiquetas) podemos <<marcar>> un momento determinado del proyecto (en \texttt{Prolix} esto se hizo con los releases), permitiendo así poder volver a ese estado del proyecto si es necesario. Es decir: podria obtenerse el codigo tal cual estaba cuando se hizo el lanzamiento de la version 0.1, por ejemplo. % FIXME: ejemplo de un diff La copia virtual del trabajo debe guardarse en alguna máquina que haga de servidor del CVS (puede ser local o remota), y se debe utilizar un cliente de CVS para obtener la copia de trabajo. Hay programas cliente para casi todas las plataformas y sistemas operativos. En el caso de \texttt{Prolix} se utilizó el servidor de CVS de sourceforge, y el cliente de consola incluido en Debian GNU/Linux. \subsubsection {Sourceforge.net} El proyecto \texttt{Prolix} esta albergado en el sitio web sourceforge.net\cite{sourceforge-web}. Sourceforge alberga proyectos de software libre y pone a disposición del programador/es una serie de herramientas muy utiles en el desarrollo de proyectos (indispensables si hay implicados varios desarrolladores). Las utilizadas por este proyecto son: \begin{itemize} \item Sistema de control de versiones CVS. \texttt{Prolix} alberga 4 modulos: \begin{itemize} \item prolix. Codigo fuente del proyecto, y ficheros necesarios para su compilación, excepto las librerias auxiliares. Estas están disponibles en la página web del proyecto. \item prolix-devel-doc. Documentación sobre el diseño de la aplicación. Diagramas UML, planificación temporal, estructura de directorios utilizada y en general información interesante solo para desarrolladores. \item prolix-doc. Documentación del proyecto. Aqui esta albergado el código fuente de este tomo. \item prolix-web. Para el desarrollo de la página web del proyecto. Nos referimos a la página web <<informátiva>> de \texttt{Prolix} como proyecto, y no a la web que el usuario se va a encontrar al utilizar \texttt{Prolix}. \end{itemize} \item Listas de correo para uso del proyecto. \texttt{Prolix} utiliza 4: \begin{itemize} \item pfc-prolog-users: para mensajes de usuarios en general. \item pfc-prolog-devel: mensajes entre desarrolladores. \item prolix-devel-es: la lista anterior esta en inglés, esta es la versión española. \item pfc-prolog-cvs: Cada vez que se actualiza el CVS, este se encarga de manera automática de mandar un mensaje a esta lista de correo con los ficheros añadidos, borrados, o las modificaciones introducidas, además de la descripción que el desarrollador haya escrito de la actualización. Así es posible seguir el desarrollo del proyecto sin consultar el CVS. \end{itemize} \item Sistema de control de errores (Bugs): Cualquier usuario puede anunciar un error con este sistema rellenando un formulario muy sencillo. Se crearon 5 categorias de errores: \begin{itemize} \item Compilación: problemas relativos a la compilación o puesta en marcha del proyecto. \item Documentación: errores o sugerencias sobre la documentación, desde los ficheros README de cada directorio hasta este documento. \item Interfaz: donde informar a los desarrolladores de errores o posibles mejoras en el aspecto gráfico de \texttt{Prolix}. \item Usabilidad: Este aspecto es importante en \texttt{Prolix}, por su caracter educativo. Aqui se recogen sugerencias respecto a este tema. \item Pagina Web: Mensajes sobre ficheros que deberian estar o no en la web informativa del proyecto y/o mejoras a la misma. \item Proyecto: Errores que no tiene cabida en las categorias anteriores o se refieren al proyecto en general. \end{itemize} %FIXME Captura de pantalla de un bug \item Sistema de lanzamiento de ficheros (File Release System - FRS): La filosofia de software libre promueve la idea de <<release soon, release often>> (lanzar una versión del programa con cada mejora, y hacerlo a menudo). Para facilitar la labor de subir los ficheros de codigo a la web, actualizar las páginas con la información adecuada, replicar los ficheros, Sourceforge dispone de un sistema FRS con el cual, siguiendo una serie de pasos en varias páginas web, se automatiza todo el proceso, poniendo a disposicion del publico los ficheros a distribuir del programa de una forma rapida, facil y relativamente sencilla. \item Sistema de noticias (news). Se pueden hacer anuncios sobre el proyecto a traves de un sistema de noticias, que coloca el titular en la página del proyecto.De las noticias publicadas cada dia, Sourceforge escoge las que le parecen mas interesantes y las coloca en su página web principal (este es un medio muy importante de promoción para proyectos). %Fin prestaciones sourceforge usadar en prolix \end{itemize} Sourceforge también ofrece otras características que no fueron utilizadas para este proyecto pero resulta interesante mencionar, por su futura utilidad o como referencia para otros desarrollos: \begin{itemize} \item Sistema de solicitud de prestaciones (Feature request): Los usuarios pueden proponer características que no estan disponibles en la versión actual. Es una fuente de realimentación muy importante para mantener vivo un proyecto. \item Sistema de gestión de documentación: Para mantener documentos y tutoriales online. \item Exportación de información en RSS. Es posible obtener en este formato las noticias, las estadísticas del proyecto o los lanzamientos de ficheros. Esto permite seguir la evolución de un proyecto desde nuestro programa de correo, automatizar la inclusión de su información en otra pagina web, \dots \item Granja de compilación (Compilation farm). En el desarrollo de proyectos dependientes de la plataforma, puede ser interesante compilarlo en máquinas a las que no se tiene acceso. Sourceforge pone a disposición de los desarrolladores máquinas en diferentes arquitecturas, donde, previa solicitud, se les da un acceso shell para compilar el proyecto. %Fin prestaciones de sourceforge NO usadas en prolix \end{itemize} Aunque el nombre del proyecto es \texttt{Prolix}, el nombre Unix asignado por sourceforge al proyecto (el nombre que utiliza en todos los aspectos técnicos) es <<pfc-prolog>>. Así, la pagina web del proyecto en SourceForge es \texttt{http://www.sourceforge.net/projects/pfc-prolog}. Además, Sourceforge cede al proyecto un espacio en sus servidores para la página web del mismo, con la única condición de colocar un logo de sourceforge en esas páginas. \texttt{Prolix} dispone de ese espacio en \texttt{http://pfc-prolog.sourceforge.net}, donde estan disponibles algunos ficheros que aunque son propios del proyecto no se incluyen en el CVS, como son los intérpretes o los DTD del XML utilizado en el proyecto. \subsubsection{Sistema de composición de textos \LaTeX} \LaTeX es un sistema de composición de textos totalmente diferente al habitual. En lugar de la fisolofia WYSIWYG (What you see is what you get: lo que ves es lo que obtienes), esta basado en una forma de trabajo anterior pero que demuestra ser más precisa: el texto plano incluyendo las etiquetas de formato. Esto produce una curva de aprendizaje mas pronunciada, pues es necesario conocer algunas etiquetas, y lo aleja del uso generalizado pues precisa respetar una estructura y compilar el documento, pero el resultado (esta documentación esta escrita con este sistema) merece la pena, pues su aspecto es mucho más cuidado, y la comodidad a la hora de escribir documentos una vez dominados unos pocos conceptos fundamentales resulta mucho mayor que con el método tradicional. Aspectos engorrosos de los editores al uso, como numerar las secciones, paginar el documento (empezar los capítulos en una hoja), resultan triviales en \LaTeX pudiendo además ajustarlos hasta el más mínimo detalle, si el autor lo considera oportuno. \LaTeX se basa en \TeX, escrito por Donald E. Knuth (más conocido por los informáticos por sus estudios de Estructuras de Datos). Cuando quiso publicar su obra <<El arte de programar computadores>> recibió una prueba de imprenta de su libro y le pareció tan mala, que decidió solucionar el problema por si mismo: desarrollar un sistema de tipografia que le permitiese garantizar el aspecto de los documentos, independientemente del medio en que se mostrasen. En solo 4 meses escribió un borrador de \TeX. \TeX es un conjunto de etiquetas que se inserta en el texto, se compilan y producen una salida en un formato especial (dvi, DeVice Indenpendient, Independiente del dispositivo). Este fichero solo proporciona la maquetación, quedando como tarea al dispositivo mostrarlo como pueda. Es decir, el documento será el mismo en una impresora de agujas que una impresora laser, pero con la resolución que cada una pueda desarrollar. Actualmente hay programas para convertir el formato dvi a otros como Postcript o PDF. Otra ventaja de este sistema esta en el que el documento <<fuente>> antes de compilar es texto simple: ocupa poco espacio, los compresores lo reducen aún mas de tamaño, facilita su difusión por la red (a finales de los 70 y principios de los 80 este era un punto muy importante) y es un formato realmente multiplataforma. El problema de \TeX es su complejidad, que lo hace dificil de manejar sin un aprendizaje intenso. En 1982, Leslie Lamport desarrolló \LaTeX, un conjunto de comandos mas reducido, que enmascara la complejidad de \TeX, permitiendo al autor concentrarse en el contenido y estructura del documento, mas que en detalles tecnicos de tipografia. Esta <<simplificación>> popularizó esta forma de escribir textos, convocó mas usuarios, y como consecuencia empezaron a desarrollarse paquetes de comandos que extendian la funcionalidad de \LaTeX. Por ejemplo para la escritura de esta documentación se utiliza el paquete <<pst-uml>> \emph{pst-uml} es un paquete para \LaTeX escrito por Maurice Diamantini, que permite introducir diagramas UML. Consiste en un conjunto de etiquetas que enmascaran la escritura de esos diagramas de una forma un tanto más sencilla. Aunque su manejo es algo complicado, permiten escribir una documentación como esta en \LaTeX sin necesidad de recurrir a programas externos. La versión utilizada en el desarrollo de este proyecto incluye las mejoras realizadas por Diego Berrueta, ex-alumno de esta misma facultad, para incluir el simbolo UML de <<paquete>> y de <<instancias múltiples>>. \subsection{Herramientas hardware} Por motivos laborales y personales, el desarrollo del proyecto se realizó en 3 máquinas distintas: \begin{itemize} \item Algeol01 \begin{itemize} \item Pentium III 800Mhz \item 256Mb RAM \end{itemize} \item Folsom \begin{itemize} \item AMD K6-II 450Mhz \item 256Mb RAM \end{itemize} \item Walrus \begin{itemize} \item Pentium IV 1.8 GHz \item 256Mb RAM \end{itemize} \end{itemize} Index: proceso.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/proceso/proceso.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** proceso.tex 20 Aug 2003 18:43:15 -0000 1.1 --- proceso.tex 25 Aug 2003 20:56:02 -0000 1.2 *************** *** 4,7 **** %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! \input{proceso/metodologia.tex} \clearpage --- 4,7 ---- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! \input{proceso/herramientas.tex} \clearpage |
From: <iva...@us...> - 2003-08-25 20:56:05
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es In directory sc8-pr-cvs1:/tmp/cvs-serv2016 Modified Files: bibliografia.tex build.xml test.tex Log Message: General update of doc. Added diseno Index: bibliografia.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/bibliografia.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** bibliografia.tex 20 Aug 2003 18:09:37 -0000 1.1 --- bibliografia.tex 25 Aug 2003 20:56:02 -0000 1.2 *************** *** 20,22 **** \bibitem{cvs-web}CVS: \url{http://www.cvshome.org/} \bibitem{sourceforge-web}Sourceforge: \url{http://www.sourceforge.net} ! \end{thebibliography} \ No newline at end of file --- 20,36 ---- \bibitem{cvs-web}CVS: \url{http://www.cvshome.org/} \bibitem{sourceforge-web}Sourceforge: \url{http://www.sourceforge.net} ! \bibitem{omg-web}OMG Object Management Group: \url{http://www.omg.org} ! \bibitem{uml-ejb-jcp}JCP Especificación UML EJB: \url{http://www.jcp.org/en/jsr/detail?id=26} ! \bibitem{uml-ejb-gen}Esquema estructura EJB: \url{http://rollerjm.free.fr/pro/EJB\_UML.html} ! \bibitem{microgold-web}Microgold/WithCase UML tool: \url{http://www.microgold.com} ! \bibitem{oracle-jdev-web}Oracle jDeveloper: \url{http://otn.oracle.com/products/jdev} ! \bibitem{bea-web}BEA Weblogin application server: \url{http://www.bea.com} ! \bibitem{websphere-web}IBM Webpshere application server: \url{http://www-3.ibm.com/software/info1/websphere/index.jsp} ! \bibitem{sf-prolix}Prolix en Sourceforge: \url{https://sourceforge.net/project/pfc-prolog} ! \bibitem{mysql-web}MySQL AB: \url{http://www.mysql.com} ! \bibitem{batik-web}Batik SVG toolkit: \url{http://xml.apache.org/batik/} ! \bibitem{w3c-web}Consorcio w3c: \url{http://www.w3.org/} ! \bibitem{svg-w3c-web}SVG en w3c: \url{http://www.w3.org/Graphics/SVG/Overview.htm8} ! \bibitem{mozilla-svg}Soporte SVG en mozilla: \url{http://www.mozilla.org/projects/svg/} ! \bibitem{sun-java-web}Sun - java: \url{http://java.sun.com} ! \end{thebibliography} Index: build.xml =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/build.xml,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** build.xml 20 Aug 2003 18:09:37 -0000 1.7 --- build.xml 25 Aug 2003 20:56:02 -0000 1.8 *************** *** 15,35 **** <property name="version" value="0.0.1"/> ! <property name="releasedir" value=".."/> <property name="latexfile" value="test"/> <property name="pdf" value="true"/> ! <!-- main and auxiliar targets --> <target name="prepare"> <tstamp /> ! <mkdir dir="build" /> </target> <target name="build" depends="prepare" > ! <javac srcdir="src" destdir="build"/> </target> ! <target name="declare" depends="build"> <taskdef name="latex" classname="LaTeX" --- 15,35 ---- <property name="version" value="0.0.1"/> ! <property name="releasedir" value="${basedir}/dist"/> <property name="latexfile" value="test"/> <property name="pdf" value="true"/> ! <property name="build.dir" value="${basedir}/build"/> <!-- main and auxiliar targets --> <target name="prepare"> <tstamp /> ! <mkdir dir="${build.dir}" /> </target> <target name="build" depends="prepare" > ! <javac srcdir="src" destdir="${build.dir}"/> </target> ! <target name="latex-task" depends="build"> <taskdef name="latex" classname="LaTeX" *************** *** 37,41 **** </target> ! <target name="main" depends="declare"> <latex latexfile="${latexfile}.tex" verbose="true" pdf="${pdf}"/> </target> --- 37,41 ---- </target> ! <target name="main" depends="latex-task"> <latex latexfile="${latexfile}.tex" verbose="true" pdf="${pdf}"/> </target> *************** *** 46,52 **** <target name="clean"> <delete> ! <fileset dir="." includes="**/*~" defaultexcludes="no" /> ! <fileset dir="." includes="**/*.aux,**/*.dvi,**/*.log" /> </delete> </target> --- 46,57 ---- <target name="clean"> <delete> ! <fileset dir="${basedir}" includes="**/*~, ! **/*.aux, ! **/*.dvi, ! **/*.log, ! **/*.ps, ! **/*.pdf" /> </delete> + <delete dir="${releasedir}" /> </target> *************** *** 54,78 **** <!-- Dist-clean target --> ! <target name="dist-clean"> ! <delete dir="build" /> ! <delete> ! <fileset dir="." includes="**/*~" defaultexcludes="no" /> ! <fileset dir="." includes="**/*.ps" defaultexcludes="no" /> ! <fileset dir="." includes="**/*.dvi" defaultexcludes="no" /> ! <fileset dir="." includes="**/*.pdf" defaultexcludes="no" /> ! </delete> </target> ! <!-- Doc-release target (and aux) --> - <target name="doc-release" depends="printables-release,dist-clean"> - <tar tarfile="${releasedir}/doc-source-${version}.tar" basedir="${basedir}"/> - <gzip src="${releasedir}/doc-source-${version}.tar" - zipfile="${releasedir}/doc-source-${version}.tar.gz"/> - <delete file="${releasedir}/doc-source-${version}.tar"/> - </target> ! <target name="printables-release" depends="main,obtain-ps,obtain-pdf"> ! </target> <target name="obtain-ps"> --- 59,89 ---- <!-- Dist-clean target --> ! <target name="dist-clean" depends="clean"> ! <delete dir="${build.dir}" /> </target> ! <target name="pack-doc-sources"> ! <tar tarfile="${releasedir}/prolix-doc-source.tgz" ! basedir="${basedir}" ! includes="**/*.tex,build.xml,src/**" ! compression="gzip" ! /> ! </target> ! <target name="snapshot-upload" depends="pack-doc-sources"> ! <property name="machine" value="iva...@pf..."/> ! <property name="location" ! value="/home/groups/p/pf/pfc-prolog/htdocs"/> ! <exec executable="scp"> ! <arg line="${releasedir}/prolix-doc-source.tgz ${machine}:${location}"/> ! </exec> ! ! </target> ! ! ! <target name="doc-release" depends="pack-doc-sources,printables-release"/> ! ! <target name="printables-release" depends="main,obtain-ps,obtain-pdf"/> <target name="obtain-ps"> Index: test.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/test.tex,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** test.tex 20 Aug 2003 18:43:15 -0000 1.4 --- test.tex 25 Aug 2003 20:56:02 -0000 1.5 *************** *** 19,31 **** \begin{document} ! \chapter{Introducción} ! \input{introduccion/introduccion.tex} ! \clearpage ! \chapter{Análisis} ! \input{analisis/analisis.tex} ! \clearpage ! \chapter{Proceso de desarrollo} ! \input{proceso/proceso.tex} \clearpage \input{bibliografia.tex} \end{document} --- 19,42 ---- \begin{document} ! %\chapter{Introducción} ! %\input{introduccion/introduccion.tex} ! %\clearpage ! ! %\chapter{Análisis} ! %\input{analisis/analisis.tex} ! %\clearpage ! ! %\chapter{Diseño} ! %\input{diseno/diseno.tex} ! %\clearpage ! ! %\chapter{Proceso de desarrollo} ! %\input{proceso/proceso.tex} ! %\clearpage ! ! \chapter{Manual de usuario} ! \input{manual/manual.tex} \clearpage + \input{bibliografia.tex} \end{document} |
From: <iva...@us...> - 2003-08-25 20:53:42
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/img In directory sc8-pr-cvs1:/tmp/cvs-serv1378/img Log Message: Directory /cvsroot/pfc-prolog/prolix-doc/pfc-es/img added to the repository |
From: <iva...@us...> - 2003-08-25 20:53:40
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/manual In directory sc8-pr-cvs1:/tmp/cvs-serv1378/manual Log Message: Directory /cvsroot/pfc-prolog/prolix-doc/pfc-es/manual added to the repository |
From: <iva...@us...> - 2003-08-25 20:53:39
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno In directory sc8-pr-cvs1:/tmp/cvs-serv1378/diseno Log Message: Directory /cvsroot/pfc-prolog/prolix-doc/pfc-es/diseno added to the repository |
From: <iva...@us...> - 2003-08-24 21:30:31
|
Update of /cvsroot/pfc-prolog/prolix/web In directory sc8-pr-cvs1:/tmp/cvs-serv6775/web Modified Files: admin-library.jsp admin-users.jsp admin.jsp change-password.jsp consult.jsp library.jsp login.jsp my-library.jsp program.jsp registry.jsp solutions.jsp tree.jsp Log Message: Changed web app name from prolixjsp to prolix Index: admin-library.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/admin-library.jsp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** admin-library.jsp 15 Aug 2003 16:58:18 -0000 1.2 --- admin-library.jsp 24 Aug 2003 21:22:15 -0000 1.3 *************** *** 67,71 **** <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolixjsp/css/prolix.css" type="text/css"/> </head> --- 67,71 ---- <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolix/css/prolix.css" type="text/css"/> </head> *************** *** 112,116 **** </html:form> </logic:notEmpty> ! <a href="/prolixjsp/admin.jsp"> <bean:message key="message.go.admin.page"/> </a> --- 112,116 ---- </html:form> </logic:notEmpty> ! <a href="/prolix/admin.jsp"> <bean:message key="message.go.admin.page"/> </a> Index: admin-users.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/admin-users.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** admin-users.jsp 15 Aug 2003 16:58:18 -0000 1.1 --- admin-users.jsp 24 Aug 2003 21:22:15 -0000 1.2 *************** *** 71,75 **** <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolixjsp/css/prolix.css" type="text/css"/> </head> --- 71,75 ---- <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolix/css/prolix.css" type="text/css"/> </head> *************** *** 107,111 **** </html:form> </logic:notEmpty> ! <a href="/prolixjsp/admin.jsp"> <bean:message key="message.go.admin.page"/> </a> --- 107,111 ---- </html:form> </logic:notEmpty> ! <a href="/prolix/admin.jsp"> <bean:message key="message.go.admin.page"/> </a> Index: admin.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/admin.jsp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** admin.jsp 21 Aug 2003 16:31:21 -0000 1.5 --- admin.jsp 24 Aug 2003 21:22:15 -0000 1.6 *************** *** 57,61 **** <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolixjsp/css/prolix.css" type="text/css"/> </head> <body> --- 57,61 ---- <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolix/css/prolix.css" type="text/css"/> </head> <body> *************** *** 87,91 **** </html:form> ! <a href="/prolixjsp/change-password.jsp"> <bean:message key="message.change.password"/> </a> --- 87,91 ---- </html:form> ! <a href="/prolix/change-password.jsp"> <bean:message key="message.change.password"/> </a> Index: change-password.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/change-password.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** change-password.jsp 14 Aug 2003 22:04:03 -0000 1.1 --- change-password.jsp 24 Aug 2003 21:22:15 -0000 1.2 *************** *** 60,64 **** <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolixjsp/css/prolix.css" type="text/css"/> </head> <body> --- 60,64 ---- <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolix/css/prolix.css" type="text/css"/> </head> <body> Index: consult.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/consult.jsp,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** consult.jsp 17 Aug 2003 10:38:07 -0000 1.23 --- consult.jsp 24 Aug 2003 21:22:15 -0000 1.24 *************** *** 65,69 **** <head> <title><bean:message key="title.consult"/></title> ! <link rel="stylesheet" href="/prolixjsp/css/prolix.css" type="text/css"/> </head> --- 65,69 ---- <head> <title><bean:message key="title.consult"/></title> ! <link rel="stylesheet" href="/prolix/css/prolix.css" type="text/css"/> </head> *************** *** 92,96 **** <html:submit><bean:message key="button.load"/></html:submit> </html:form> ! <a href="/prolixjsp/program.jsp"><bean:message key="message.edit.program"/></a><br/> <html:form action="/actions/resetProgram"> <html:submit><bean:message key="message.load.other.program"/></html:submit> --- 92,96 ---- <html:submit><bean:message key="button.load"/></html:submit> </html:form> ! <a href="/prolix/program.jsp"><bean:message key="message.edit.program"/></a><br/> <html:form action="/actions/resetProgram"> <html:submit><bean:message key="message.load.other.program"/></html:submit> Index: library.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/library.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** library.jsp 14 Aug 2003 22:04:03 -0000 1.1 --- library.jsp 24 Aug 2003 21:22:15 -0000 1.2 *************** *** 70,74 **** <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolixjsp/css/prolix.css" type="text/css"/> </head> --- 70,74 ---- <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolix/css/prolix.css" type="text/css"/> </head> *************** *** 109,113 **** </html:form> </logic:notEmpty> ! <a href="/prolixjsp/program.jsp"> <bean:message key="message.go.load.program"/> </a> --- 109,113 ---- </html:form> </logic:notEmpty> ! <a href="/prolix/program.jsp"> <bean:message key="message.go.load.program"/> </a> Index: login.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/login.jsp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** login.jsp 15 Aug 2003 16:58:18 -0000 1.7 --- login.jsp 24 Aug 2003 21:22:15 -0000 1.8 *************** *** 57,61 **** <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolixjsp/css/prolix.css" type="text/css"/> </head> <body> --- 57,61 ---- <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolix/css/prolix.css" type="text/css"/> </head> <body> *************** *** 72,76 **** <br> ! <a href="/prolixjsp/registry.jsp"> <bean:message key="message.registry.now"/> </a> --- 72,76 ---- <br> ! <a href="/prolix/registry.jsp"> <bean:message key="message.registry.now"/> </a> Index: my-library.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/my-library.jsp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** my-library.jsp 15 Aug 2003 12:35:16 -0000 1.2 --- my-library.jsp 24 Aug 2003 21:22:15 -0000 1.3 *************** *** 67,71 **** <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolixjsp/css/prolix.css" type="text/css"/> </head> --- 67,71 ---- <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolix/css/prolix.css" type="text/css"/> </head> *************** *** 114,118 **** </html:form> </logic:notEmpty> ! <a href="/prolixjsp/program.jsp"> <bean:message key="message.go.load.program"/> </a> --- 114,118 ---- </html:form> </logic:notEmpty> ! <a href="/prolix/program.jsp"> <bean:message key="message.go.load.program"/> </a> Index: program.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/program.jsp,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** program.jsp 14 Aug 2003 22:04:03 -0000 1.15 --- program.jsp 24 Aug 2003 21:22:15 -0000 1.16 *************** *** 71,75 **** <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolixjsp/css/prolix.css" type="text/css"/> </head> <body> --- 71,75 ---- <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolix/css/prolix.css" type="text/css"/> </head> <body> *************** *** 99,103 **** <html:errors/> ! <a href="/prolixjsp/change-password.jsp"> <bean:message key="message.change.password"/> </a> --- 99,103 ---- <html:errors/> ! <a href="/prolix/change-password.jsp"> <bean:message key="message.change.password"/> </a> Index: registry.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/registry.jsp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** registry.jsp 14 Aug 2003 22:04:03 -0000 1.1 --- registry.jsp 24 Aug 2003 21:22:15 -0000 1.2 *************** *** 57,61 **** <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolixjsp/css/prolix.css" type="text/css"/> </head> <body> --- 57,61 ---- <head> <title><bean:message key="title.main"/></title> ! <link rel="stylesheet" href="/prolix/css/prolix.css" type="text/css"/> </head> <body> Index: solutions.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/solutions.jsp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** solutions.jsp 22 Aug 2003 11:35:20 -0000 1.19 --- solutions.jsp 24 Aug 2003 21:22:15 -0000 1.20 *************** *** 68,72 **** <head> <title><bean:message key="title.resultText"/></title> ! <link rel="stylesheet" href="/prolixjsp/css/prolix.css" type="text/css"/> </head> <body bgcolor="#768FDD"> --- 68,72 ---- <head> <title><bean:message key="title.resultText"/></title> ! <link rel="stylesheet" href="/prolix/css/prolix.css" type="text/css"/> </head> <body bgcolor="#768FDD"> *************** *** 110,118 **** </html:form> ! <a href="/prolixjsp/consult.jsp"> <bean:message key="message.load.other.consult"/> </a> <br> ! <a href="/prolixjsp/tree.jsp"> <bean:message key="message.go.graphic.resolution"/> </a> --- 110,118 ---- </html:form> ! <a href="/prolix/consult.jsp"> <bean:message key="message.load.other.consult"/> </a> <br> ! <a href="/prolix/tree.jsp"> <bean:message key="message.go.graphic.resolution"/> </a> Index: tree.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/tree.jsp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** tree.jsp 19 Aug 2003 19:22:36 -0000 1.8 --- tree.jsp 24 Aug 2003 21:22:15 -0000 1.9 *************** *** 65,69 **** <head> <title><bean:message key="title.resultGraphic"/></title> ! <link rel="stylesheet" href="/prolixjsp/css/prolix.css" type="text/css"/> </head> --- 65,69 ---- <head> <title><bean:message key="title.resultGraphic"/></title> ! <link rel="stylesheet" href="/prolix/css/prolix.css" type="text/css"/> </head> *************** *** 77,83 **** <jsp:getProperty name="prologData" property="currentResult" /> ! <!-- <object data="/prolixjsp/view.tree?format=svg" type="image/svg+xml" width="400" height="400" alt="Loading..."> --> ! <object data="/prolixjsp/view.tree?format=jpeg" type="image/jpeg" width="<%=tree.getWidth()%>" height="<%=tree.getHeight()%>"> </object> --- 77,83 ---- <jsp:getProperty name="prologData" property="currentResult" /> ! <!-- <object data="/prolix/view.tree?format=svg" type="image/svg+xml" width="400" height="400" alt="Loading..."> --> ! <object data="/prolix/view.tree?format=jpeg" type="image/jpeg" width="<%=tree.getWidth()%>" height="<%=tree.getHeight()%>"> </object> *************** *** 89,93 **** </html:form> ! <a href="/prolixjsp/consult.jsp"> <bean:message key="message.load.other.consult"/> </a> --- 89,93 ---- </html:form> ! <a href="/prolix/consult.jsp"> <bean:message key="message.load.other.consult"/> </a> *************** *** 104,108 **** </c:if> ! <a href="/prolixjsp/solutions.jsp"> <bean:message key="message.return.solutions.page"/> </a> --- 104,108 ---- </c:if> ! <a href="/prolix/solutions.jsp"> <bean:message key="message.return.solutions.page"/> </a> |
From: <iva...@us...> - 2003-08-24 21:30:31
|
Update of /cvsroot/pfc-prolog/prolix In directory sc8-pr-cvs1:/tmp/cvs-serv6775 Modified Files: build.xml Log Message: Changed web app name from prolixjsp to prolix Index: build.xml =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/build.xml,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** build.xml 18 Aug 2003 23:05:15 -0000 1.52 --- build.xml 24 Aug 2003 21:22:15 -0000 1.53 *************** *** 35,45 **** <property file=".ant.properties" /> <property name="Name" value="Prolix"/> ! <property name="version" value="0.1"/> <!-- <property name="interpreter" value="prolix-dummy-interpreter.jar"/> --> <property name="interpreter" value="lupi.jar"/> ! <property name="war.file" value="prolixjsp.war"/> <property name="web.client.jar.file" value="web-client-classes.jar"/> ! <property name="src.release.file" value="prolix-src-snapshot.jar"/> ! <property name="src.release.file.with.libs" value="prolix-src-snapshot-with-libs.jar"/> <property name="batik.home" value="${env.BATIK_HOME}" /> --- 35,47 ---- <property file=".ant.properties" /> <property name="Name" value="Prolix"/> ! <property name="version" value="0.91"/> <!-- <property name="interpreter" value="prolix-dummy-interpreter.jar"/> --> <property name="interpreter" value="lupi.jar"/> ! <property name="war.file" value="prolix.war"/> ! <property name="server.file" value="prolix-application.jar"/> <property name="web.client.jar.file" value="web-client-classes.jar"/> ! <property name="src.release.file" value="prolix-src-snapshot.tgz"/> ! <property name="src.release.file.with.libs" value="prolix-src-${version}.tar.gz"/> ! <property name="bin.release.file" value="prolix-bin-${version}.tar.gz"/> <property name="batik.home" value="${env.BATIK_HOME}" /> *************** *** 323,327 **** <!-- JBOSS jar --> <target name="package-server" depends="compile"> ! <jar jarfile="${dist.dir}/prolix-beans.jar"> <fileset dir="${build.classes.dir}" --- 325,329 ---- <!-- JBOSS jar --> <target name="package-server" depends="compile"> ! <jar jarfile="${dist.dir}/${server.file}"> <fileset dir="${build.classes.dir}" *************** *** 402,418 **** <!-- =================================================================== --> ! <target name="snapshot" depends="clean"> ! <jar jarfile="../${src.release.file}"> ! <fileset ! dir="${basedir}" ! includes="**/**" ! excludes="**/CVS/**,**/lib/**"/> ! </jar> ! <jar jarfile="../${src.release.file.with.libs}"> ! <fileset ! dir="${basedir}" ! includes="**/**" ! excludes="**/CVS/**"/> ! </jar> </target> --- 404,428 ---- <!-- =================================================================== --> ! <target name="prepare-release" depends="prepare"> ! <mkdir dir="${dist.dir}/prolix-${version}" /> ! <copy todir="${dist.dir}/prolix-${version}"> ! <fileset dir="${basedir}" ! includes="src/**,web/**, ! lib/**,etc/**, ! AUTHOR,LICENSE,README,build.xml,.ant.properties"/> ! </copy> ! </target> ! ! <target name="snapshot" depends="prepare-release"> ! <tar destfile="../${src.release.file}" ! basedir="${dist.dir}" ! includes="prolix-${version}/**" ! excludes="**/lib/**" ! compression="gzip"/> ! ! <tar destfile="../${src.release.file.with.libs}" ! basedir="${dist.dir}" ! includes="prolix-${version}/**" ! compression="gzip"/> </target> *************** *** 425,428 **** --- 435,450 ---- </exec> </target> + <!-- =================================================================== --> + <!-- Prepare Release Files --> + <!-- =================================================================== --> + + <target name="release" depends="snapshot,package-server,package-webclient"> + + <tar destfile="../${bin.release.file}" + basedir="${dist.dir}" + includes="${war.file},${server.file}" + compression="gzip" /> + + </target> <!-- =================================================================== --> *************** *** 433,437 **** <target name="deploy-server" depends="package-server"> ! <copy file="${dist.dir}/prolix-beans.jar" todir="${jboss.deploy}"/> </target> --- 455,459 ---- <target name="deploy-server" depends="package-server"> ! <copy file="${dist.dir}/${server.file}" todir="${jboss.deploy}"/> </target> *************** *** 444,448 **** name="jboss.tmp.dir" value="server/default/tmp/deploy/server/default" /> ! <delete file="${jboss.deploy}/prolix-beans.jar"/> </target> --- 466,470 ---- name="jboss.tmp.dir" value="server/default/tmp/deploy/server/default" /> ! <delete file="${jboss.deploy}/${server.file}"/> </target> |
From: <iva...@us...> - 2003-08-24 21:30:31
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/tags In directory sc8-pr-cvs1:/tmp/cvs-serv6775/src/org/asturlinux/frade/prolix/web/tags Modified Files: CheckLoginTag.java Log Message: Changed web app name from prolixjsp to prolix Index: CheckLoginTag.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/tags/CheckLoginTag.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CheckLoginTag.java 14 Aug 2003 23:08:02 -0000 1.1 --- CheckLoginTag.java 24 Aug 2003 21:22:15 -0000 1.2 *************** *** 96,100 **** out.println("<html><body>"); out.println("Error redirecting to login page"); ! out.println("try: <a href=\"/prolixjsp/login.jsp\"> "); out.println(" Login page "); out.println("</a>"); --- 96,100 ---- out.println("<html><body>"); out.println("Error redirecting to login page"); ! out.println("try: <a href=\"/prolix/login.jsp\"> "); out.println(" Login page "); out.println("</a>"); |
From: <iva...@us...> - 2003-08-22 23:04:04
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb In directory sc8-pr-cvs1:/tmp/cvs-serv4972/src/org/asturlinux/frade/prolix/ejb/sessionjb Modified Files: AccessControlBean.java TreeTraversors.java TreeXmlVisitor.java Log Message: Changed professor to admin. Minor updates Index: AccessControlBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb/AccessControlBean.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AccessControlBean.java 17 Aug 2003 15:42:04 -0000 1.3 --- AccessControlBean.java 21 Aug 2003 16:31:20 -0000 1.4 *************** *** 150,154 **** * @ejb.interface-method */ ! public void createProfessor(String username,String password) throws NamingException, javax.ejb.CreateException, UsernameNotAvailableException, --- 150,154 ---- * @ejb.interface-method */ ! public void createAdmin(String username,String password) throws NamingException, javax.ejb.CreateException, UsernameNotAvailableException, *************** *** 158,162 **** verifyPermissions(Permissions.Administrator); createUser(username,password, ! Permissions.Professor + "," + Permissions.Student); } --- 158,162 ---- verifyPermissions(Permissions.Administrator); createUser(username,password, ! Permissions.Administrator + "," + Permissions.Student); } *************** *** 199,203 **** uv.setPassword("admin"); uv.setPermissions(Permissions.Administrator + "," + - Permissions.Professor + ","+ Permissions.Student); obtainUserHome().create(uv); --- 199,202 ---- *************** *** 291,303 **** catch (NamingException namingException) { ! throw new EJBException("Maaaal naming"); // FIXME } catch (CreateException createException) { ! throw new EJBException("Maaaal create"); // FIXME } catch (RemoteException e) { ! throw new EJBException("Maaaal remote"); // FIXME } return studentUseCase; --- 290,302 ---- catch (NamingException namingException) { ! throw new EJBException("Naming exception creating student Use Case"); } catch (CreateException createException) { ! throw new EJBException("Create exception with student Use Case"); } catch (RemoteException e) { ! throw new EJBException("Remote exception retrieving student Use Case Home"); } return studentUseCase; *************** *** 323,335 **** catch (NamingException namingException) { ! throw new EJBException("Maaaal naming"); // FIXME } catch (CreateException createException) { ! throw new EJBException("Maaaal create"); // FIXME } catch (RemoteException e) { ! throw new EJBException("Maaaal remote"); // FIXME } return library; --- 322,334 ---- catch (NamingException namingException) { ! throw new EJBException("Naming exception retrieving library management"); } catch (CreateException createException) { ! throw new EJBException("Create exception retrieving library management"); } catch (RemoteException e) { ! throw new EJBException("Remote exception retrieving library management"); } return library; Index: TreeTraversors.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb/TreeTraversors.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TreeTraversors.java 14 Aug 2003 22:42:46 -0000 1.2 --- TreeTraversors.java 21 Aug 2003 16:31:20 -0000 1.3 *************** *** 55,59 **** /** ! * Apply visitor to all nodes in tree using inorder path */ public void visitPostOrder(TreeElement tree, TreeElementVisitor visitor) --- 55,59 ---- /** ! * Apply visitor to all nodes in tree using PostOrder path */ public void visitPostOrder(TreeElement tree, TreeElementVisitor visitor) Index: TreeXmlVisitor.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb/TreeXmlVisitor.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TreeXmlVisitor.java 6 Aug 2003 21:29:11 -0000 1.3 --- TreeXmlVisitor.java 21 Aug 2003 16:31:20 -0000 1.4 *************** *** 53,57 **** } ! public void writeNode(TreeElement te) { try { --- 53,58 ---- } ! //FIXME could be private this method? ! private void writeNode(TreeElement te) { try { |
From: <iva...@us...> - 2003-08-22 23:04:04
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/consoleclient In directory sc8-pr-cvs1:/tmp/cvs-serv4972/src/org/asturlinux/frade/prolix/consoleclient Modified Files: ConsoleClient.java Log Message: Changed professor to admin. Minor updates Index: ConsoleClient.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/consoleclient/ConsoleClient.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** ConsoleClient.java 14 Aug 2003 22:07:14 -0000 1.13 --- ConsoleClient.java 21 Aug 2003 16:31:20 -0000 1.14 *************** *** 101,105 **** "Logout", "Sign up new user", ! "Create professor", "Change password", "Add program to library", --- 101,105 ---- "Logout", "Sign up new user", ! "Create admin", "Change password", "Add program to library", *************** *** 134,138 **** case 9: signupNewUser(); break; ! case 10: signupProfessor(); break; case 11: changePassword(); --- 134,138 ---- case 9: signupNewUser(); break; ! case 10: signupAdmin(); break; case 11: changePassword(); *************** *** 395,399 **** } ! private void signupProfessor() { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); --- 395,399 ---- } ! private void signupAdmin() { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); *************** *** 408,412 **** { if (pwd.equals(pwd2)) ! login.createProfessor(id,pwd); else System.out.println("Dont match 2 writed password"); --- 408,412 ---- { if (pwd.equals(pwd2)) ! login.createAdmin(id,pwd); else System.out.println("Dont match 2 writed password"); *************** *** 430,434 **** catch (NoLoggedUserException nlue) { ! System.out.println("You must login as admin to create professor"); } } catch (IOException io) --- 430,434 ---- catch (NoLoggedUserException nlue) { ! System.out.println("You must login as admin to create admin"); } } catch (IOException io) |
From: <iva...@us...> - 2003-08-22 22:50:27
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb In directory sc8-pr-cvs1:/tmp/cvs-serv32660 Modified Files: LibraryManagementBean.java Log Message: Removed unused import Index: LibraryManagementBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb/LibraryManagementBean.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** LibraryManagementBean.java 22 Aug 2003 22:46:46 -0000 1.3 --- LibraryManagementBean.java 22 Aug 2003 22:50:23 -0000 1.4 *************** *** 32,36 **** import org.asturlinux.frade.prolix.ejb.interfaces.ProgramValue; import org.asturlinux.frade.prolix.ejb.interfaces.ProgramLocal; ! import org.asturlinux.frade.prolix.ejb.interfaces.ProgramLocalHome; import org.asturlinux.frade.prolix.ejb.entityjb.Permissions; import javax.naming.InitialContext; --- 32,36 ---- import org.asturlinux.frade.prolix.ejb.interfaces.ProgramValue; import org.asturlinux.frade.prolix.ejb.interfaces.ProgramLocal; ! //import org.asturlinux.frade.prolix.ejb.interfaces.ProgramLocalHome; import org.asturlinux.frade.prolix.ejb.entityjb.Permissions; import javax.naming.InitialContext; |
From: <iva...@us...> - 2003-08-22 22:46:49
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb In directory sc8-pr-cvs1:/tmp/cvs-serv31699/sessionjb Modified Files: AccessControlBean.java LibraryManagementBean.java StudentRoleBean.java Log Message: Removed JNDI access using Util objects. Added Xdoclet tag to generate it correctly. Removed Local interfaces Index: AccessControlBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb/AccessControlBean.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** AccessControlBean.java 21 Aug 2003 16:31:20 -0000 1.4 --- AccessControlBean.java 22 Aug 2003 22:46:46 -0000 1.5 *************** *** 29,34 **** import org.asturlinux.frade.prolix.exceptions.CouldNotRetrieveUsersException; import org.asturlinux.frade.prolix.exceptions.CouldNotRemoveUserException; ! import org.asturlinux.frade.prolix.ejb.interfaces.UserLocalHome; ! import org.asturlinux.frade.prolix.ejb.interfaces.StudentRoleHome; import org.asturlinux.frade.prolix.ejb.interfaces.UserValue; import org.asturlinux.frade.prolix.ejb.interfaces.UserLocal; --- 29,34 ---- import org.asturlinux.frade.prolix.exceptions.CouldNotRetrieveUsersException; import org.asturlinux.frade.prolix.exceptions.CouldNotRemoveUserException; ! //import org.asturlinux.frade.prolix.ejb.interfaces.UserLocalHome; ! //import org.asturlinux.frade.prolix.ejb.interfaces.StudentRoleHome; import org.asturlinux.frade.prolix.ejb.interfaces.UserValue; import org.asturlinux.frade.prolix.ejb.interfaces.UserLocal; *************** *** 36,39 **** --- 36,40 ---- import org.asturlinux.frade.prolix.ejb.interfaces.LibraryManagement; import org.asturlinux.frade.prolix.ejb.interfaces.LibraryManagementHome; + import org.asturlinux.frade.prolix.ejb.interfaces.LibraryManagementUtil; import org.asturlinux.frade.prolix.ejb.entityjb.Permissions; import javax.ejb.SessionBean; *************** *** 50,53 **** --- 51,56 ---- import org.asturlinux.frade.prolix.ejb.interfaces.UserPK; import javax.ejb.RemoveException; + import org.asturlinux.frade.prolix.ejb.interfaces.UserUtil; + import org.asturlinux.frade.prolix.ejb.interfaces.StudentRoleUtil; /** *************** *** 69,72 **** --- 72,77 ---- * remote="org.asturlinux.frade.prolix.ejb.sessionjb.AccessControl" * + * @ejb.util generate="physical" + * * @jboss.ejb-ref-jndi ref-name="AccessControl" * jndi-name="org/asturlinux/frade/prolix/ejb/sessionjb/AccessControl" *************** *** 101,105 **** } //throw new FailedLoginException(); ! loggedUser = obtainUserHome().findByUserAndPass(name,pass); } catch (FinderException fe) --- 106,110 ---- } //throw new FailedLoginException(); ! loggedUser = UserUtil.getLocalHome().findByUserAndPass(name,pass); } catch (FinderException fe) *************** *** 175,179 **** try { ! UserLocal ul = obtainUserHome().findByUser(username); throw new UsernameNotAvailableException(); } --- 180,184 ---- try { ! UserLocal ul = UserUtil.getLocalHome().findByUser(username); throw new UsernameNotAvailableException(); } *************** *** 182,186 **** } ! obtainUserHome().create(signmeup); } --- 187,191 ---- } ! UserUtil.getLocalHome().create(signmeup); } *************** *** 190,194 **** try { ! UserLocal ul = obtainUserHome().findByUser("admin"); } --- 195,199 ---- try { ! UserLocal ul = UserUtil.getLocalHome().findByUser("admin"); } *************** *** 200,204 **** uv.setPermissions(Permissions.Administrator + "," + Permissions.Student); ! obtainUserHome().create(uv); } } --- 205,209 ---- uv.setPermissions(Permissions.Administrator + "," + Permissions.Student); ! UserUtil.getLocalHome().create(uv); } } *************** *** 218,249 **** /** - * Private method to retrieve other bean factory - */ - private UserLocalHome obtainUserHome() - throws NamingException - { - InitialContext ctx = new InitialContext(); - UserLocalHome home = (UserLocalHome)ctx.lookup(UserLocalHome.JNDI_NAME); - return home; - } - - private StudentRoleHome obtainStudentRoleHome() - throws NamingException - { - InitialContext ctx = new InitialContext(); - StudentRoleHome home = (StudentRoleHome)ctx.lookup(StudentRoleHome.JNDI_NAME); - return home; - } - - private LibraryManagementHome obtainLibraryManagementHome() - throws NamingException - { - InitialContext ctx = new InitialContext(); - LibraryManagementHome home = (LibraryManagementHome)ctx.lookup(LibraryManagementHome.JNDI_NAME); - return home; - } - - - /** * @ejb.interface-method **/ --- 223,226 ---- *************** *** 283,287 **** if (studentUseCase == null) { ! studentUseCase = obtainStudentRoleHome().create(); studentUseCase.setAccessControl(context.getEJBObject()); } --- 260,264 ---- if (studentUseCase == null) { ! studentUseCase = StudentRoleUtil.getHome().create(); studentUseCase.setAccessControl(context.getEJBObject()); } *************** *** 316,320 **** if (library == null) { ! library = obtainLibraryManagementHome().create(); library.setAccessControl(context.getEJBObject()); } --- 293,297 ---- if (library == null) { ! library = LibraryManagementUtil.getHome().create(); library.setAccessControl(context.getEJBObject()); } *************** *** 377,381 **** try { ! userReferences = obtainUserHome().findByAll(); } catch (NamingException ne) --- 354,358 ---- try { ! userReferences = UserUtil.getLocalHome().findByAll(); } catch (NamingException ne) *************** *** 411,415 **** try { ! obtainUserHome().remove(new UserPK(key)); } catch (NamingException ne) --- 388,392 ---- try { ! UserUtil.getLocalHome().remove(new UserPK(key)); } catch (NamingException ne) Index: LibraryManagementBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb/LibraryManagementBean.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** LibraryManagementBean.java 15 Aug 2003 12:35:16 -0000 1.2 --- LibraryManagementBean.java 22 Aug 2003 22:46:46 -0000 1.3 *************** *** 44,47 **** --- 44,48 ---- import org.asturlinux.frade.prolix.ejb.interfaces.ProgramPK; import javax.ejb.RemoveException; + import org.asturlinux.frade.prolix.ejb.interfaces.ProgramUtil; /** *************** *** 62,65 **** --- 63,68 ---- * remote="org.asturlinux.frade.prolix.ejb.sessionjb.LibraryManagement" * + * @ejb.util generate="physical" + * * @jboss.ejb-ref-jndi ref-name="LibraryManagement" * jndi-name="org/asturlinux/frade/prolix/ejb/sessionjb/LibraryManagement" *************** *** 113,117 **** try { ! ProgramLocal p = obtainProgramHome().create(pv,login.getLoggedUser()); } --- 116,120 ---- try { ! ProgramLocal p = ProgramUtil.getLocalHome().create(pv,login.getLoggedUser()); } *************** *** 153,157 **** try { ! library = obtainProgramHome().findByAll(); System.out.println("LibraryManagement Bean: library contain programs"); } --- 156,160 ---- try { ! library = ProgramUtil.getLocalHome().findByAll(); System.out.println("LibraryManagement Bean: library contain programs"); } *************** *** 160,167 **** throw new CouldNotRetrieveProgramsException(); } - catch (CreateException ce) - { - throw new CouldNotRetrieveProgramsException(); - } catch (NamingException ne) { --- 163,166 ---- *************** *** 204,208 **** try { ! ProgramLocal p = obtainProgramHome().findByPK(title); ProgramValue result = p.getProgramValue(); return result; --- 203,207 ---- try { ! ProgramLocal p = ProgramUtil.getLocalHome().findByPK(title); ProgramValue result = p.getProgramValue(); return result; *************** *** 212,219 **** throw new CouldNotRetrieveProgramsException(); } - catch (CreateException ce) - { - throw new CouldNotRetrieveProgramsException(); - } catch (NamingException re) { --- 211,214 ---- *************** *** 257,261 **** try { ! myPrograms= obtainProgramHome().findByUser(userOnline); } catch (FinderException fe) --- 252,256 ---- try { ! myPrograms=ProgramUtil.getLocalHome().findByUser(userOnline); } catch (FinderException fe) *************** *** 263,270 **** return new LinkedList(); } - catch (CreateException ce) - { - throw new CouldNotRetrieveProgramsException(); - } catch (NamingException ne) { --- 258,261 ---- *************** *** 297,305 **** login.verifyPermissions(Permissions.Student); //FIXME: verify programs owns to user ! obtainProgramHome().remove(new ProgramPK(programKey)); ! } ! catch (CreateException ne) ! { ! throw new CouldNotRemoveProgramException(); } catch (NamingException ne) --- 288,292 ---- login.verifyPermissions(Permissions.Student); //FIXME: verify programs owns to user ! ProgramUtil.getLocalHome().remove(new ProgramPK(programKey)); } catch (NamingException ne) *************** *** 317,329 **** } - private ProgramLocalHome obtainProgramHome() - throws CreateException, NamingException - { - InitialContext ctx = new InitialContext(); - ProgramLocalHome home; - home = (ProgramLocalHome)ctx.lookup(ProgramLocalHome.JNDI_NAME); - return home; - } - - } --- 304,306 ---- Index: StudentRoleBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/sessionjb/StudentRoleBean.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** StudentRoleBean.java 17 Aug 2003 10:38:06 -0000 1.5 --- StudentRoleBean.java 22 Aug 2003 22:46:46 -0000 1.6 *************** *** 44,48 **** * @ejb.bean name="StudentRole" * type="Stateful" ! * view-type="both" * jndi-name="org/asturlinux/frade/prolix/ejb/sessionjb/StudentRole" * --- 44,48 ---- * @ejb.bean name="StudentRole" * type="Stateful" ! * view-type="remote" * jndi-name="org/asturlinux/frade/prolix/ejb/sessionjb/StudentRole" * *************** *** 57,60 **** --- 57,62 ---- * home="org.asturlinux.frade.prolix.ejb.sessionjb.StudentRoleHome" * remote="org.asturlinux.frade.prolix.ejb.sessionjb.StudentRole" + * + * @ejb.util generate="physical" * * @jboss.ejb-ref-jndi ref-name="StudentRole" |
From: <iva...@us...> - 2003-08-22 22:46:49
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/entityjb In directory sc8-pr-cvs1:/tmp/cvs-serv31699/entityjb Modified Files: ProgramBean.java UserBean.java Log Message: Removed JNDI access using Util objects. Added Xdoclet tag to generate it correctly. Removed Local interfaces Index: ProgramBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/entityjb/ProgramBean.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ProgramBean.java 14 Aug 2003 22:39:46 -0000 1.1 --- ProgramBean.java 22 Aug 2003 22:46:46 -0000 1.2 *************** *** 59,62 **** --- 59,65 ---- * unchecked="true" * query="SELECT OBJECT(p) FROM Program p WHERE p.user.user = ?1" + * + * @ejb.util generate="physical" + * */ Index: UserBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/entityjb/UserBean.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** UserBean.java 15 Aug 2003 16:58:17 -0000 1.6 --- UserBean.java 22 Aug 2003 22:46:46 -0000 1.7 *************** *** 54,57 **** --- 54,60 ---- * unchecked="true" * query="SELECT OBJECT(p) FROM User p" + * + * @ejb.util generate="physical" + * */ |
From: <iva...@us...> - 2003-08-22 19:51:17
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/beans In directory sc8-pr-cvs1:/tmp/cvs-serv4972/src/org/asturlinux/frade/prolix/web/beans Modified Files: SvgBean.java Log Message: Changed professor to admin. Minor updates Index: SvgBean.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/beans/SvgBean.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SvgBean.java 19 Aug 2003 19:22:36 -0000 1.1 --- SvgBean.java 21 Aug 2003 16:31:20 -0000 1.2 *************** *** 21,25 **** **/ ! package org.asturlinux.frade.prolix.web.beans;; /** --- 21,25 ---- **/ ! package org.asturlinux.frade.prolix.web.beans; /** |
From: <iva...@us...> - 2003-08-22 12:57:35
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/entityjb In directory sc8-pr-cvs1:/tmp/cvs-serv4972/src/org/asturlinux/frade/prolix/ejb/entityjb Modified Files: Permissions.java Log Message: Changed professor to admin. Minor updates Index: Permissions.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/ejb/entityjb/Permissions.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Permissions.java 6 Aug 2003 21:30:52 -0000 1.2 --- Permissions.java 21 Aug 2003 16:31:20 -0000 1.3 *************** *** 25,29 **** { public static final String Administrator = "administrator"; ! public static final String Professor = "professor"; public static final String Student = "student"; } --- 25,29 ---- { public static final String Administrator = "administrator"; ! // public static final String Professor = "professor"; public static final String Student = "student"; } |
From: <iva...@us...> - 2003-08-22 12:57:26
|
Update of /cvsroot/pfc-prolog/prolix/etc In directory sc8-pr-cvs1:/tmp/cvs-serv4972/etc Modified Files: WebClientResources.properties Log Message: Changed professor to admin. Minor updates Index: WebClientResources.properties =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/etc/WebClientResources.properties,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** WebClientResources.properties 15 Aug 2003 16:58:17 -0000 1.16 --- WebClientResources.properties 21 Aug 2003 16:31:20 -0000 1.17 *************** *** 6,10 **** error.program.not.loaded=<li>No ha cargado un programa previamente en el intérprete</li> error.query.not.loaded=<li>No ha cargado una consulta previamente en el intérprete</li> ! error.saving.consult.bean=<li>Error al salvar la consulta en el bean</li> error.not.enought.permissions=<li>No tiene permisos suficientes para esta operación</li> error.void.user=<li>Debe teclear un nombre de usuario</li> --- 6,10 ---- error.program.not.loaded=<li>No ha cargado un programa previamente en el intérprete</li> error.query.not.loaded=<li>No ha cargado una consulta previamente en el intérprete</li> ! error.saving.consult.bean=<li>Error al salvar la consulta</li> error.not.enought.permissions=<li>No tiene permisos suficientes para esta operación</li> error.void.user=<li>Debe teclear un nombre de usuario</li> *************** *** 15,19 **** error.passwd.mismatch=<li>No coincide el password y la confirmación</li> error.username.registered=<li>El nombre de usuario ya esta ocupado</li> ! error.failed.login=<li>Nombre/clave incorrectos o ya hay alguien logeado</li> error.failed.logout=<li>No puede hacer logout: no hay usuario logeado</li> error.registering.user=<li>No coinciden los dos password tecleados</li> --- 15,19 ---- error.passwd.mismatch=<li>No coincide el password y la confirmación</li> error.username.registered=<li>El nombre de usuario ya esta ocupado</li> ! error.failed.login=<li>No se pudo hacer login: nombre/clave incorrectos</li> error.failed.logout=<li>No puede hacer logout: no hay usuario logeado</li> error.registering.user=<li>No coinciden los dos password tecleados</li> *************** *** 52,56 **** message.input.new.password=Nuevo password message.registry.now=Registrate ahora ! message.registry.professor=Registro de un profesor en el sistema message.input.registry.data=Introduzca los siguientes datos message.change.password=Cambiar password --- 52,56 ---- message.input.new.password=Nuevo password message.registry.now=Registrate ahora ! message.registry.admin=Registro de un administrador en el sistema message.input.registry.data=Introduzca los siguientes datos message.change.password=Cambiar password |
From: <iva...@us...> - 2003-08-22 11:35:23
|
Update of /cvsroot/pfc-prolog/prolix/web In directory sc8-pr-cvs1:/tmp/cvs-serv12136 Modified Files: solutions.jsp Log Message: Fixed program code in solutions page. Now respect linebreaks Index: solutions.jsp =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/web/solutions.jsp,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** solutions.jsp 15 Aug 2003 12:35:16 -0000 1.18 --- solutions.jsp 22 Aug 2003 11:35:20 -0000 1.19 *************** *** 58,62 **** <% ! String programLoaded = prologData.getCurrentProgram(); String queryLoaded = prologData.getCurrentConsult(); String currentlyLoggedUser = login.getLoggedUser(); --- 58,62 ---- <% ! String programLoaded = prologData.getCurrentProgramHTML(); String queryLoaded = prologData.getCurrentConsult(); String currentlyLoggedUser = login.getLoggedUser(); |
From: <iva...@us...> - 2003-08-22 11:31:43
|
Update of /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/servlets In directory sc8-pr-cvs1:/tmp/cvs-serv11651 Modified Files: SvgGenerator.java Log Message: Fixed problem with SVG size. Index: SvgGenerator.java =================================================================== RCS file: /cvsroot/pfc-prolog/prolix/src/org/asturlinux/frade/prolix/web/servlets/SvgGenerator.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SvgGenerator.java 21 Aug 2003 18:57:17 -0000 1.5 --- SvgGenerator.java 22 Aug 2003 11:31:39 -0000 1.6 *************** *** 23,27 **** import org.asturlinux.frade.prolix.web.servlets.IdFactory; - //FIXME Can be passed xml String in constructor??? public class SvgGenerator { --- 23,26 ---- *************** *** 103,107 **** public static final String solutionNodeColor = "#d8d600"; ! public int currentNodeSizeX = nodeSizeX; private Dimension drawNode(Node raiz, String number, --- 102,127 ---- public static final String solutionNodeColor = "#d8d600"; ! private Dimension mySize(Node node) ! { ! Dimension result = new Dimension(nodeSizeX,nodeSizeY); ! if (node.getAttributes() == null) ! return result; ! ! if (node.getNodeName().equals("solution")) ! { ! //Node[] subst = filterSubstitutionNodes(node.getChildNodes()); ! //int numberOfSubst = subst.length; ! return result; ! } ! ! Node label = node.getAttributes().getNamedItem("label"); ! if (label != null) ! { ! String text = label.getNodeValue(); ! int thisNodeXSize = Math.max(text.length() * 7, nodeSizeX); ! result.width = thisNodeXSize; ! } ! return result; ! } private Dimension drawNode(Node raiz, String number, *************** *** 112,116 **** //System.out.println("Looking for transitions"); ! Node[] result2 = search(raiz,"transition","origin",number); Dimension boundingBox = new Dimension(0,0); --- 132,136 ---- //System.out.println("Looking for transitions"); ! Node[] transitions = search(raiz,"transition","origin",number); Dimension boundingBox = new Dimension(0,0); *************** *** 118,124 **** Vector childBoxes = new Vector(); ! for (int i = 0; i < result2.length ; i++) { ! String destiny = result2[i].getAttributes().getNamedItem("destiny").getNodeValue(); Point childPoint = new Point(leftTopCorner.x + boundingBox.width, childYBaseLine); --- 138,144 ---- Vector childBoxes = new Vector(); ! for (int i = 0; i < transitions.length ; i++) { ! String destiny = transitions[i].getAttributes().getNamedItem("destiny").getNodeValue(); Point childPoint = new Point(leftTopCorner.x + boundingBox.width, childYBaseLine); *************** *** 132,140 **** boundingBox.width = Math.max(boundingBox.width, ! Math.max(nodeSizeX, currentNodeSizeX)); boundingBox.height += nodeSizeY + marginY; // System.out.println("Aqui pinto la cajita"); ! Point nodePoint = new Point(boundingBox.width / 2 + leftTopCorner.x , leftTopCorner.y ); --- 152,160 ---- boundingBox.width = Math.max(boundingBox.width, ! mySize(result).width); boundingBox.height += nodeSizeY + marginY; // System.out.println("Aqui pinto la cajita"); ! Point nodePoint = new Point((boundingBox.width - marginX)/2 + leftTopCorner.x , leftTopCorner.y ); *************** *** 177,189 **** try { ! Node label = node.getAttributes().getNamedItem("label"); ! String text; ! if (label != null) ! { ! text = label.getNodeValue(); ! currentNodeSizeX = Math.max(text.length() * 7, nodeSizeX); ! } ! ! output.write("<rect \n " + " width=\"" + currentNodeSizeX + "\" \n" --- 197,202 ---- try { ! int currentNodeSizeX = mySize(node).width; ! //the poing i receive is really de middle of boundingBox output.write("<rect \n " + " width=\"" + currentNodeSizeX + "\" \n" *************** *** 196,200 **** + " /> \n"); ! if (label != null) output.write("<text \n" --- 209,213 ---- + " /> \n"); ! Node label = node.getAttributes().getNamedItem("label"); if (label != null) output.write("<text \n" *************** *** 234,237 **** --- 247,253 ---- try { + + int currentNodeSizeX = mySize(node).width; + output.write("<rect \n " + " width=\"" + currentNodeSizeX + "\" \n" *************** *** 246,250 **** Node[] subst = filterSubstitutionNodes(node.getChildNodes()); int numberOfSubst = subst.length; - //System.out.println("DEBUG: Tiene " + numberOfSubst + " substitutiones"); float substYPoint = leftTopPoint.y + nodeSizeY/2; --- 262,265 ---- *************** *** 332,336 **** StringWriter svg = new StringWriter(); ! Dimension total = drawNode(document,"1",new Point(30,30),svg); setSize(total); //System.out.println("Dimensiones totales: " + total.width + " " --- 347,351 ---- StringWriter svg = new StringWriter(); ! Dimension total = drawNode(document,"1",new Point(10,10),svg); setSize(total); //System.out.println("Dimensiones totales: " + total.width + " " |
From: <iva...@us...> - 2003-08-22 10:35:50
|
Update of /cvsroot/pfc-prolog/prolix-doc/pfc-es/proceso In directory sc8-pr-cvs1:/tmp/cvs-serv12138 Modified Files: metodologia.tex Log Message: Borrado metodologia - Contenido inadecuado Index: metodologia.tex =================================================================== RCS file: /cvsroot/pfc-prolog/prolix-doc/pfc-es/proceso/metodologia.tex,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** metodologia.tex 20 Aug 2003 18:43:15 -0000 1.1 --- metodologia.tex 20 Aug 2003 20:27:31 -0000 1.2 *************** *** 1,87 **** - % - % Proceso de desarrollo::metodologia - % - % Especificación formal del requisitos - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - \section{Metodología de desarrollo} - Para el desarrollo de \texttt{Prolix} se utilizó una metodologia compendio de otras. Principalmente: - - \begin{itemize} - \item Proceso tradicional de desarrollo - \item Proceso Unificado - \item Extreme programming, XP, o programación extrema. - \end{itemize} - - Por \emph{Proceso tradicional de desarrollo} nos referimos al dividido en tres etapas: análisis, diseño e implementación. El mas conocido y utilizado por el desarrollador hasta la fecha de comenzar el proyecto. Influenció un intento de análisis completo de la aplicación, que presentó numerosas complejidades, principalmente por la introducción de un aspecto totalmente nuevo como era el desarrollo de una aplicación Web. - - El \emph{Proceso Unificado} tal como se explica en el libro <<UML y patrones>>, fue la segunda influencia en el proyecto. Añade al proceso tradicional la idea de iteraciones en el sentido de funcionalidades que se le añaden al programa. Esto simplificó la primera aproximación al proyecto, pero es un proceso que requiere numerosa documentación y sigue lastrando el desarrollo con mucho <<metatrabajo>>. - - Pero sin duda fue \emph{XP o Programación Extrema} la metodologia más influyente en el desarrollo. A pesar de estar orientada a otro tipo de proyectos, en los que hay involucrado mayor numero de personas, algunas de sus ideas resultaron útiles en el desarrollo de \texttt{Prolix}. - - Para entender la verdadera utilidad de XP, es necesario conocer el problema de los planteamientos tradicionales a la hora de desarrollar software. El crecimiento en el tamaño de los programas, continuo desde el nacimiento de la informática ha ido planteando problemas que se han intentado resolver desde distintos frentes. Principalmente por un proceso de desarrollo ordenado (analisis-diseño-implementación) y por unos lenguajes de programación que facilitasen el reaprovechamiento del software y los mecanismos necesarios para construir programas más fiables. Este ultimo aspecto fue el más potenciado, desde los lenguajes que no admitian subrutinas, hasta los lenguajes como Java orientados a objetos, pasando por los lenguajes procedurales, sin embargo hasta hace muy poco tiempo no se planteó la duda de si el problema podria estar en el primer aspecto que comentarmos: el proceso de desarrollo. - - Uno de los problemas tradicionales es el de la descoordinación de los requerimientos iniciales con los del usuario/cliente en el momento de la entrega del software, y su solución se planteó durante mucho tiempo en el terreno de los lenguajes: construirlos mas modulares, en piezas mas pequeñas y reaprovechables, para poder adaptar el programa si no se cumplen los requerimientos previstos, o estos cambian en un plazo razonable. - - Sin embargo esta solución se demuestra insuficiente, pues las aplicaciones siguen creciendo y los problemas no desaparecen, sino que cambian de terreno: se complica el diseño, aumentan los artefactos que lo rodean en forma de tablas, diagramas, esquemas, \dots - - Enfocando el tema desde otro punto de vista, si observamos la evolución del software libre, podemos observar como se desarrollan programas cada vez mayores, cada vez mas complejos, en el que hay involucradas muchas más personas. Y son programas que funcionan, que crecen bien, y con un rendimiento y fiabilidad asombrosas, sin necesidad de un proceso muy complejo de desarrollo, ni una autoridad central que coordine de forma exacta el trabajo. ¿Donde esta el truco? - - Desde hace relativamente poco tiempo, se ha planteado la cuestión de si el problema es el esquema analisis-diseño-implementación. Y la solución esta en el modelo <<iterativo>>, aunque hay muchas formas de plantearlo. El <<proceso unificado>> antes comentado, introduce la idea de iteración en el proceso, lo que le da mayor flexibilidad, pero sigue manteniendo un demasiada parafernalia a su alrededor como para aprovechar todo su rendimiento. - - \emph{XP} lleva a sus ultimas consecuencias el concepto de iteración, rodeandolo de muchas ideas novedosas que llevan a una forma totalmente nueva desarrollar software. - - \subsection{Programación extrema} - - Programación extrema se define a si misma como una <<metodologia ligera para el desarrollo de programas en un entorno de requerimientos que varian muy rapido>>. - %FIXME cita adecuada. - - Establece cuatro variables para valorar un proyecto: - \begin{itemize} - \item Coste del programa - \item Tiempo de desarrollo - \item Calidad del producto - \item <<Alcanze>> en el sentido de funcionalidad obtenida. - \end{itemize} - - Lo que se pretende es minimizar el coste y tiempo, maximizar la calidad, y ajustar la funcionalidad exactamente a lo que el cliente (o usuario) necesita. Este ultimo punto es clave: obtener funcionalidad \emph{util} que nos permita centrarnos en problemas que es necesario resolver sin introducir dificultades nuevas e innecesarias en el proyecto. Este aspecto resulta un tanto sorprendente comparado con la idea intuitiva de desarrollar un programa con la mayor funcionalidad posible. - - La idea de XP para lograr estos objetivos es minimizar el <<coste del cambio>>, que la modificación del programa para añadir nuevas caracteristicas o mejoras las anteriores sea el mínimo posible. Parece utópico, sin embargo resulta posible siguiendo lo que se conoce como los 4 valores: - - \begin{itemize} - \item Comunicación - \item Simplicidad - \item Retroalimentación (<<feedback>>) - \item Valor - \end{itemize} - - XP esta orientado al trabajo en equipo. Aunque como veremos mas adelante sus ideas también resultaron utiles en el desarrollo de un proyecto en solitario, como es por definición un proyecto fin de carrera. El trabajo en equipo que propone XP esta basado en una continua comunicación entre los programadores, tanto entre si mismos, como con el cliente. Todo el mundo sabe o puede saber todo del proyecto que se desarrolla. Para ello se promueve la simplicidad: el código más sencillo posible que cumpla con la funcionalidad deseada. La retroalimentación implica la comunicación con el usuario: saber continuamente que le parece el proyecto, que opina de uno u otro aspecto, que funcionalidad necesita,\dots - - El valor se refiere al miedo natural del programador: hacer cambios en un programa en funcionamiento siempre provoca miedo, con la filosofia de trabajo de XP puede aparecer un problema grave que implique cambios profundos cuando no queda demasiado tiempo para la entrega del proyecto\dots Siendo consciente de estos miedos y motivando al programador a asumir y apreciar su trabajo, se puede lograr una facilidad de cambio mucho mayor. - - Estos cuatro valores, se plasman finalmente en 12 <<prácticas>> que hacen funcionar un proyecto en XP: - - \begin{enumerate} - \item El juego del diseño. Planificar rapidamente la funcionalidad a añadir en el siguiente lanzamiento del programa, teniendo en cuenta los problemas técnicos y los deseos del cliente. - \item Lanzamientos del programa cada poco tiempo. Poner un sistema simple en producción lo más rapidamente posible y luego sacar versiones con nueva funcionalidad cada poco tiempo. - \item Metafora. Entendido como mantener por medio de una historia comprensible el objetivo del proceso de desarrollo. - \item Diseño simple. Hacer un diseño de lo que se necesita en ese momento, lo más simple que funcione posible. - \item Pruebas. Escribir y ejecutar continuamente test del sistema, utilizando las herramientas de test automático para comprobar que todo sigue funcionando despues de cambiar las cosas. - \item Refactorizar. Estar dispuesto continuamente a reescribir y rediseñar el codigo que sea necesario para simplificarlo, hacerlo mas legible, sin añadir o quitar características. - \item Programación en parejas. La figura tradicional de programador ahora se sustituye por la de 2 programadores trabajando en un ordenador: la comunicación entre esos dos programadores producirá código mas claro y sencillo. - \item Propiedad colectiva. Cualquier puede cambiar cualquier cosa del programa. No existe <<mi>> código que nadie puede modificar. - \item Integración continua. Lo mas rapidamente posible se deben integrar los cambios en el proyecto, y comprobar que todo sigue funcionando. - \item 40 horas a la semana. Es la forma de definir que se trabaja siempre lo mismo: una cantidad de tiempo a la semana. Esto evita periodos de inactividad que terminan en el stress de una entrega en un plazo imposible de cumplir. - \item Cliente <<en casa>>. Durante todo el desarrollo hay alguien que representa al cliente (a ser posible el cliente real) para poder consultarle todo lo necesario. - \item Estándares de codificación. Es indispensable para que un proyecto con esta filosofia funcione establecer unos estándares en la forma de escribir código que faciliten la comunicación. Promueve las buenas practicas de programación. - \end{enumerate} - - Con la aplicación de estas prácticas junto con unas cuantas sugerencias más, es posible el desarrollo de proyectos reales. Existen empresas que desarrollan software con esta metodología. Adjuntamos en la bibliografia algunos enlaces interesantes respecto a este tema. - - \subsection{Metodologia utilizada en \texttt{Prolix}} - - La aplicación de XP en el proyecto se puede considerar más <<filosofica>> que práctica, en el sentido de que muchas de las prácticas sugeridas no pueden ser acatadas en un proyecto fin de carrera. Sin embargo las ideas de codificar rápido, de forma lo mas sencilla posible, con el valor suficiente para refactorizar cuando hace falta si que fue posible aplicarla. - - El resultando final fue un proceso iterativo planificado en un principio: se decidieron cuantas iteraciónes con qué funcionalidades y en que plazos se realizarian, con una planificación mas parecida al proceso unificado que al XP. En cada iteración se realizó una planificación de los pasos necesarios para obtener la funcionalidad requerida. Especialmente en las primeras, donde el aprendizaje de nuevas tecnologias ocupaba gran parte del tiempo de desarrollo. - - \ No newline at end of file --- 0 ---- |
From: <iva...@us...> - 2003-08-22 06:12:46
|
Update of /cvsroot/pfc-prolog/prolix-devel-doc/CASE In directory sc8-pr-cvs1:/tmp/cvs-serv5596 Added Files: prolix.xmi Removed Files: prolix-project.zargo Log Message: Removed old argoUML documentation. Now used .xmi format with Umbrello --- NEW FILE: prolix.xmi --- <?xml version="1.0" encoding="UTF-8"?> <XMI xmlns:UML="org.omg/standards/UML" verified="false" timestamp="" xmi.version="1.2" > <XMI.header> <XMI.documentation> <XMI.exporter>umbrello uml modeller http://uml.sf.net</XMI.exporter> <XMI.exporterVersion>1.1</XMI.exporterVersion> </XMI.documentation> <XMI.model xmi.name="prolix" href="/home/ivan/pfc/proyecto/prolix-doc/umbrello/prolix.xmi" /> <XMI.metamodel xmi.name="UML" href="UML.xml" xmi.version="1.3" /> </XMI.header> <XMI.content> <docsettings viewid="260" documentation="" uniqueid="266" /> <umlobjects> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.ejb.sessionjb" xmi.id="3" abstract="0" documentation="Sin terminar!!!!!!!" name="AccessControlBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="4" type="void" abstract="0" documentation="" name="login" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="name" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="string" abstract="0" documentation="" name="pass" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="5" type="void" abstract="0" documentation="" name="logout" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="6" type="void" abstract="0" documentation="" name="signup" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="username" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="string" abstract="0" documentation="" name="password" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="7" type="void" abstract="0" documentation="" name="changePassword" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="newPasswd" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="8" type="void" abstract="0" documentation="" name="verifyPermissions" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="required" static="0" scope="200" /> </UML:Operation> </UML:Class> <UML:Class stereotype="interface" package="org.asturllinux.frade.prolix.interpreter.interfaces" xmi.id="11" abstract="0" documentation="" name="PrologContext" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="12" type="void" abstract="0" documentation="" name="load" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="programSource" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="13" type="void" abstract="0" documentation="" name="consult" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="query" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="30" type="TreeElement" abstract="0" documentation="" name="step" static="0" scope="200" /> </UML:Class> <UML:Class stereotype="interface" package="org.asturlinux.frade.prolix.interpreter.interfaces" xmi.id="14" abstract="0" documentation="" name="TreeElement" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="15" type="bool" abstract="0" documentation="" name="isCompletlyExplored" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="16" type="bool" abstract="0" documentation="" name="isFinal" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="17" type="bool" abstract="0" documentation="" name="isSolution" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="18" type="TreeElement [ ]" abstract="0" documentation="" name="getNextLevelElements" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="19" type="TreeElement" abstract="0" documentation="" name="getParent" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="20" type="string" abstract="0" documentation="" name="getQuery" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="31" type="Substitution [ ]" abstract="0" documentation="" name="getSubstitutions" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="32" type="void" abstract="0" documentation="" name="accept" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="TreeElementVisitor" abstract="0" documentation="" name="v" static="0" scope="200" /> </UML:Operation> </UML:Class> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.interpreter.interfaces" xmi.id="21" abstract="1" documentation="" name="TreeElementVisitor" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="22" type="void" abstract="1" documentation="" name="visitTreeElement" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="TreeElement" abstract="0" documentation="" name="te" static="0" scope="200" /> </UML:Operation> </UML:Class> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.interpreter.interfaces" xmi.id="23" abstract="1" documentation="" name="TreeElementImpl" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="24" type="TreeElementVisitor" abstract="0" documentation="" name="accept" static="0" scope="200" /> </UML:Class> <UML:Class stereotype="interface" package="org.asturlinux.frade.prolix.interpreter.interfaces" xmi.id="25" abstract="0" documentation="" name="Substitution" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="26" type="string" abstract="0" documentation="" name="getOriginalValue" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="27" type="string" abstract="0" documentation="" name="getNewValue" static="0" scope="200" /> </UML:Class> <UML:Class stereotype="interface" package="org.asturlinux.frade.prolix.interpreter.interfaces" xmi.id="28" abstract="0" documentation="" name="PrologInterpreter" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="29" type="PrologContext" abstract="0" documentation="" name="createContext" static="0" scope="200" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="33" abstract="0" documentation="" name="CheckSolutionVisitor" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="34" type="bool" abstract="0" documentation="" name="getIsSolution" static="0" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="35" value="" type="bool" abstract="0" documentation="" name="isSolution" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="36" abstract="0" documentation="" name="SimpleXmlVisitor" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="37" type="void" abstract="0" documentation="" name="SimpleXmlVisitor" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="java.io.Writer" abstract="0" documentation="" name="writer" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="38" value="0" type="java.io.Writer" abstract="0" documentation="" name="solutionCounter" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="39" value="" type="Writer" abstract="0" documentation="" name="writer" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.ejb.sessionjb" xmi.id="40" abstract="0" documentation="" name="TransformationControl" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="41" type="string" abstract="0" documentation="" name="transformToSolutionXml" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="TreeElement" abstract="0" documentation="" name="tree" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="42" type="string" abstract="0" documentation="" name="transformToTreeXml" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="TreeElement" abstract="0" documentation="" name="tree" static="0" scope="200" /> </UML:Operation> </UML:Class> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.ejb.sessionjb" xmi.id="43" abstract="0" documentation="" name="TreeTraversors" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="44" type="void" abstract="0" documentation="" name="visitLastNode" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="TreeElement" abstract="0" documentation="" name="tree" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="TreeElementVisitor" abstract="0" documentation="" name="visitor" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="45" type="void" abstract="0" documentation="" name="visitPostOrder" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="TreeElement" abstract="0" documentation="" name="tree" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="TreeElementVisitor" abstract="0" documentation="" name="visitor" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="46" type="void" abstract="0" documentation="" name="visitPreOrder" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="TreeElement" abstract="0" documentation="" name="tree" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="3" value="" type="TreeElementVisitor" abstract="0" documentation="" name="visitor" static="0" scope="200" /> </UML:Operation> </UML:Class> <UML:Class stereotype="" package="" xmi.id="47" abstract="0" documentation="" name="TreeXmlVisitor" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="52" type="void" abstract="0" documentation="" name="TreeXmlVisitor" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="java.io.Writer" abstract="0" documentation="" name="nodes" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="java.io.Writer" abstract="0" documentation="" name="transitions" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="53" type="void" abstract="0" documentation="" name="visitTreeElement" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="TreeElement" abstract="0" documentation="" name="te" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="54" type="void" abstract="0" documentation="" name="writeNode" static="0" scope="201" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="TreeElement" abstract="0" documentation="" name="te" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="48" value="" type="int" abstract="0" documentation="" name="nodeCounter" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="49" value="" type="java.io.Writer" abstract="0" documentation="" name="nodes" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="50" value="" type="java.io.Writer" abstract="0" documentation="" name="transitions" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="51" value="" type="java.util.HashMap" abstract="0" documentation="" name="nodeKeyTable" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="56" abstract="0" documentation="" name="FailedLoginException" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="57" abstract="0" documentation="" name="NoLoggedUserException" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="58" abstract="0" documentation="" name="NotEnoughtPermissionsException" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="59" abstract="0" documentation="" name="UsernameNotAvailableException" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="60" abstract="0" documentation="" name="java.lang.Exception" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="61" abstract="0" documentation="" name="CouldNotStoreProgramException" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="62" abstract="0" documentation="" name="CouldNotRemoveProgramException" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="63" abstract="0" documentation="" name="CouldNotRetrieveUsersException" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="64" abstract="0" documentation="" name="CouldNotRetrieveProgramsException" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="65" abstract="0" documentation="" name="CouldNotRemoveUserException" static="0" scope="200" /> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.interpreter.exceptions" xmi.id="66" abstract="0" documentation="" name="CreateException" static="0" scope="200" /> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.interpreter.exceptions" xmi.id="67" abstract="0" documentation="" name="LexicalException" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="74" type="void" abstract="0" documentation="" name="LexicalException" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="message" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="75" type="int" abstract="0" documentation="" name="getLine" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="76" type="string" abstract="0" documentation="" name="getUnexpectedChar" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="77" type="void" abstract="0" documentation="" name="setLine" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="int" abstract="0" documentation="" name="lineNumber" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="78" type="void" abstract="0" documentation="" name="setUnexpectedChar" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="unexpectedChar" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="72" value="" type="int" abstract="0" documentation="" name="lineNumber" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="73" value="" type="string" abstract="0" documentation="" name="unexpectedChar" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.interpreter.exceptions" xmi.id="68" abstract="0" documentation="" name="ProgramAlreadyLoadedException" static="0" scope="200" /> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.interpreter.exceptions" xmi.id="69" abstract="0" documentation="" name="ProgramNotLoadedException" static="0" scope="200" /> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.interpreter.exceptions" xmi.id="70" abstract="0" documentation="" name="QueryNotLoadedException" static="0" scope="200" /> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.interpreter.exceptions" xmi.id="71" abstract="0" documentation="" name="SyntaxException" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="79" type="int" abstract="0" documentation="" name="getLine" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="80" type="void" abstract="0" documentation="" name="setLine" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="int" abstract="0" documentation="" name="lineNumber" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="84" type="void" abstract="0" documentation="" name="setExpectedToken" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="expectedToken" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="85" type="string" abstract="0" documentation="" name="getExpectedToken" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="86" type="void" abstract="0" documentation="" name="setUnexpectedToken" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="unexpectedToken" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="87" type="string" abstract="0" documentation="" name="getUnexpectedToken" static="0" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="81" value="" type="int" abstract="0" documentation="" name="lineNumber" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="82" value="" type="string" abstract="0" documentation="" name="unexpectedToken" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="83" value="" type="string" abstract="0" documentation="" name="expectedToken" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.web.beans" xmi.id="88" abstract="0" documentation="" name="CurrentStateBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="94" type="bool" abstract="0" documentation="" name="getNoMoreSolutions" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="95" type="void" abstract="0" documentation="" name="setNoMoreSolutions" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="bool" abstract="0" documentation="" name="noMoreSolutions" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="96" type="string" abstract="0" documentation="" name="getCurrentProgram" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="97" type="string" abstract="0" documentation="" name="getCurrentProgramHTML" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="98" type="void" abstract="0" documentation="" name="setCurrentProgram" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="program" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="99" type="string" abstract="0" documentation="" name="getCurrentConsult" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="100" type="void" abstract="0" documentation="" name="setCurrentConsult" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="consult" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="101" type="string" abstract="0" documentation="" name="getCurrentResult" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="102" type="void" abstract="0" documentation="" name="setCurrentResult" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="result" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="103" type="void" abstract="0" documentation="" name="reset" static="0" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="89" value="" type="string" abstract="0" documentation="" name="program" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="90" value="" type="string" abstract="0" documentation="" name="programHTML" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="91" value="" type="string" abstract="0" documentation="" name="consult" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="92" value="" type="string" abstract="0" documentation="" name="result" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="93" value="" type="bool" abstract="0" documentation="" name="noMoreSolutions" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.web.beans" xmi.id="104" abstract="0" documentation="" name="LibraryBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="106" type="Collection" abstract="0" documentation="" name="getPrograms" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="107" type="void" abstract="0" documentation="" name="setPrograms" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="Collection" abstract="0" documentation="" name="programs" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="105" value="" type="java.util.Collection" abstract="0" documentation="" name="programs" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.web.beans" xmi.id="108" abstract="0" documentation="" name="LastConsultsBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="110" type="java.util.Vector" abstract="0" documentation="" name="getLastConsults" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="111" type="void" abstract="0" documentation="" name="setLastConsults" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="java.util.Vector" abstract="0" documentation="" name="lastConsults" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="112" type="void" abstract="0" documentation="" name="reset" static="0" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="109" value="" type="Vector" abstract="0" documentation="" name="lastConsults" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.web.beans" xmi.id="113" abstract="0" documentation="" name="UsersBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="115" type="java.util.Collection" abstract="0" documentation="" name="getUsers" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="116" type="void" abstract="0" documentation="" name="setUsers" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="java.util.Collection" abstract="0" documentation="" name="users" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="114" value="" type="java.util.Collection" abstract="0" documentation="" name="users" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.web.beans" xmi.id="117" abstract="0" documentation="" name="SvgBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="121" type="void" abstract="0" documentation="" name="reset" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="122" type="void" abstract="0" documentation="" name="setHeight" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="int" abstract="0" documentation="" name="height" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="123" type="int" abstract="0" documentation="" name="getHeight" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="124" type="int" abstract="0" documentation="" name="setWidth" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="int" abstract="0" documentation="" name="width" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="125" type="int" abstract="0" documentation="" name="getWidth" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="126" type="void" abstract="0" documentation="" name="setSvg" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="svg" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="127" type="string" abstract="0" documentation="" name="getSvg" static="0" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="118" value="" type="string" abstract="0" documentation="" name="svg" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="119" value="" type="int" abstract="0" documentation="" name="width" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="120" value="" type="int" abstract="0" documentation="" name="height" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.web.beans" xmi.id="128" abstract="0" documentation="" name="LoginBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="131" type="string" abstract="0" documentation="" name="getLoggedUser" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="132" type="void" abstract="0" documentation="" name="setLoggedUser" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="loggedUser" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="133" type="string" abstract="0" documentation="" name="getPermissions" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="134" type="void" abstract="0" documentation="" name="setPermissions" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="permissions" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="135" type="void" abstract="0" documentation="" name="reset" static="0" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="129" value="" type="string" abstract="0" documentation="" name="loggedUser" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="130" value="" type="string" abstract="0" documentation="" name="permissions" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.web.servlets" xmi.id="136" abstract="0" documentation="" name="TreeServlet" static="0" scope="200" /> <UML:Class stereotype="" package="org.asturlinux.frade.prolix.web.servlets" xmi.id="137" abstract="0" documentation="" name="NodeDrawData" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="140" type="void" abstract="0" documentation="" name="NodeDrawData" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="java.awt.Dimension" abstract="0" documentation="" name="size" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="java.awt.Point" abstract="0" documentation="" name="origin" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="138" value="" type="java.awt.Dimension" abstract="0" documentation="" name="size" static="0" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="139" value="" type="java.awt.Point" abstract="0" documentation="" name="origin" static="0" scope="200" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="141" abstract="0" documentation="" name="SvgGenerator" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="142" type="org.w3c.dom.Node [ ]" abstract="0" documentation="" name="search" static="0" scope="201" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="org.w3c.dom.Node" abstract="0" documentation="" name="root" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="string" abstract="0" documentation="" name="name" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="3" value="" type="string" abstract="0" documentation="" name="attribute" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="4" value="" type="string" abstract="0" documentation="" name="value" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="143" type="org.w3c.dom.Node" abstract="0" documentation="" name="searchNodeByNumber" static="0" scope="201" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="org.w3c.dom.Node" abstract="0" documentation="" name="root" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="string" abstract="0" documentation="" name="number" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="148" type="java.awt.Dimension" abstract="0" documentation="" name="drawNode" static="0" scope="201" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="org.w3c.dom.Node" abstract="0" documentation="" name="root" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="string" abstract="0" documentation="" name="number" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="3" value="" type="java.awt.Point" abstract="0" documentation="" name="leftTopCorner" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="4" value="" type="java.io.Writer" abstract="0" documentation="" name="output" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="149" type="void" abstract="0" documentation="" name="imprimirTransicion" static="0" scope="201" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="java.awt.Point" abstract="0" documentation="" name="origen" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="NodeDrawData" abstract="0" documentation="" name="destino" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="3" value="" type="java.io.Writer" abstract="0" documentation="" name="output" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="150" type="void" abstract="0" documentation="" name="imprimirNodo" static="0" scope="201" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="org.w3c.dom.Node" abstract="0" documentation="" name="node" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="java.awt.Point" abstract="0" documentation="" name="leftTopPoint" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="3" value="" type="java.io.Writer" abstract="0" documentation="" name="output" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="151" type="string" abstract="0" documentation="" name="svgInit" static="0" scope="201" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="int" abstract="0" documentation="" name="height" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="int" abstract="0" documentation="" name="width" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="152" type="string" abstract="0" documentation="" name="svgEnd" static="0" scope="201" /> <UML:Operation stereotype="" package="" xmi.id="153" type="string" abstract="0" documentation="" name="transform" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="xmlString" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="155" type="java.awt.Dimension" abstract="0" documentation="" name="getSize" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="156" type="void" abstract="0" documentation="" name="setSize" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="java.awt.Dimension" abstract="0" documentation="" name="size" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="144" value="10" type="int" abstract="0" documentation="" name="marginX" static="1" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="145" value="15" type="int" abstract="0" documentation="" name="marginY" static="1" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="146" value="60" type="int" abstract="0" documentation="" name="nodeSizeX" static="1" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="147" value="40" type="int" abstract="0" documentation="" name="nodeSizeY" static="1" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="154" value="" type="java.awt.Dimension" abstract="0" documentation="" name="size" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="157" abstract="0" documentation="" name="LoadConsultAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="158" abstract="0" documentation="" name="LoadProgramAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="159" abstract="0" documentation="" name="LoginAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="160" abstract="0" documentation="" name="LogoutAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="161" abstract="0" documentation="" name="ResetProgramAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="162" abstract="0" documentation="" name="SolutionAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="163" abstract="0" documentation="" name="StepAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="164" abstract="0" documentation="" name="RegistryAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="165" abstract="0" documentation="" name="ChangePasswordAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="166" abstract="0" documentation="" name="AddProgramAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="167" abstract="0" documentation="" name="VisitLibraryAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="168" abstract="0" documentation="" name="LoadFromLibraryAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="169" abstract="0" documentation="" name="LoadMyProgramsAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="170" abstract="0" documentation="" name="ManageProgramsAction" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="176" type="void" abstract="0" documentation="" name="delete" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="javax.servlet.http.HttpSession" abstract="0" documentation="" name="session" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="string" abstract="0" documentation="" name="programKey" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="3" value="" type="org.apache.struts.action.ActionErrors" abstract="0" documentation="" name="errors" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="177" type="void" abstract="0" documentation="" name="modify" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="javax.servlets.http.HttpSession" abstract="0" documentation="" name="session" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="string" abstract="0" documentation="" name="username" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="3" value="" type="org.apache.struts.action.ActionErrors" abstract="0" documentation="" name="errors" static="0" scope="200" /> </UML:Operation> </UML:Class> <UML:Class stereotype="" package="" xmi.id="171" abstract="0" documentation="" name="ManageUsersAction" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="178" type="void" abstract="0" documentation="" name="delete" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="javax.servlet.http.HttpSession" abstract="0" documentation="" name="session" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="2" value="" type="string" abstract="0" documentation="" name="programKey" static="0" scope="200" /> <UML:Parameter stereotype="" package="" xmi.id="3" value="" type="org.apache.struts.action.ActionErrors" abstract="0" documentation="" name="errors" static="0" scope="200" /> </UML:Operation> </UML:Class> <UML:Class stereotype="" package="" xmi.id="172" abstract="0" documentation="" name="CreateAdminAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="173" abstract="0" documentation="" name="BrowseResolutionAction" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="179" type="void" abstract="1" documentation="" name="performBrowsing" static="0" scope="202" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="org.asturlinux.frade.prolix.interfaces.StudentRole" abstract="0" documentation="" name="studentRole" static="0" scope="200" /> </UML:Operation> </UML:Class> <UML:Class stereotype="" package="" xmi.id="174" abstract="0" documentation="" name="VisitLibraryAsAdminAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="175" abstract="0" documentation="" name="VisitUsersAction" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="180" abstract="0" documentation="" name="AddProgramFormBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="181" type="string" abstract="0" documentation="" name="getTitle" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="182" type="void" abstract="0" documentation="" name="setTitle" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="title" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="183" type="string" abstract="0" documentation="" name="getDescription" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="184" type="void" abstract="0" documentation="" name="setDescription" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="description" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="186" value="" type="string" abstract="0" documentation="" name="title" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="187" value="" type="string" abstract="0" documentation="" name="description" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="185" abstract="0" documentation="" name="ChangePasswordFormBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="190" type="string" abstract="0" documentation="" name="getNewPassword" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="191" type="void" abstract="0" documentation="" name="setNewPassword" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="newPassword" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="192" type="string" abstract="0" documentation="" name="getNewPasswordConfirmation" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="193" type="void" abstract="0" documentation="" name="setNewPasswordConfirmation" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="newPasswordConfirmation" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="188" value="" type="string" abstract="0" documentation="" name="newPassword" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="189" value="" type="string" abstract="0" documentation="" name="newPasswordConfirmation" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="194" abstract="0" documentation="" name="CreateAdminFormBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="198" type="string" abstract="0" documentation="" name="getUsername" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="199" type="string" abstract="0" documentation="" name="getPassword" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="200" type="void" abstract="0" documentation="" name="getPassConfirmation" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="201" type="void" abstract="0" documentation="" name="setPassConfirmation" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="passConfirmation" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="202" type="void" abstract="0" documentation="" name="setPassword" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="password" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="203" type="void" abstract="0" documentation="" name="setUsername" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="username" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="195" value="" type="string" abstract="0" documentation="" name="username" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="196" value="" type="string" abstract="0" documentation="" name="password" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="197" value="" type="string" abstract="0" documentation="" name="passConfirmation" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="204" abstract="0" documentation="" name="LoadConsultFormBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="206" type="string" abstract="0" documentation="" name="getConsult" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="207" type="void" abstract="0" documentation="" name="setConsult" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="consult" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="205" value="" type="string" abstract="0" documentation="" name="consult" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="208" abstract="0" documentation="" name="LoadFromLibraryFormBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="210" type="string" abstract="0" documentation="" name="getProgramKey" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="211" type="void" abstract="0" documentation="" name="setProgramKey" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="programKey" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="209" value="" type="string" abstract="0" documentation="" name="programKey" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="212" abstract="0" documentation="" name="LoadMyProgramsFormBean" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="213" abstract="0" documentation="" name="LoadProgramFormBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="215" type="string" abstract="0" documentation="" name="getProgram" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="216" type="void" abstract="0" documentation="" name="setProgram" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="program" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="214" value="" type="string" abstract="0" documentation="" name="program" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="217" abstract="0" documentation="" name="LoginFormBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="220" type="string" abstract="0" documentation="" name="getUsername" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="221" type="string" abstract="0" documentation="" name="getPassword" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="222" type="void" abstract="0" documentation="" name="setUsername" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="username" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="223" type="void" abstract="0" documentation="" name="setPassword" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="password" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="218" value="" type="string" abstract="0" documentation="" name="username" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="219" value="" type="string" abstract="0" documentation="" name="password" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="224" abstract="0" documentation="" name="LogoutFormBean" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="225" abstract="0" documentation="" name="ManageProgramsFormBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="227" type="string" abstract="0" documentation="" name="getActionToDo" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="228" type="void" abstract="0" documentation="" name="setActionToDo" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="actionToDo" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="231" type="void" abstract="0" documentation="" name="setProgramKey" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="programKey" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="232" type="void" abstract="0" documentation="" name="setOrigin" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="origin" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="233" type="string" abstract="0" documentation="" name="getProgramKey" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="234" type="string" abstract="0" documentation="" name="getOrigin" static="0" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="226" value="" type="string" abstract="0" documentation="" name="actionToDo" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="229" value="" type="string" abstract="0" documentation="" name="programKey" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="230" value="" type="string" abstract="0" documentation="" name="origin" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="235" abstract="0" documentation="" name="ManageUsersFormBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="237" type="string" abstract="0" documentation="" name="getUsername" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="238" type="void" abstract="0" documentation="" name="setUsername" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="username" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="236" value="" type="string" abstract="0" documentation="" name="username" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="239" abstract="0" documentation="" name="RegistryFormBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="240" type="string" abstract="0" documentation="" name="getPassword" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="241" type="string" abstract="0" documentation="" name="getUsername" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="243" type="void" abstract="0" documentation="" name="setPassword" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="password" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="244" type="void" abstract="0" documentation="" name="setUsername" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="username" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="247" type="string" abstract="0" documentation="" name="setPassConfirmation" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="passConfirmation" static="0" scope="200" /> </UML:Operation> <UML:Operation stereotype="" package="" xmi.id="248" type="string" abstract="0" documentation="" name="getPassConfirmation" static="0" scope="200" /> <UML:Attribute stereotype="" package="" xmi.id="242" value="" type="string" abstract="0" documentation="" name="password" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="245" value="" type="string" abstract="0" documentation="" name="username" static="0" scope="201" /> <UML:Attribute stereotype="" package="" xmi.id="246" value="" type="string" abstract="0" documentation="" name="passConfirmation" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="249" abstract="0" documentation="" name="ResetProgramFormBean" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="250" abstract="0" documentation="" name="SolutionsFormBean" static="0" scope="200" > <UML:Operation stereotype="" package="" xmi.id="251" type="string" abstract="0" documentation="" name="getOrigin" static="0" scope="200" /> <UML:Operation stereotype="" package="" xmi.id="252" type="void" abstract="0" documentation="" name="setOrigin" static="0" scope="200" > <UML:Parameter stereotype="" package="" xmi.id="1" value="" type="string" abstract="0" documentation="" name="origin" static="0" scope="200" /> </UML:Operation> <UML:Attribute stereotype="" package="" xmi.id="253" value="" type="string" abstract="0" documentation="" name="origin" static="0" scope="201" /> </UML:Class> <UML:Class stereotype="" package="" xmi.id="254" abstract="0" documentation="" name="StepFormBean" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="255" abstract="0" documentation="" name="VisitLibraryAsAdminFormBean" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="256" abstract="0" documentation="" name="VisitLibraryFormBean" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="257" abstract="0" documentation="" name="VisitUsersFormBean" static="0" scope="200" /> <UML:Class stereotype="" package="" xmi.id="261" abstract="0" documentation="" name="sistema" static="0" scope="200" /> </umlobjects> <diagrams> <diagram snapgrid="0" showattsig="1" fillcolor="#ffffc0" showgrid="0" showopsig="1" usefillcolor="1" snapx="10" snapy="10" showatts="1" xmi.id="1" documentation="" type="402" showops="1" showpackage="0" name="class diagram" localid="30000" showstereotype="1" showscope="1" font="Helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" > <widgets> <UML:ConceptWidget usesdiagramfillcolour="0" width="269" showattsigs="601" usesdiagramusefillcolour="0" x="136" linecolour="#ff0000" y="47" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="40" usefillcolor="1" showattributes="1" xmi.id="21" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,12,-1,5,50,0,0,0,0,0" /> <UML:ConceptWidget usesdiagramfillcolour="0" width="150" showattsigs="601" usesdiagramusefillcolour="0" x="197" linecolour="#ff0000" y="149" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="48" usefillcolor="1" showattributes="1" xmi.id="33" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,12,-1,5,50,0,0,0,0,0" /> <UML:ConceptWidget usesdiagramfillcolour="0" width="293" showattsigs="601" usesdiagramusefillcolour="0" x="16" linecolour="#ff0000" y="212" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="64" usefillcolor="1" showattributes="1" xmi.id="36" showoperations="1" showpackage="0" showscope="1" showstereotype="0" font="Helvetica,12,-1,5,50,0,0,0,0,0" /> <UML:ConceptWidget usesdiagramfillcolour="0" width="434" showattsigs="601" usesdiagramusefillcolour="0" x="197" linecolour="#ff0000" y="312" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="144" usefillcolor="1" showattributes="1" xmi.id="47" showoperations="1" showpackage="0" showscope="1" showstereotype="1" font="Helvetica,12,-1,5,50,0,0,0,0,0" /> </widgets> <messages/> <associations> <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="4" indexb="2" widgetbid="21" widgetaid="33" documentation="" type="511" > <linepath> <startpoint startx="272" starty="149" /> <endpoint endx="270" endy="87" /> </linepath> </UML:AssocWidget> <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="4" indexb="1" widgetbid="21" widgetaid="36" documentation="" type="511" > <linepath> <startpoint startx="162" starty="212" /> <endpoint endx="203" endy="87" /> </linepath> </UML:AssocWidget> <UML:AssocWidget totalcounta="2" indexa="1" totalcountb="4" indexb="3" widgetbid="21" widgetaid="47" documentation="" type="511" > <linepath> <startpoint startx="414" starty="312" /> <endpoint endx="337" endy="87" /> </linepath> </UML:AssocWidget> </associations> </diagram> <diagram snapgrid="0" showattsig="1" fillcolor="#ffffc0" showgrid="0" showopsig="1" usefillcolor="1" snapx="10" snapy="10" showatts="1" xmi.id="55" documentation="" type="402" showops="1" showpackage="0" name="prolix-exceptions" localid="30000" showstereotype="1" showscope="1" font="Helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" > <widgets> <UML:ConceptWidget usesdiagramfillcolour="1" width="136" showattsigs="601" usesdiagramusefillcolour="1" x="30" linecolour="none" y="153" showopsigs="601" usesdiagramlinecolour="1" fillcolour="none" height="48" usefillcolor="1" showattributes="1" xmi.id="56" showoperations="1" showpackage="0" showscope="1" showstereotype="1" font="Helvetica,12,-1,5,50,0,0,0,0,0" /> <UML:ConceptWidget usesdiagramfillcolour="1" width="158" showattsigs="601" usesdiagramusefillcolour="1" x="144" linecolour="none" y="209" showopsigs="601" usesdiagramlinecolour="1" fillcolour="none" height="48" usefillcolor="1" showattributes="1" xmi.id="57" showoperations="1" showpackage="0" showscope="1" showstereotype="1" font="Helvetica,12,-1,5,50,0,0,0,0,0" /> <UML:ConceptWidget usesdiagramfillcolour="1" width="214" showattsigs="601" usesdiagramusefillcolour="1" x="220" linecolour="none" y="151" showopsigs="601" usesdiagramlinecolour="1" fillcolour="none" height="48" usefillcolor="1" showattributes="1" xmi.id="58" showoperations="1" showpackage="0" showscope="1" showstereotype="1" font="Helvetica,12,-1,5,50,0,0,0,0,0" /> <UML:ConceptWidget usesdiagramfillcolour="1" width="202" showattsigs="601" usesdiagramusefillcolour="1" x="333" linecolour="none" y="214" showopsigs="601" usesdiagramlinecolour="1" fillcolour="none" height="48" usefillcolor="1" showattributes="1" xmi.id="59" showoperations="1" showpackage="0" showscope="1" showstereotype="1" font="Helvetica,12,-1,5,50,0,0,0,0,0" /> <UML:ConceptWidget usesdiagramfillcolour="0" width="123" showattsigs="601" usesdiagramusefillcolour="0" x="197" linecolour="#ff0000" y="29" showopsigs="601" usesdiagramlinecolour="0" fillcolour="#ffffc0" height="48" usefillcolor="1" showattributes="1" xmi.id="60" showoperations="1" showpackage="0" showscope="1" showstereotype="1" font="Helvetica,12,-1,5,50,0,0,0,0,0" /> </widgets> <messages/> <associations/> </diagram> <diagram snapgrid="0" showattsig="1" fillcolor="#ffffc0" showgrid="0" showopsig="1" usefillcolor="1" snapx="10" snapy="10" showatts="1" xmi.id="258" documentation="" type="402" showops="1" showpackage="0" name="transformation-diagram" localid="30000" showstereotype="1" showscope="1" font="Helvetica,12,-1,5,50,0,0,0,0,0" linecolor="#ff0000" > <widgets> <UML:ConceptWidget usesdiagramfillcolour="1" width="168" showattsigs="601" usesdiagramusefillcolour="1" x="120" linecolour="none" y="66" showopsigs="600" usesdiagramlinecolour="1" fillcolour="none" height="272" usefillcolor="1" showattributes="1" xmi.id="141" showoperations="1" showpackage="0" showscope="1" showstereotype="1" font="Helvetica,12,-1,5,50,0,0,0,0,0" /> <UML:ConceptWidget usesdiagramfillcolour="1" width="82" showattsigs="601" usesdiagramuse... [truncated message content] |