DOCUMENTACION DE IMPLEMENTACION Ver 1.0 DOCUMENTACION DE IMPLEMENTACION Triangle Funky Users SOFTWARE DELLA FUNK Triangle Funky Users Página 1 de 9 DOCUMENTACION DE IMPLEMENTACION Ver 1.0 Introducción En el presente documento, se encuentran plasmados loas aspectos relacionados con la implementación de cada uno de los aspectos definidos en la especificación del diseño de la aplicación. Se tienen en cuenta los requerimientos funcionales definidos en su respectivo documento y se desarrollaran cada uno de los módulos respectivos para la consistencia en la operación de la aplicación. OBJETIVO DEL PROCESO El objetivo principal del proceso de documentación de la implementación es realizar una aproximación al modo de ejecución para el desarrollo de cada uno de los módulos de la aplicación, de manera que cualquier miembro del grupo pueda informarse sobre el estado de la implementación del proyecto, además del modo en que se desarrolla cada aspecto del mismo. Los componentes que se construyan durante el proceso de implementación, serán suficientemente independientes para ser desarrollados de manera autónoma e integrados a través de un plan de pruebas de integración. Triangle Funky Users Página 2 de 9 DOCUMENTACION DE IMPLEMENTACION Ver 1.0 Modelo de Datos Siguiendo el diseño respectivo, del modelo entidad relación de la base de datos, se pudo realizar el script de creación de la base de datos, el cual tiene en cuenta la definición adecuada de cada uno de los campos, así como la implementación de las restricciones respectivas: Llaves Primarias: Para cada una de las 4 tablas en la base de datos: - Rol: Id, de tipo Entero. Usuario: Id de tipo Entero. Registro: Username de tipo Varchar. Downline: (Usuario, Downline) de Tipo Entero, representa la llave compuesta por un usuario jefe y un usuario empleado. Atributos Únicos: Para 3 de las 4 tablas en la base de datos: - Rol: Rol, de tipo Varchar, evitando que se repita la definición de un rol. Registro: Id de tipo Entero, evitando que se tenga más de un acceso por usuario. Downline: Downline de tipo Entero, evitando que un usuario empleado tenga más de un jefe. Triangle Funky Users Página 3 de 9 DOCUMENTACION DE IMPLEMENTACION Triangle Funky Users Ver 1.0 Página 4 de 9 DOCUMENTACION DE IMPLEMENTACION Ver 1.0 Llaves Foráneas: Para 3 de las 4 tablas en la base de datos: - Usuario: Rol de tipo Entero, referencia a un Id de un Rol. Registro: Id de tipo Entero, referencia a un Id de un usuario. Downline: (Usuario, Downline) de Tipo Entero, referencian a dos Id de usuarios diferentes. Se creó La base de datos con nombre tfudb, además se creó un usuario dellafunk, al cual se concedieron permisos de lectura y escritura sobre las tablas previamente creadas Módulo de Persistencia Entrando en la fase de implementación, del módulo de persistencia, se llevaron a cabo tres pasos principales: crear un servicio de conexión a base de datos desde el IDE (Netbeans), la creación de las entidades a partir de la base de datos y la construcción de cada una de las clases de acceso DAO. Creación del Servicio Es necesario especificar un conjunto de parámetros para crear el servicio de conexión: - Driver: En este caso utilizaremos el driver JDBC MySQL Nombre de Usuario: dellafunk. Password de Usuario. URL de la Base de Datos: localhos:3306/tfudb. Con esto ya se ha establecido la conexión a la base de datos, por medio de la cual se podrá trabajar Creación de Clases Entidad Para poder Crear las Clases Entidad, se especifica que base de datos se utilizara, se debe escoger la conexión creada, y luego de esto se pueden importar las tablas desde la base de datos para la creación automática de las entidades: - Usuario Registro Triangle Funky Users Página 5 de 9 DOCUMENTACION DE IMPLEMENTACION - Ver 1.0 Downline Cada una de las clases estará compuesta por los mismos atributos, equivalentes a los campo en las tablas de la base de datos, además de sus respectivos métodos de acceso. Cada una de estas clases se definieron en el paquete entities del proyecto. Construcción de Clases DAO El ultimo componente del modulo de persistencia son las clases de acceso, que deben cumplir con lo especificado en el documento de diseño; para este fin se vale del uso de EntityManager que son clases con métodos especiales definidos, por medio de las cuales se pueden realizar diferentes operaciones en la base de datos. Se definen ahora los métodos implementados cada Clase DAO. - - - RolDAO: getById(), recibe un id de tipo Entero y retorna la Entidad Rol asociada a ese id. select(), retorna una lista de Entidades Rol (todos los roles). UsuarioDAO: save(), recibe una Entidad Usuario y realiza la inserción de esta Entidad en la BD; retorna un dato booleano indicando el éxito o fracaso de la operación. delete(), recibe una Entidad Usuario y realiza el borrado de esta Entidad en la BD; retorna un dato booleano indicando el éxito o fracaso de la operación. update(),recibe una Entidad Usuario y realiza la modificación de esta Entidad en la BD; retorna un dato booleano indicando el éxito o fracaso de la operación. getById(), recibe un id de tipo Entero y retorna la Entidad Usuario asociada a ese id. getByRol(), recibe una entidad Rol y retorna una lista de Entidades Usuario para el rol especificado. RegistroDAO: save(), permite la inserción de una entidad Registro en la BD; retorna un dato booleano indicando el éxito o fracaso de la operación. Triangle Funky Users Página 6 de 9 DOCUMENTACION DE IMPLEMENTACION - Ver 1.0 delete(),permite el borrado de una entidad Registro de la BD; retorna un dato booleano indicando el éxito o fracaso de la operación. getByAcc(), retorna la entidad Registro para un nombre de cuenta específico. DownlineDAO: save(), recibe una Entidad Downline y realiza la inserción de esta Entidad en la BD; retorna un dato booleano indicando el éxito o fracaso de la operación. delete(),recibe una Entidad Downline y realiza el borrado de esta Entidad en la BD; retorna un dato booleano indicando el éxito o fracaso de la operación. getByUser(), recibe una Entidad Usuario y retorna la entidad Downline para el Usuario jefe especificado. getByDownline(), recibe una Entidad Usuario y retorna la entidad Downline para el Usuario empleado especificado. Cada una de estas clases se definieron en el paquete access del proyecto. Módulo de Servicios El módulo de servicios consta únicamente de una clase, la cual es encargada de recibir las solicitudes de los usuarios y realizar las tareas requieridas. Clase UserService Métodos implementados: - - - logIn(),recibe dos parámetros de tipo String: cuenta y contraseña, realiza una consulta por medio de un RegistroDAO, y verifica si los datos son correctos, para el ingreso al sistema, retorna una Entidad Usuario correspondiente. getUserById(), recibe un id de usuario y retorna una entidad Usuario correspondiente a ese id si se encuentra en la base de datos, este método se llama directamente del UsuarioDAO. insertUser(), se encarga de insertar una Entidad Usuario en la base de datos. Al realizar esta inserción, invoca al método insertDownline() pasando como parámetros el usuario que realiza la inserción y la Entidad Usuario a ser Triangle Funky Users Página 7 de 9 DOCUMENTACION DE IMPLEMENTACION - - - - Ver 1.0 insertada; además llama al método insertRegistro(), pasándole parámetros por defecto para crear la cuenta y la contraseña, para que el nuevo usuario tenga acceso al sistema; retorna un dato booleano indicando el éxito o fracaso de la operación. deleteUser(), recibe un id de usuario y realiza el borrado de la Entidad Usuario en la base de datos asociada a ese id. Antes de realizar esta acción; esta función invoca a los métodos de borrado para las tablas que hacen o podrían hacer referencia al Usuario que se va a borrar (Downline y Registro) y realiza el borrado respectivo; retorna un dato booleano indicando el éxito o fracaso de la operación. updateUser(), recibe una Entidad Usuario y realiza la modificación del Usuario en la base de datos; retorna un dato booleano indicando el éxito o fracaso de la operación. getUpline(), recibe el id de un usuario, solicita un registro Downline donde ese usuario sea el empleado y a continuación realiza la misma acción recursivamente hasta llegar al tope de la jerarquía, conforma un alista de los usuarios encontrados y la retorna como resultado. getDownline(), recibe el id de un usuario, solicita todos los registros Downline donde ese usuario sea el jefe, conforma un alista de los usuarios empleados encontrados y la retorna como resultado. La clase de servicios se definió en el paquete service del proyecto. Módulo de Seguridad El modulo de seguridad provee un medio por el cual se pueda almacenar la información correspondiente a las contraseñas de las cuentas de un modo seguro, este proceso se realizara por medio de la aplicación del algoritmo md5, con el cual se logra una reducción criptográfica de los datos de contraseñas. Clase MD5 Esta clase simplemente se encarga de recibir una cadena de caracteres (String) y calcular su hash correspondiente, para lo cual se implementan 2 métodos: - md5.Update(), recibe como parámetro el String que quiere calcularse y lo asigna al objeto md5, Triangle Funky Users Página 8 de 9 DOCUMENTACION DE IMPLEMENTACION - Ver 1.0 md5.asHex(), se encarga de realizar el cálculo del hash correspondiente y lo retorna como un String. La clase md5 se definirá en un paquete de seguridad, para su implementación en el resto del proyecto. Triangle Funky Users Página 9 de 9