00891tfc

133 views
107 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
133
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

00891tfc

  1. 1. Restaurant-OnLineJuan Carlos Serra DiazETIGVerónica Peña Pastor13 de enero de 2009
  2. 2. TFC – Restaurant-OnLine P á g i n a | 2DedicatoriaAnte todo destacar que aunque este TFC haya sido fruto de mi esfuerzo,éste no hubiese podido llevarse a cabo sino fuese por el apoyo recibido entodo momento por las personas que me rodean, tanto en el hogar como enel trabajo. Por ello, deseo agradecer la paciencia demostrada por miscompañeros de trabajo cuando expresaba pensamientos en voz alta orealizaba explicaciones de lo que iba realizando a lo largo de mis estudios.Mención especial merece mi esposa Geli y mis hijos, Virginia, David y Carlosque han tenido que padecer mis horas de ausencia dedicadas a la carrera y,sobre todo, a mis cambios de humor ante las dificultades de los trabajosrealizados durante todos estos años, especialmente, durante este últimosemestre. Por ello, gracias a todos por vuestra comprensión y paciencia.
  3. 3. TFC – Restaurant-OnLine P á g i n a | 3ResumenLa presente memoria pretende dar una visión general de los pasosseguidos, los componentes utilizados y las funcionalidades instaladas en laaplicación Restaurant-OnLine. Esta es una aplicación de comercioelectrónico que, aunque no incluye la posibilidad de realizar el pago online,ofrece una alternativa a la realización de pedidos a establecimientos derestauración.Para su elaboración se ha utilizado la arquitectura Java EE o Java Platform,Enterprise Edition (J2EE hasta la versión 1.4), muy apropiada para eldesarrollo de aplicaciones web empresariales en lenguaje de programaciónJava.Tras la finalización de este trabajo final de carrera se ha obtenido unimportante conocimiento de esta plataforma, teniendo en cuenta queinicialmente se desconocía casi por completo. Por falta de tiempo no todoslos conocimientos adquiridos han podido ser aplicados en Restaurant-OnLine, pero al menos han servido de punto de partida para empezar adisfrutar de esta tecnología.
  4. 4. TFC – Restaurant-OnLine P á g i n a | 4ÍndiceCapítulo 1 Introducción................................................................................................ 7Justificación ............................................................................................................ 7Objetivos................................................................................................................ 7Enfoque y método seguido........................................................................................ 8Planificación............................................................................................................ 9Fase planificación................................................................................................. 9Fase especificación y análisis ................................................................................. 9Fase diseño ....................................................................................................... 10Fase implementación y testing............................................................................. 10Fase documentación ........................................................................................... 10Producto obtenido.................................................................................................. 11Breve descripción de los otros capítulos de la memoria .............................................. 11Capítulo 2 Funcionamiento del sistema ........................................................................ 12Componentes de Restaurant-OnLine ........................................................................ 14Base de datos (capa persistencia) ........................................................................ 14Capa Modelo o lógica de negocio (Model) .............................................................. 14Capa Controlador (Controller).............................................................................. 17Capa presentación o Vista (View) ......................................................................... 18Capítulo 3 Análisis de las funcionalidades del sistema.................................................... 20Descripción de las funcionalidades ........................................................................... 20Identificación..................................................................................................... 20Gestión de artículos............................................................................................ 20Gestión de pedidos............................................................................................. 21Gestión de usuarios............................................................................................ 22Casos de uso ........................................................................................................ 22Subsistema de Identificación ............................................................................... 22Subsistema de gestión de artículos....................................................................... 23Subsistema de gestión de pedidos........................................................................ 24Subsistema de gestión de usuarios....................................................................... 26Diagramas de casos de uso..................................................................................... 27Casos de uso del subsistema de identificación........................................................ 27Casos de uso del subsistema de gestión de artículos............................................... 28Casos de uso del subsistema de gestión de pedidos................................................ 28Casos de uso del subsistema de gestión de usuarios............................................... 29Capítulo 4 Diseño...................................................................................................... 30Capa modelo......................................................................................................... 30
  5. 5. TFC – Restaurant-OnLine P á g i n a | 5Clases correspondientes a los Transfer Object........................................................ 30Clases DAO ....................................................................................................... 31Capa Controlador .................................................................................................. 32Clases comunes ................................................................................................. 32Clases parte Cliente............................................................................................ 32Clases parte Empresa ......................................................................................... 32Capa Vista o Presentación....................................................................................... 34Capítulo 5 Funcionamiento de Restaurant-OnLine.......................................................... 36Inicio ................................................................................................................... 36Consultar artículos................................................................................................. 37Consultar nota de pedido........................................................................................ 38Realizar pedido ..................................................................................................... 38Confirmar pedido................................................................................................... 39Consultar pedidos tramitados.................................................................................. 39Registro de clientes ............................................................................................... 40Menú de administración.......................................................................................... 40Gestión de pedidos ................................................................................................ 41Consultar pedidos .............................................................................................. 41Admitir pedidos.................................................................................................. 42Anular pedidos................................................................................................... 42Gestión de artículos ............................................................................................... 43Consultar artículos ............................................................................................. 43Modificar artículo................................................................................................ 43Alta artículos ..................................................................................................... 44Baja artículos .................................................................................................... 44Gestión de usuarios ............................................................................................... 45Consulta usuarios............................................................................................... 45Modificación de usuarios ..................................................................................... 46Alta de usuarios ................................................................................................. 46Baja de usuarios ................................................................................................ 47Capítulo 6 Conclusiones ............................................................................................. 48Capítulo 7 Glosario.................................................................................................... 49Capítulo 8 Bibliografía................................................................................................ 50
  6. 6. TFC – Restaurant-OnLine P á g i n a | 6Índice de figurasCapítulo 2 – Funcionamiento del sistemaFigura 2.1. Arquitectura MVC-Modelo 2…………………………………………………………………… 13Figura 2.2. Arquitectura Struts……………………………………………................................14Capítulo 3 – Análisis de las funcionalidades del sistemaFigura 3.1. Diagrama de casos de uso del subsistema de identificación………………..28Figura 3.2. Diagrama de casos de uso del subsistema de gestión de artículos……..29Figura 3.3. Diagrama de casos de uso del subsistema de gestión de pedidos……… 29Figura 3.4. Diagrama de casos de uso del subsistema de gestión de usuarios……..30Capítulo 4 – DiseñoFigura 4.1. Diagrama de clases Transfer Object............................................... 31Figura 4.2. Diagrama de clases no persistentes............................................... 32Figura 4.3. Diagrama de clases e interficies DAO............................................. 32Figura 4.4. Diagrama de clases e interficies factoría de servicio......................... 32Capítulo 5 – Funcionamiento del Restaurant-OnLineFigura 5.1. Inicio de Restaurant-OnLine…………………………………………………………………..37Figura 5.2. Consulta categoría de artículos lado cliente.………………………………………… 38Figura 5.3. Consulta artículos lado cliente………………………………………………………………. 38Figura 5.4. Consulta nota de pedido lado cliente……………………………………………………. 39Figura 5.5. Login de clientes……………………………………………………………………………………. 39Figura 5.6. Confirmación nota pedido de cliente……………………………………………………..40Figura 5.7. Consulta pedidos pendientes por cliente……………………………………………….40Figura 5.8. Registro de clientes………………………………………………………………………………..41Figura 5.9. Menú administración lado empresa………………………………………………………. 41Figura 5.10. Consulta pedidos lado empresa……………………………………………………………42Figura 5.11. Lista pedidos según criterio de consulta lado empresa……………………… 42Figura 5.12. Admisión pedidos………………………………………………………………………………… 43Figura 5.13. Anulación pedidos……………………………………………………………………………….. 43Figura 5.14. Selección criterio de consulta de artículos lado empresa……………………44Figura 5.15. Modificación artículo……………………………………………………………………………. 44Figura 5.16. Alta artículos……………………………………………………………………………………….. 45Figura 5.17. Baja artículos………………………………………………………………………………………. 45Figura 5.18. Selección criterio de consulta de usuarios…………………………………………. 46Figura 5.19. Lista tipo de usuarios…………………………………………………………………………. 46Figura 5.20. Modificación usuario……………………………………………………………………………. 47Figura 5.21. Alta usuario…………………………………………………………………………………………. 47Figura 5.22. Baja usuario……………………………………………………………………………………….. 48
  7. 7. TFC – Restaurant-OnLine P á g i n a | 7Capítulo 1 IntroducciónJustificaciónLas posibilidades que brinda la plataforma de Internet para la proliferaciónde transacciones comerciales son inmensas y han sido el motivo principalque me han impulsado a elegir como trabajo final de carrera (TFC) lacreación de una aplicación de comercio electrónico.Mi conexión con el mundo de la hostelería desde los primeros años de miinfancia han hecho que me decantara por la temática de la venta de lasespecialidades elaboradas por un establecimiento de restauración. Heobservado a lo largo de estos años que, en muchas ocasiones, los clientesdesean realizar los pedidos con cierta antelación (con un día o, incluso,varios días), lo que implica la molestia de tener que personarse en elestablecimiento o efectuar llamadas telefónicas que pueden producir ciertadesconfianza en el establecimiento. Una aplicación que brinde la posibilidadde realizar estos mismos pedidos y que, además, confiera cierta seguridad aambas partes, es la motivación principal de este trabajo.ObjetivosAsí, pues, el objetivo principal que se ha perseguido afrontando esteproyecto ha sido la creación de una aplicación de comercio electrónico queposibilite la realización de pedidos a un establecimiento hostelero. Con ellono se pretende suplir, sino mas bien complementar, los canales existentespara realizar este tipo de operaciones (la telefónica o la de personarse en elestablecimiento).Para afrontar este reto la tecnología JEE puede ser muy útil, ya queactualmente se ha convertido en un estándar en el desarrollo deaplicaciones web empresariales. La idea inicial ha sido la utilización deuna parte importante de JEE, la tecnología Servlet/JSP.Al tratarse de una tecnología prácticamente desconocida para mi, se hatenido que dedicar gran parte del tiempo disponible para el desarrollo delproyecto, al estudio de los diferentes componentes y herramientasexistentes en el mercado para ello.Finalmente, se ha pretendido obtener un producto que fuese robusto, defácil crecimiento y mantenimiento, y que los cambios y mejoras futuros noobligasen a recomponer toda la aplicación. Por ello se ha querido utilizar elpatrón de diseño para Servlets y JSP (Java Server Pages) más extendido, el
  8. 8. TFC – Restaurant-OnLine P á g i n a | 8Modelo 2, también llamado Model-View-Control (MVC), popularizado porJakarta Struts Framework.Enfoque y método seguidoEn primer lugar, se han buscado los componentes de la tecnología J2EEque pudiesen ser utilizados para afrontar con éxito un reto de estascaracterísticas. Tras profundizar en el estudio de JEE, se ha optado, comose indicó anteriormente, en utilizar la tecnología de los Servlets y JSPs,ideal para este tipo de aplicaciones web.A continuación, se ha visto la necesidad de utilizar patrones de diseño, quenos ofrecen como ventaja principal, el de reducir el tiempo de desarrollo, yaque ayudan a descomponer un sistema complejo en partes másmanejables, a la vez que facilitan el posterior mantenimiento de laaplicación sobre todo cuando acaba teniendo unas dimensionesconsiderables.Las mejores prácticas en este campo aconsejan utilizar el patrón de diseñoMVC, mencionado antes. Este nos facilita una clara separación entre lascapas intervinientes en una aplicación web, esto es, la de modelo denegocio (Model), la de presentación o vista (View) y la del controlador(Controller). Para ello, se ha optado por el Struts Framework que se haconvertido en un entorno ideal para el desarrollo de aplicaciones web queutilizan el MVC.Además, también se ha visto conveniente utilizar el patrón Data AccessObject (DAO), patrón que encapsula no sólo las fuentes de datos sinotambién la forma en la que accedemos a ellas.Para poder utilizar estas tecnologías se ha tenido que seleccionar lasherramientas y los componentes necesarios para ser instalados en elordenador. Finalmente, tras instalar varias versiones de diferente softwarelibre, la configuración final ha quedado como sigue:- Eclipse, versión 3.3.2 como entorno de programación para Java, condiferentes plugins (los Web Tools Platform (WTP), los Data ToolsPlatform (DTP), y, sobre todo, JBossTools 2.1.2GA-ALL que ha permitoutilizar Struts 1.1 y JSP 2.3).- Apache Tomcat, versión 5.5, como contenedor de servlets y servidorweb.
  9. 9. TFC – Restaurant-OnLine P á g i n a | 9- MySQL Server 5.0, como sistema de gestión de base de datos relacional.Para ayudar en la administración e interacción con la base de datos seha utilizado MySQL Administrator y MySQL Query Browser.- Driver mysql-connector-java 5.1.6.- Macromedia Dreamweaver 8 como editor de páginas web.PlanificaciónEl TFC se ha planificado siguiendo las fases habituales del ciclo de vida delsoftware (planificación, especificación y análisis, diseño, implementación ytesting, y documentación), marcadas por las fechas de entrega de lasdiferentes PACs.Fase planificaciónFase especificación y análisis1. Planificación 13 días 17/09/08 1/10/081.1. Presentaciones y estudio plan docente 3 días 17/09/08 20/09/081.2. Elaboración del plan de trabajo 11 días 21/09/08 30/09/081.2.1. Descripción general del proyecto 1 día 21/09/08 21/09/081.2.2. Objetivos 2 días 22/09/08 23/09/081.2.3. Descripción general funcionalidades 5 días 24/09/08 28/09/081.2.4. Planificación 2 días 29/09/08 30/09/081.3. Entrega Plan de trabajo (PAC 1) 1 día 1/10/08 1/10/082. Especificación y Análisis 16 dies 1/10/08 16/10/082.1. Descripción detallada del projecte 1 día 1/10/08 1/10/082.2. Composición software 2 días 2/10/08 3/10/082.3. Descripción precisa funcionalidades 4 días 4/10/08 7/10/082.3.1. Subsistema Identificación 1 día 4/10/08 4/10/082.3.2. Subsistema Productos 1 día 5/10/08 5/10/082.3.3. Subsistema Gestión Pedidos 1 día 6/10/08 6/10/082.3.4. Subsistema Gestión Usuarios 1 día 7/10/08 7/10/082.4. Casos de uso: Identificación, relaciones ydocumentación textual8 días 8/10/08 15/10/082.4.1. Subsistema Identificación 2 días 8/10/08 9/10/082.4.2. Subsistema Productos 2 días 10/10/08 11/10/082.4.3. Subsistema Gestión Pedidos 2 días 12/10/08 13/10/082.4.4. Subsistema Gestión Usuarios 2 días 14/10/08 15/10/082.5. Glosario 1 día 16/10/08 16/10/08
  10. 10. TFC – Restaurant-OnLine P á g i n a | 10Fase diseñoFase implementación y testingFase documentaciónSe ha intentado, y creo que conseguido, cumplir con la planificaciónprevista. La verdad es que ha faltado tiempo para poder repasar y puliradecuadamente la finalización de cada una de las fases. Sobre todo en lafase de implementación, se ha trabajado a contrarreloj. No se ha podido,por falta de tiempo y experiencia, realizar el diseño web deseado.Finalmente se ha optado por dar prioridad al correcto funcionamiento de laaplicación, y a los objetivos propuestos para la aplicación: robustez,reusabilidad y escalabilidad.3. Diseño 15 días 17/10/08 31/10/083.1. Diagrama de clases de entidad (fichas CRC) 4 días 17/10/08 20/10/083.2. Diagramas de estado, secuencia y colaboración mássignificativos6 días 21/10/08 26/10/083.3. Diagrama de persistencia 2 días 27/10/08 28/10/083.4. Interficies gráficas 2 días 29/10/08 30/10/083.5. Consideraciones finales y entrega PAC 2 1 días 31/10/08 31/10/084. Implementación y Testing 46 días 02/11/08 17/12/084.1. Implementación 40 días 2/11/08 11/12/084.1.1. Subsistema Identificación 9 días 2/11/08 10/11/084.1.2. Subsistema Productos 9 días 11/11/08 19/11/084.1.3. Subsistema Gestión Pedidos 9 días 20/11/08 28/11/084.1.4. Subsistema Gestión Usuarios 9 días 29/11/08 7/12/084.1.5. Puesta a punto 4 días 8/12/08 11/12/084.2. Testing 6 días 12/12/08 17/12/084.2.1. Subsistema Identificación 1 día 12/12/08 12/12/084.2.2. Subsistema Productos 1 día 13/12/08 13/12/084.2.3. Subsistema Gestión Pedidos 1 día 14/12/08 14/12/084.2.4. Subsistema Gestión Usuarios 1 día 15/12/08 15/12/084.2.5. Puesta a punto y entrega PAC 3 2 días 16/12/08 17/12/085. Documentación 28 días 17/12/08 14/01/095.1. Memoria TFC 16 días 17/12/08 2/01/095.2. Presentación TFC 10 días 3/01/09 12/01/095.3. Entrega final 2 días 13/01/09 14/01/09
  11. 11. TFC – Restaurant-OnLine P á g i n a | 11Producto obtenidoEl producto final que se ha obtenido ha sido una aplicación, el Restaurant-OnLine, que permite, por el lado cliente, dar a conocer los productoselaborados por un establecimiento hostelero a la vez que ofrece laposibilidad de hacer pedidos online, previo registro, y, por el lado empresa,gestionar los pedidos recibidos y administrar el sitio web. Para ello sedistinguen cuatro tipos de usuarios:- visitante, que puede acceder al restaurante y conocer susespecialidades, así como añadir artículos a la nota de pedido (similaral típico carrito de la compra), que finalmente, para ser tramitadonecesita de un registro y de un acceso con nombre de usuario ycontraseña.- cliente, usuario que ya está registrado, y puede acceder alrestaurante previa introducción de su nombre de usuario ycontraseña, para realizar pedidos o consultar los ya realizados.- empleado, usuario que también se le pide identificación, y que puedegestionar los pedidos y artículos presentes en la web.- administrador, figura que, además de las funcionalidades inherentesal empleado, podrá gestionar los usuarios del sistema.Breve descripción de los otros capítulos de la memoriaEn los siguientes capítulos de la memoria se pretende dar una visióndetallada del desarrollo de la aplicación Restaurant-OnLine. En el capítulo 2se explica el funcionamiento general de la aplicación a través de describirlos componentes de JEE utilizados a tal efecto. En el capítulo 3 se analizancon cierto detalle las funcionalidades implementadas. Las clases que seutilizan para el diseño son especificadas en el capítulo 4. En el siguientecapítulo se pretende con ayuda de varias capturas de pantalla describir elfuncionamiento práctico de Restaurant-OnLine. Finalmente, los últimoscapítulos lo componen las conclusiones, así como un glosario y labibliografía utilizada.
  12. 12. TFC – Restaurant-OnLine P á g i n a | 12Capítulo 2 Funcionamiento del sistemaJEE es una plataforma para ejecutar aplicaciones Java del lado servidor.Actualmente es muy utilizada a nivel empresarial para la creación deaplicaciones web. Una parte importante de esta tecnología la componen lossiguientes componentes web: Servlets y JSP (Java Server Pages). En lasarquitecturas cliente-servidor, el papel principal que realizan estoscomponentes es el de recibir peticiones del lado cliente (que vienen en laforma de peticiones HTTP) para posteriormente generar contenidosdinámicos o realizar alguna lógica de negocio, y devolver la respuesta alcliente.Struts es un framework de código abierto usado para construir aplicacionesweb en Java, basado en el patrón de diseño MVC y diseñado utilizandoprincipalmente las tecnologías Java-Server Pages (JSP) y Servlets. Como yase ha mencionado más arriba, la arquitectura del Modelo 2, MVC, facilita eldesarrollo, el mantenimiento y la escalabilidad de la aplicación. Esto es así,principalmente, porque introduce entre el navegador y las JSP un servletcontrolador que se encarga de atender las peticiones del lado cliente, comose muestra en la figura siguiente:Contenedor Servlet Base de datosFigura 2.1: Arquitectura MVC-Modelo 2.Struts dispone de un controlador central, que una vez inicializado, analizaun fichero de configuración (struts-config.xml) y lo utiliza para desplegarotros objetos de la capa de control. La Configuración Struts define,principalmente, los ActionMappings (mapeos de acciones) para la aplicación.El Servlet Controlador de Struts consulta estos ActionMappings y envía laspeticiones HTTP a otros componentes del framework, ya seanJavaServerPages u otras Action, atendiendo, así, las peticiones y3Redirecciona2Instancia5Respuesta1Petición(Controlador)Servlet(Vista)JSP(Modelo)Navegadorweb
  13. 13. TFC – Restaurant-OnLine P á g i n a | 13devolviendo las respuesta al cliente (generalmente un navegador web). Losmapeos ayudan al controlador a convertir las peticiones en acciones de laaplicación. Cada acción actúa como un adaptador entre la petición y la capade modelo. Una vez la petición es tratada, el flujo vuelve al controlador yéste devuelve los resultados a una vista asignada, proporcionando, de estaforma, un ligero acoplamiento entre la capa Vista y la capa Modelo.La siguiente figura muestra una visión general de la arquitectura Struts:Figura 2.2: Arquitectura StrutsLa aplicación de este TFC intenta hacer uso de prácticamente toda latecnología inherente de Struts, puesto que utiliza:ActionForms , que representan los formularios HTML , usados paratransferir los datos entre las capas Vista y Controlador.Acciones, tanto únicas (Action) como comunes (DispatchAction).ActionMappings que mapean las características de las acciones en elfichero xml central de Struts, struts-config.xml.Tiles Framework, que permite la creación de páginas web asemblandodiferentes tiles o plantillas.Struts Tags, librería de etiquetas propia de Struts.AccionsErrors para indicar los errores en la validación de formulariosActionForm.Validation Framework, que evita tener que crear nuestros propiosmétodos de validación de campos en formularios.Contenedor, que nos guarda toda la información de la sesión.Servicios, para conectarnos a la base de datos, en nuestro casomediante un pool de conexiones.
  14. 14. TFC – Restaurant-OnLine P á g i n a | 14También se ha intentado hacer uso de varias de las mejores prácticas en laimplementación de Struts, como son:- Creación de acciones comunes- Evitar el doble “form submission”, por ejemplo, en la página deregistro, que puede ocurrir al hacer más de un click en aceptar antesde ser envíada la respuesta desde el servidor o al volver a la páginadesde los botones atrás o actualizar.- uso de una sola ActionForm para formularios similares.- evitar incluir lógica de negocio en los ActionForm.- uso de patrones de diseño como Business Delegate, delegando a lacapa de modelo las funcionalidades propias de esta capa, en lugar deimplementarlo en las acciones (Action).-Componentes de Restaurant-OnLineA continuación describiré con cierto detalle los diferentes componentesanteriormente mencionados que utiliza la aplicación.Base de datos (capa persistencia)Se utiliza una base de datos relacional implementado sobre el servidorMySQL. La conexión a esta base de datos es gestionada por el propioservidor Tomcat, así que nuestra aplicación únicamente instanciará unaconexión existente.Capa Modelo o lógica de negocio (Model)TransferObject o ValueObjectEl TransferObject encapsula una unidad de información de la fuente dedatos. Viene a ser un bean de tabla (JavaBean) que, como tal, representauna tabla de la base de datos. Se utilizan los siguientes TransferObjects,con sus correspondientes getters y setters:- BaseVO, una superclase de la cual descenderán otros.- User para representar un usuario.- Artículo para representar un artículo.- Categoria que representa una categoria de artículos.- Comanda para representar un pedido.
  15. 15. TFC – Restaurant-OnLine P á g i n a | 15- LiniaComanda que representa el detalle del pedido, los artículos delcual se compone.Además, disponemos de unas clases auxiliares que nos sirven para mostrardiferentes listas desplegables en nuestras páginas JSP, como son:- ListaCategoria para poder acceder a la lista de categorías deartículos.- Hora, clase que nos sirve para mostrar las horas de recepción delpedido.- Fecha, análoga a la anterior.ServicioPara implementar el servicio que conectará con la base de datos y quecontenga todos los métodos de negocio, se dispone de una interficie,ICarritoService. Esta será utilizada por parte del cliente como único nexo deunión con la lógica de negocio, y desde ella podrá invocar los diferentesmétodos que la componen.Los métodos implementados en CarritoServiceImpl serán los siguientes:- init() que retorna la conexión con la base de datos, que se llama sólouna vez al instanciar la clase.- insertUser(user), que añade a la base de datos el usuario pasadocomo parámetro.- getListaUsuario(tipoUsuario), que devuelve una lista de un tipo deusuarios, pasado como parámetro.- findUser(nomUsuario), que devuelve un usuario a partir de sunombre de usuario.- findUserEmpresa(nomUsuario), que devuelve un usuario del tipoempleado o administrador a partir de su nombre.- validar(usuario, contraseña) , que comprueba que el usuario existe yque la contraseña corresponde al usuario.- userUpdate(user), que actualiza los datos de un usuario con las datosnuevos pasados como parámetro.- deleteUser(nomUsuario), que borra de la base de datos el usuariocuyo nombre es pasado como parámetro.- findArticulo(identificador), que devuelve un artículo a partir de suidentificador.- getListaArticulos(categoría, visible), que devuelve la lista de artículosde la categoría indicada como parámetro, y según se indique todos osólo los que sean visible en la web.- getListaCatArt(), que retorna la lista de categorías de artículosexistentes.
  16. 16. TFC – Restaurant-OnLine P á g i n a | 16- articuloUpdate(articulo), que actualiza los datos de un artículo con lasdatos nuevos pasados como parámetro.- insertArticulo(articulo), que añade a la base de datos el artículopasado como parámetro.- deleteArticulo(código), que borra de la base de datos el artículo cuyoidentificador es pasado como parámetro.- insertComanda(comanda), que añade a la base de datos el pedidopasado como parámetro.- insertDetallePedido(pedido), que añade a la base de datos el detalledel pedido pasado como parámetro.- ultimoIdGenerado(), que devuelve la clave primaria del último pedidointroducido en la base de datos.- getListPedClienPend(nomUsuario), que devuelve una lista de lospedidos pendientes del usuario cuyo nombre se pasa comoparámetro.- getPedClienPendDetall(identificador), que retorna el detalle delpedido pasado como parámetro.- getListaPedidos(nomUsuario), que devuelve la lista de pedidos delusuario cuyo nombre pasamos como parámetro.- findIdComanda(identificador), que devuelve el pedido cuyoidentificador pasamos como parámetro.- getListaEstadoPed(estado), que retorna la lista de pedidos que sehayan en el estado que pasamos como parámetro.- getListaFechaPed(inicio, fin), que devuelve una lista de pedidos quese hallan entre las fechas indicadas como parámetros.- admitirPedido( identificador), que pasa el pedido cuyo identificador seindica como parámetro del estado pendiente al estado admitido.- getListPedAnulables(nomUsuario), que devuelve una lista de pedidospertenecientes al usuario cuyo nombre pasamos como parámetro,que se encuentran en estado pendiente o admitido.- anularPedido(identificador), que deja el pedido cuyo identificador sepasa como parámetro en estado anulado.- cambioContraseña(nombre, nuevaContraseña), que modifica lacontraseña perteneciente al usuario cuyo nombre pasamos comoparámetro.- articuloPedido(identificador), que indica si el pedido cuyo identificadores pasado como parámetro, se encuentra en los estados pendiente oadmitido.También disponemos de una interficie factoria de servicios y la clase que laimplementa que permitirá al usuario crear el servicio anterior y hacer usode él. La factoría de servicios se implementa a través de la posibilidad deextensión y personalización que ofrece Struts. Para la extensión se utiliza,aquí, el mecanismo de plug-in, esto es, una clase Java que se inicializa
  17. 17. TFC – Restaurant-OnLine P á g i n a | 17cuando la aplicación empieza a ejecutarse y se destruye cuando laaplicación finaliza. El plug-in necesita declararse en el fichero deconfiguración de Struts bajo el elemento <plug-in>.Capa Controlador (Controller)La capa controlador forma parte del entorno Struts, por lo que haremos usode su Api. En Struts sólo existe un componente controlador: el servletActionServlet. Existe una única instancia de este servlet por cada aplicaciónweb y su función es la de procesar todas las peticiones que afectan almodelo de la aplicación. Para cada petición, el ActionServlet selecciona einvoca a la clase Action encargada de ejecutar la lógica de negocioasociada.Veamos algunas las clases fundamentales que componen esta capa.La clase org.apache.struts.action.ActionMappingUn ActionMapping representa la información que el ActionServlet conoceacerca de una asignación-petición Action concreta. Esta información espasada al método execute() de la clase Action, permitiendo, de estamanera, que esta clase pueda acceder directamente a esta información.La clase org.apache.struts.action.ActionUn Action es un adaptador entre el contenido de una petición HTTP y lalógica de negocio que debería ejecutarse para procesar dicho contenido.Para cada petición, el ActionServlet selecciona la clase Action apropiada,crea una instancia de la misma (si no existe) y llama al método execute().La clase org.apache.struts.action.ActionForwardUn objeto ActionForward identifica dónde debería reenviar el control elActionServlet (por ejemplo a una JSP) para proporcionar la respuestaapropiada. La clase Action puede crear dinámicamente instancias de la claseActionForward o utilizar las contenidas en el objeto ActionMapping.En esta aplicación, para personalizar esta capa se ha extendido la claseorg.apache.struts.action.Action creando una clase abstractaCustomBaseAction para disponer cada vez que invoquemos una acción enStruts una instancia del servicio que hemos implementado en la capa demodelo, almacenado en el contexto del ActionServlet. Lo mismo hacemoscon la clase org.apache.struts.action. DispatchAction enCustomDispatchAction
  18. 18. TFC – Restaurant-OnLine P á g i n a | 18Las métodos más importantes son los crean el servicio para el cliente y elque permite obtener el contenedor del usuario con los datos de la sesión o,en caso de no existir todavía, crear este contenedor. La clase queimplementa este contenedor es UserContainer, que contendrá la nota depedido y, en caso de haber iniciado sesión, también la información delusuario.Para trabajar con la nota de pedido en memoria, es decir, sin hacerlopersistente, lo incluimos dentro del contenedor. Para ello, utilizamos lasclases Pedido y ArticuloCestaPedido. El primero implementa una lista queguardará los diferentes artículos que componen la nota de pedido, con susmétodes principales de añadir, borrar, actualizar u obtención del importetotal. Y el segundo representará el artículo de la cesta, con sus métodosgetters y setters correspondientes.Capa presentación o Vista (View)Es en la capa de presentación donde utilizaremos el potencial de Struts. Unavez implementadas todas las acciones de Struts, nos queda elaborar laparte de la interfaz con la que trabajará el usuario. Para ello, se utiliza latecnología JSP. Además se utilizará parte de la librería de etiquetas, Tags,que nos proporciona Struts, esto es:- struts-html- struts-logic- struts-bean- struts-tilesque nos permitirán realizar tareas relacionadas con el diseño HTML, la lógica(iteraciones, condiciones, etc) y trabajar con los beans en los ActionForms.Se ha intentado, ante todo, evitar el uso de scriplets para no incluir códigojava embebido dentro de las páginas JSP. De esta forma, obtendremos uncódigo más limpio y legible, a la vez que evitaremos que el creador de laspáginas de presentación deba tener grandes conocimientos deprogramación.También se ha utilizado, como se ha mencionado ya, el paquete Tiles deStruts para trabajar con plantillas de forma más fácil, y evitar quemodificaciones en el diseño obliguen a hacer cambios en cada una de laspáginas JSP afectadas. Para ello se utiliza el archivo xml tiles-defs, propiode Struts.Finalmente, se ha de mencionar que se ha hecho uso del ValidationFramework para la validación de formularios. Esto ha evitado tener queescribir código Java e implementar el método valídate() en cadaActionForm. La lógica de la validación está configurada en una serie de
  19. 19. TFC – Restaurant-OnLine P á g i n a | 19reglas de validación predefinidas en el archivo validator-rules.xml. Luego,en otro archivo, en validation.xml, se indica qué reglas serán utilizadas paracada ActionForm en particular.En prácticamente toda la aplicación, se ha usado la validación del ladoservidor, en contraposición a la del lado cliente. De esta forma, se haevitado la incorporación de java-script, haciendo el sitio web más amigabley más acorde con las normas de accesibilidad de páginas web.
  20. 20. TFC – Restaurant-OnLine P á g i n a | 20Capítulo 3 Análisis de las funcionalidades del sistemaPara facilitar el desarrollo del proyecto, se han distribuido el conjunto defuncionalidades de la aplicación en cuatro subsistemas:Subsistema de IdentificaciónSubsistema de gestión de artículosSubsistema de gestión de pedidosSubsistema de gestión de usuariosDescripción de las funcionalidadesIdentificaciónEsta funcionalidad permitirá la identificación del usuario como cliente,empleado o administrador.El usuario introducirá su nombre de usuario y contraseña y el sistemavalidará estos datos. En el caso que el usuario esté dado de alta en elsistema y no tenga bloqueado el acceso, se le permitirá entrar. En casocontrario se le advertirá que sus datos no son correctos.Además este subsistema incluirá una utilidad para efectuar el cambio decontraseña. Para ello se le pedirá que introduzca el nombre de usuario y lacontraseña actual y, posteriormente, que introduzca dos veces lacontraseña nueva, que deberá ser diferente a la actual.Gestión de artículosConsultar artículosEl visitante o el cliente dispondrán en el sitio web de unos enlaces que lepermitirán consultar la lista de artículos que ofrece el restauranteaccediendo a la categoría o familia de artículos específica.En el caso de los empleados o administradores, éstos también podránacceder desde su página de inicio a esta utilidad.
  21. 21. TFC – Restaurant-OnLine P á g i n a | 21Dar de alta, de baja o modificar artículosEstas funcionalidades serán exclusivas de los usuarios empleado yadministrador, que les permitirá llevar un control de los artículos y de suscaracterísticas en cada momento.Gestión de pedidosRealizar pedidosEl cliente tendrá la posibilidad de realizar pedidos. Para ello dispondrá de su‘nota de pedido’, al estilo cesta de compra, que le permitirá visualizar encada momento los artículos que ha elegidoUna vez la nota de pedido esté completada deberá tramitar el pedido, queserá definitivamente aceptado una vez haya indicado los datos de envío, asícomo el día y hora deseada para su recepción.Consultar pedidosPor un lado, el cliente podrá consultar desde su navegador los pedidos quetiene tramitados y todavía están en estado pendiente, es decir, noadmitidos por el restaurante.Por otro lado, el empleado y administrador también podrán consultar lospedidos que se hallan en la base de datos. Para ello podrán filtrar laconsulta seleccionando uno de los 4 criterios de búsqueda siguientes: elestado en el que se puede encontrar un pedido (esto es, pendiente,rechazado, admitido, o servido), el identificador de pedido, el nombre deusuario o rango de fechas.Admitir pedidosLos pedidos, una vez realizados por el cliente, son recibidos en la empresa.Los empleados o administradores deberán comprobar el pedido entrante y,una vez comprobado que no presenta ninguna irregularidad, proceder a suadmisión. Internamente la empresa podrá, por ejemplo, imprimir el pedidoy pasarlo a cocina para su elaboración. El pedido pasará de pendiente aadmitido.Anular pedidosEsta opción, sólo accesible a empleados o administrador, permitirá pasar unpedido al estado de anulado, sin que ello suponga darlo de baja de formadefinitiva de la base de datos.
  22. 22. TFC – Restaurant-OnLine P á g i n a | 22Gestión de usuariosBajo este subsistema también se encuentran funcionalidades que afectantanto el lado cliente como el lado empresa.RegistroDel lado cliente, tenemos la utilidad del registro, trámite necesario paraestar dado de alta como cliente y poder efectuar pedidos. Al usuario se lepedirán datos personales, datos de domicilio necesarios para los envíos ydatos de acceso a la página (nombre de usuario y contraseña).Consulta, alta, baja y modificación de usuariosDel lado empresa dispondremos de las utilidades de consulta, alta, baja ymodificación de usuarios.Los empleados y administradores podrán consultar los usuarios existentesatendiendo a su nombre o al tipo de usuarios al que pertenece (cliente,empleado o administrador).Únicamente a los administradores se les permite dar de alta a nuevosusuarios o modificar los datos de los mismos, y siempre que no sean detipo cliente. En cambio, en las bajas no habrá esta limitación.Casos de usoDe las funcionalidades anteriormente descritas se han elaborado lossiguientes casos de uso, que también quedarán agrupados para mayorclaridad según al subsistema al que pertenecen.Subsistema de IdentificaciónNombre: IdentificaciónFuncionalidad general: Verifica que el nombre de usuario yla contraseña que se hayaintroducido correspondan a algúnusuario dado de alta en el sistema.Actores: Cliente, empleado y administrador.Descripción: El sistema solicita un nombre deusuario y una contraseña,
  23. 23. TFC – Restaurant-OnLine P á g i n a | 23comprueba que el usuario existe yque la contraseña es válida.Casos de uso relacionados: Cambio de contraseñaNombre: Cambio de contraseñaFuncionalidad general: Permite que el usuario cambie sucontraseña.Actores: Cliente, empleado y administrador.Descripción: El sistema solicita un nombre deusuario y una contraseña actual,comprueba que el usuario existe yque la contraseña es válida.Entonces solicita que se introduzcados veces la nueva contraseña,para registrar el cambio.Casos de uso relacionados: Identificación.Subsistema de gestión de artículosNombre: Consultar artículosFuncionalidad general: Permite consultar los artículos quetiene la empresa a la venta.Actores: Visitante, cliente, empleado yadministrador.Descripción: La aplicación realizará una consultaal sistema para mostrar en pantallatodos los artículos de la categoríaseleccionada por el visitante ocliente, o, en caso de empleado oadministrador, los artículos oartículo según el criterio de consultaseleccionado.Casos de uso relacionados:Nombre: Alta artículoFuncionalidad general: Permite dar de alta un nuevoartículo en el sistema.Actores: Empleado y administrador.Descripción: El usuario introduce un identificadorde artículo y demás datossolicitados, y el sistema, trascomprobar que el identificador noexiste, procede a incorporar elartículo a la base de datos.Casos de uso relacionados:
  24. 24. TFC – Restaurant-OnLine P á g i n a | 24Nombre: Baja artículoFuncionalidad general: Permite dar de baja un artículoexistente en el sistema.Actores: Empleado y administrador.Descripción: El usuario introduce el identificadorde artículo que desea borrar de labase de datos, y, tras una pantallade confirmación, se procede a darde baja el artículo deseado.Casos de uso relacionados:Nombre: Modificación artículoFuncionalidad general: Permite modificar un artículoexistente en el sistema.Actores: Empleado y administrador.Descripción: El usuario introduce el identificadorde artículo que desea modificar, traslo cual podrá visualizar los detallesdel mismo y proceder a modificarlo.Casos de uso relacionados:Subsistema de gestión de pedidosNombre: Realizar pedidoFuncionalidad general: Permite realizar un pedido.Actores: Cliente.Descripción: El usuario, una vez incorporados losartículos a la nota de ha deconfirmar éste para su tramitación.El sistema permitirá al usuarioseleccionar la hora y día de envío ymodificar, en su caso, la direcciónde envío y/o teléfono de contacto.Casos de uso relacionados: Crear nota de pedido.Nombre: Crear nota de pedidoFuncionalidad general: Permite crear una nota de pedido.Actores: Visitante y cliente.Descripción: El usuario selecciona los artículosdeseados desde las diferentescategorías de artículos disponibles ylos va incorporando a la nota depedido.Casos de uso relacionados: Consultar artículos.
  25. 25. TFC – Restaurant-OnLine P á g i n a | 25Nombre: Consulta nota de pedidoFuncionalidad general: Permite consultar los artículos de lanota de pedido.Actores: Visitante y cliente.Descripción: El usuario podrá visualizar encualquier momento su nota depedido permitiéndole borrar yañadir artículos o cambiar lacantidad de éstos.Casos de uso relacionados: Crear nota de pedido.Nombre: Consulta pedidoFuncionalidad general: Permite consultar los pedidos que sehallan en la base de datos.Actores: Cliente, empleado y administrador.Descripción: En el caso del cliente, éste accederáal enlace ‘Mis pedidos’ y el sistemale mostrará los pedidos que tienependientes de envío. En el caso delos empleados y administrador,éstos podrán realizar la consultasegún el criterio de búsquedaseleccionado (identificador, nombrede usuario, fecha o estado).Casos de uso relacionados:Nombre: Admitir pedidoFuncionalidad general: Permite cambiar el estado de unpedido, pasándolo de pendiente aadmitido.Actores: Empleado y administrador.Descripción: El usuario selecciona el pedidoentrante, que se encuentra enestado pendiente, y, tras consultarlos detalles, si verifica que todo escorrecto y da el pedido comoadmitido.Casos de uso relacionados: Realizar pedido.Nombre: Anular pedidoFuncionalidad general: Permite cambiar el estado de unpedido, pasándolo de pendiente oadmitido a anulado.Actores: Empleado y administrador.Descripción: El usuario introduce el identificadorde artículo que desea anular, tras locual podrá visualizar los detalles delmismo y proceder a anularlo. El
  26. 26. TFC – Restaurant-OnLine P á g i n a | 26sistema no dará de baja el pedido enla base de datos, sino sólo lomarcará como anulado.Casos de uso relacionados: Consulta pedido.Subsistema de gestión de usuariosNombre: RegistroFuncionalidad general: Permite que el usuario se registre enel sistema.Actores: Visitante.Descripción: El usuario accede a la utilidad deregistro he introduce los datossolicitados. El sistema da de alta alnuevo cliente, tras comprobar quetodos los datos introducidoscumplen los criterios de validaciónde formato necesarios, que todos loscampos de obligado rellenado noestán vacíos y que el usuario noexiste en el sistema.Casos de uso relacionados:Nombre: Alta usuarioFuncionalidad general: Permite dar de alta a un nuevoempleado o administrador en elsistema.Actores: Administrador.Descripción: El usuario introducirá un nombre ylos demás datos solicitados. En elcaso que el nombre de usuario noexista, el sistema incorporará elnuevo usuario a la base de datos.Casos de uso relacionados:Nombre: Baja usuarioFuncionalidad general: Permite dar de baja a un usuarioexistente en el sistema.Actores: Administrador.Descripción: Se introducirá el nombre de usuarioque se desee dar de baja. Elsistema, tras solicitar confirmación,procederá a borrarlo de la base dedatos.Casos de uso relacionados:
  27. 27. TFC – Restaurant-OnLine P á g i n a | 27Nombre: Modificar usuarioFuncionalidad general: Permite modificar los datos de unusuario existente en el sistemaActores: Administrador.Descripción: Se introducirá el nombre de usuariocuyos datos se deseen modificar. Elsistema mostrará los datos de esteusuario con los campos susceptiblesde ser modificados, y, tras loscambios realizados, procederá aguardarlos.Casos de uso relacionados:Nombre: Consultar usuarioFuncionalidad general: Permite consultar los datos de unusuario existente en el sistema.Actores: Empleado y administrador.Descripción: La consulta podrá realizarse segúnel tipo de usuario o introduciendo unnombre de usuario.Casos de uso relacionados:Diagramas de casos de usoA continuación se mostrarán los diagramas de casos de uso detalladossegún el subsistema al que pertenecen.Casos de uso del subsistema de identificaciónFigura 3.1: Diagrama de casos de uso del subsistema de identificación
  28. 28. TFC – Restaurant-OnLine P á g i n a | 28Casos de uso del subsistema de gestión de artículosFigura 3.2: Diagrama de casos de uso del subsistema de gestión de artículosCasos de uso del subsistema de gestión de pedidosFigura 3.3: Diagrama de casos de uso del subsistema de gestión de pedidos
  29. 29. TFC – Restaurant-OnLine P á g i n a | 29Casos de uso del subsistema de gestión de usuariosFigura 3.4: Diagrama de casos de uso del subsistema de gestión de usuarios
  30. 30. TFC – Restaurant-OnLine P á g i n a | 30Capítulo 4 DiseñoA continuación se explicará los pasos seguidos en el diseño. En primerlugar, se han definido las clases necesarias para la aplicación, partiendo delas funcionalidades definidas en el capítulo anterior. Se hará unapresentación de las clases agrupándolas según a la capa que pertenecen,siguiendo el patrón de diseño MVC.Capa modeloClases correspondientes a los Transfer ObjectFigura 4.1: Diagrama de clases Transfer ObjectPara mayor claridad no se incluyen los atributos ni las operaciones.A continuación se muestran las clases que no hacemos persistentes, peroque necesitamos, tanto para guardar los datos de la sesión del usuariocomo para trabajar con la nota de pedido y los artículos que contendrán.
  31. 31. TFC – Restaurant-OnLine P á g i n a | 31Figura 4.2: Diagrama de clases no persistentesClases DAOInterficie y clase que encapsula e implementa la conexión a la base dedatos y las diferentes operaciones de acceso a ella para obtener las vistasadecuadas.Figura 4.3: Diagrama de clases e interficies DAOInterficie y clase permite la creación del servicio anterior.Figura 4.4: Diagrama de clases e interficies factoría de servicioEl detalle de las operaciones se han explicado más arriba, en el apartadoComponentes del Restaurante-OnLine.
  32. 32. TFC – Restaurant-OnLine P á g i n a | 32Capa ControladorExisten posturas enfrentadas en cuanto si la clase Action forma parte de lacapa Controladora o del Modelo. Aquí seguimos el criterio de que formaparte de la capa controladora. Así pues, las clases que se implementan eneste nivel se muestran en la siguiente figura, separando las acciones quepertenecen a la parte Cliente, a la parte Empresa y las comunes.Clases comunesClase Acción que realizaCustomDispatchAction Crea el servicio contenido enICarritoService para usarlo con lasacciones exclusivas de la nota depedidoCustomBaseAction Crea el servicio contenido enICarritoService para usarlo con elresto de accionesCambioContrasenaSaveAction Ejecuta el cambio de contraseñaDisplayCambioContrasenaForm Muestra el formulario para el cambiode contraseñaDisplayLoginForm Muestra el formulario para iniciarsesiónLoginAction Valida el inicio de sesiónLogoutAction Ejecuta la finalización de la sesiónClases parte ClienteClase Acción que realizaPedidoActions Agrupa las clases usadas para lanota de pedido y tramitación delmismo.DisplayNota Muestra la nota de pedidoDisplayRegistrationForm Muestra el formulario de registroRegistrationSaveAction Ejecuta el registro de clientesGetListaPedClienteAction Obtiene la lista de pedidosGetPedClienteDetalleAction Obtiene el detalle de un pedidoClases parte EmpresaGestión artículosClase Acción que realizaArtAltaSaveAction Ejecuta el alta de artículosArtBajaAction Ejecuta la baja de artículosArtCategoriaAction Obtiene las categorías de artículosArtModifSaveAction Ejecuta la modificación de artículosDisplayAltaArtCatAction Obtiene las categorías para las altasDisplayConArtCatAction Obtiene las categorías para las
  33. 33. TFC – Restaurant-OnLine P á g i n a | 33consultasGestBajaArtIdAction Obtiene un artículo para las bajasGestConArtCatAction Obtiene una categoría de artículosGestConArtIdAction Obtiene un artículo para las consultaGestModifArtIdAction Obtiene un artículo paramodificacionesGestión pedidosClase Acción que realizaAdmisionPedidoAction Ejecuta la admisión de pedidosDisplayGestAnulPed Acción de redireccionamientoGestAdmisionPedidosAction Obtiene una lista de pedidospendientesGestAdmPedNomDetalle Obtiene el detalle de un pedido parasu admisiónGestAnulPedIdAction Obtiene un pedido para su anulaciónGestAnulPedNomDetalleAction Obtiene el detalle de un pedido parasu anulaciónGestConPedEstAction Obtiene una lista de pedidos segúnsu estadoGestConPedFechaAction Obtiene una lista de pedidos segúnun rango de fechasGestConPedIdAction Obtiene un pedido por suidentificadorGestConPedIdDetalleAction Obtiene el detalle del pedidoanteriorGestConPedNomAction Obtiene un pedido por nombre deusuarioGestConPedNomDetalleAction Obtiene el detalle del pedidoanteriorGestConsPedAction Pasa el control a otra acción segúnel criterio de consulta de pedidosPedAnulAction Ejecuta la anulación de pedidoGestión usuariosClase Acción que realizaDisplayGestAltaUsu Acción de redireccionamientoDisplayAltaUsuForm Muestra formulario de altaDisplayGesBajaUsu Acción de redireccionamientoDisplayGestConUsuAction Acción de redireccionamientoDisplayGestModifUsu Acción de redireccionamientoGestBajaUsuNomAction Obtiene un usuario para la bajaGestConUsuAction Pasa el control a otra acción segúnel criterio de consulta de usuariosGestConUsuNomAction Obtiene un usuario para la consultaGestConUsuTipoAction Obtiene una lista de usuarios segúnel tipoGestConUsuTipoDetalleAction Obtiene un usuario para la consultaGestModifUsuNomAction Obtiene un usuario para su
  34. 34. TFC – Restaurant-OnLine P á g i n a | 34modificaciónUsuAltaSaveAction Ejecuta el alta de usuariosUsuBajaAction Ejecuta la baja de usuariosUsuModifSaveAction Ejecuta la modificación de usuariosCapa Vista o PresentaciónLos componentes de la Vista son las páginas JSP y las clases ActionForm,que son beans asociados a los formularios de las páginas JSP.Se definen los siguientes ActionForm:ActionFormAltaUsuarioFormArticuloFormCambioContrasenaFormCategoriaFormComandaFormCriterioBusquedaDateFormLoginFormModifArticuloFormRegisterFormLas páginas JSP se agrupan, nuevamente, separando las de la parte Clientede la parte Empresa.Páginas JSP del lado Clientecontacto_body verCategoria_1quienSomos_body notaPedido2_bodyverProductos confirmarPedido_bodyverCategoria_1 displayPedidoConfirm_bodynotaPedido2_body cambioContrasenaCliente_bodyiniciarSesion errorLoginregistro_bodyregistroErrorregistroOKoperacionOkerrorverProductospedidosPendCliente_bodypedidosPendClienteDetall_body
  35. 35. TFC – Restaurant-OnLine P á g i n a | 35Páginas JSP del lado empresacambioContrasena_body gestPedConsIdDetalle_bodygestPedidos_body gestPedConsNomDetalle_bodygestPedCons_body gestPedModifNomDetalle_bodygestPedAdmision_body gestPedConsEstadoDetalle_bodygestPedAdmNomDetalleUltimo_body gestPedConsFechaDetalle_bodygestPedModif_body gestPedConsNomDetalleUltimo_bodygestPedConsNom_body gestPedAnulNomDetalleUltimo_bodygestPedModifNom_body gestUsuarios_bodygestPedAnulId_body gestUsuCons_bodygestPedAnulDetalle_body gestUsuBajaNom_bodygestPedConsId_body gestArtBajaId_bodygestPedConsEstado_body gestUsuBajaNomDetalle_bodygestPedConsFecha_body gestArtBajaIdDetalle_bodygestPedModifFecha_body verSelecciongestUsuConsNom_body gestUsuModifDetalle_bodygestArtConsId_body gestArtModifDetalle_bodygestUsuAlta_body gestUsuConsTipo_bodygestArtAlta_body gestArtConsCat_bodygestUsuConsNomDetalle_body gestUsuConsTipoDetalle_bodygestArtConsIdDetalle_body gestArtConsCatDetalle_bodygestUsuConsTipoDetalleUltimo_body gestArtCons_bodygestArticulos_body gestUsuModifNom_bodygestArtModifId_body usuarioErrorcontrasenaError datoErroraltaError bajaOKaltaOK altaUsuarioErrorgeneralError altaUsuarioOKbajaUsuarioOK gestUsuModifMensaje_bodyerrorLogin
  36. 36. TFC – Restaurant-OnLine P á g i n a | 36Capítulo 5 Funcionamiento de Restaurant-OnLineEn este capítulo se hará una explicación del funcionamiento de la aplicación,que se ilustrará con capturas de pantalla par un mejor entendimiento.InicioLa aplicación se inicia con la página welcome.jsp, que será su página deinicio.Figura 5.1: Inicio de Restaurant-OnLineDesde esta página se pueden realizar diversas acciones. Principalmente lassiguientes:- permanecer como visitante y visualizar los productos que se ofrecen,incluso, usar la nota de pedido para añadir artículos a ésta.- acceder a la página de registro, para hacerse cliente.- iniciar sesión como cliente o como empleado de la empresa.
  37. 37. TFC – Restaurant-OnLine P á g i n a | 37Consultar artículosA través del enlace “Nuestros productos” accedemos a la siguiente página,que nos muestra las diferentes categorías de artículos que puedenconsultarse.Figura 5.2: Consulta categoría de artículos lado clienteHaciendo clic sobre uno de ellos se mostrará una lista de los artículos deesta categoría.Figura 5.3: Consulta artículos lado cliente
  38. 38. TFC – Restaurant-OnLine P á g i n a | 38Consultar nota de pedidoEn cualquier momento podemos consultar la nota de pedido con losartículos que hasta el momento hemos incorporado a través de los enlacesde “Pedir”, al final de cada línea de artículo.Figura 5.4: Consulta nota de pedido lado clienteRealizar pedidoUna vez hayamos incorporado todos los artículos deseados a nuestra notade pedido, podemos tramitarlo. Si somos cliente necesitaremos acceder alsistema con nuestro nombre y contraseña o, en caso de no estar registrado,efectuar dicho trámite.Figura 5.5: Login de clientes
  39. 39. TFC – Restaurant-OnLine P á g i n a | 39Confirmar pedidoUna vez iniciada sesión, podremos recuperar nuestra nota de pedido, paradar trámite definitivo al pedido. Para ello, se nos pedirá que confirmemoslos datos de envío e indiquemos el día y hora deseados.Figura 5.6: Confirmación nota pedido de clienteConsultar pedidos tramitadosIniciada la sesión, podremos consultar nuestros pedidos realizados y quetodavía están pendientes de aceptar.Figura 5.7: Consulta pedidos pendientes por cliente
  40. 40. TFC – Restaurant-OnLine P á g i n a | 40Registro de clientesPara registrarse en el sistema deberemos rellenar el siguiente formulario.Figura 5.8: Registro de clientesMenú de administraciónEl usuario, ya sea empleado o administrador, deberá acceder a través de lamisma página de login que los clientes. La página de inicio de estosusuarios será la que nos permite acceder a los tres pilares de laadministración de Restaurant-OnLine, esto es, gestión de pedidos, gestiónde artículos y gestión de usuarios.Figura 5.9: Menú administración lado empresa
  41. 41. TFC – Restaurant-OnLine P á g i n a | 41Gestión de pedidosEn esta sección podremos acceder, básicamente, a las siguientes funciones:Consultar pedidosAquí se nos ofrece la posibilidad de consultar los pedidos según diferentescriterios de consulta: estado, nombre de usuario, fecha o identificador.Figura 5.10: Consulta pedidos lado empresaEn los tres primeros casos se mostrará una lista de pedidos con la opción deacceder a los detalles.Figura 5.11: Lista pedidos según criterio de consulta lado empresa
  42. 42. TFC – Restaurant-OnLine P á g i n a | 42En el caso de la consulta por identificador se mostrará, naturalmente,únicamente el pedido requerido, con la misma opción para los detalles delpedido.Admitir pedidosEl botón “Pedidos pendientes de admitir” nos permitirá obtener la lista depedidos pendientes con la opción de admitirlos, una vez marcado el botónde opción correspondiente.Figura 5.12: Admisión pedidosAnular pedidosPor último, disponemos de la opción de anular pedido para lo cualdeberemos introducir primero el identificador de pedido correspondiente.Figura 5.13: Anulación pedidos
  43. 43. TFC – Restaurant-OnLine P á g i n a | 43Gestión de artículosConsultar artículosPodremos consultar los artículos de nuestra base de datos según doscriterios de consulta: categoría o código (identificador)Figura 5.14: Selección criterio de consulta de artículos lado empresaModificar artículoTras introducir el código de artículo que se desea modificar accederemos alos campos disponibles, como se muestra a continuación.Figura 5.15: Modificación artículo
  44. 44. TFC – Restaurant-OnLine P á g i n a | 44Alta artículosPara el alta deberemos rellenar una serie de campos que aparecen tras elenlace correspondiente.Figura 5.16: Alta artículosBaja artículosPara efectuar una baja de artículo será necesario indicar el código yconfirmar la operación.Figura 5.17: Baja artículos
  45. 45. TFC – Restaurant-OnLine P á g i n a | 45Gestión de usuariosEn esta sección disponemos de las opciones de consulta, modificación, altay baja. Será únicamente el administrador el que tendrá acceso a las tresúltimas opciones.Consulta usuariosTambién en este caso podremos realizar la consulta según dos criteriosdiferentes: nombre de usuario o tipo de usuario.Figura 5.18: Selección criterio de consulta de usuariosEn caso de efectuar la consulta por tipo de usuario, tras seleccionarlo deuna lista desplegable, se obtendrá un listado de usuarios, con la opción deacceder a la información cada uno de ellos.Figura 5.19: Lista tipo de usuarios
  46. 46. TFC – Restaurant-OnLine P á g i n a | 46Modificación de usuariosIndicando el identificador de usuario que se desea modificar, aparecerá unapantalla con los campos modificables.Figura 5.20: Modificación usuarioAlta de usuariosEn este enlace se nos presentará una serie de campos de obligadocumplimiento.Figura 5.21: Alta usuario
  47. 47. TFC – Restaurant-OnLine P á g i n a | 47Baja de usuariosPara efectuar una baja de usuario será necesario indicar el identificadordeseado y confirmar la operación.Figura 5.22: Baja usuario
  48. 48. TFC – Restaurant-OnLine P á g i n a | 48Capítulo 6 ConclusionesLa elaboración de este TFC ha servido, principalmente, para conocer concierta profundidad la plataforma JEE, sus componentes y alguna de sustecnologías principales, Servlet y JSP.Conforme se avanzaba en su estudio, por un lado, se ha hecho patente lanecesidad de utilizar patrones de diseño, esto es, soluciones a problemas dediseño verificadas con anterioridad y reusables. Por otro, apoyarse enalgún tipo de entorno que facilitara el desarrollo de una aplicación web enJava.Ambos retos se han podido superar con el uso del Framework Struts. Éstenos ha sido de gran ayuda ya que nos ha proporcionado tanto la separaciónde la lógica de negocio, la lógica de control y el código de presentacióncomo una estructura básica sobre la cual construir la aplicación.Aunque al principio encajar todas las piezas del puzzle que se queríaconstruir no ha sido tarea fácil, finalmente, la satisfacción de haberaprendido una tecnología prácticamente desconocida ha sido grande.También se ha de reconocer que la falta de tiempo ha hecho imposible pulir,como se hubiese querido, la aplicación. Muchos aspectos son mejorables yotros no han sido tenidos en cuenta, como son un mayor control de acceso,tema de seguridad, diseño más elaborado, el manejo adecuado deexcepciones, la internacionalización, uso de la biblioteca Log4j, y un largoetc. Pero, como en todo aprendizaje de una nueva tecnología, se necesitatiempo, que posteriormente se suple con la experiencia que se vaadquiriendo, y que permite ir mejorando e introduciendo nuevos aspectosde diseño.En resumen, se puede afirmar que la experiencia ha sido del todo positiva yha despertado un mayor deseo del inicial de profundizar en la tecnologíaJava EE.
  49. 49. TFC – Restaurant-OnLine P á g i n a | 49Capítulo 7 GlosarioCliente: parte de la aplicación que interactúa con el visitante o cliente delrestaurante.Empresa: parte de la aplicación que interactúa con los empleados yadministradores de la empresa, y sirve para la gestión y administración dela aplicación.Patrón de diseño: son la base para la búsqueda de soluciones aproblemas comunes en el desarrollo de aplicaciones y otros ámbitosreferentes al diseño de interacción o interfaces.Struts: herramienta de soporte para el desarrollo de aplicaciones web JavaEE bajo el patrón MVC.Pool de conexiones: grupo de conexiones abiertas de una base de datosque pueden ser reusadas al realizar múltiples accesos a ésta.Framework: estructura de soporte definida en la cual otro proyecto desoftware puede ser organizado y desarrollado.JavaBean: componente de software reusable para Java. En la práctica sonclases escritas en Java que deben seguir una cierta convención.Componente Web: componentes pertenecientes a la capa depresentación, como los Servlets y páginas JSP.Contenedor Web: entorno de ejecución de los componentes web.
  50. 50. TFC – Restaurant-OnLine P á g i n a | 50Capítulo 8 BibliografíaFalkner, Jayson (2003): JAVA Servlets and JavaServerPages: the J2EEtechnology Web tier: Addison-Wesley.Derek C. Ashmore (2004): The J2EE Architect’s Handbook: DVT Press.Richard Hightower (2004): Jakarta Struts LIVE: SourceBeat, LLC.Srikanth Shenoy (2004): Struts Survival Guide: ObjectSource LLC.Sun Microsystems: Core J2EE Pattern Catalog: Business Delegate,Transfer Object y Data Access Object.Sang Shin (2008): Java EE (J2EE) Programming (with Passion!)[www.javapassion.com/j2ee]Adictos al Trabajo: Aplicación profesional con Struts – 2003[http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=strutsb]Ramiro Lago (2007): Patrones de diseño software [http://www.proactiva-calidad.com/java/patrones/index.html#algunos_patrones]The Middleware Company (2003): J2EE Best Practices[http://www.middleware-company.com/]

×