Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Autores:
ASIR B
CURSO 2015/2016
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Índice
Índice ______________________________________________________________________ 1
1. Introducción _______________________________________________________________ 3
1.1. Objetivos ______________________________________________________________ 3
1.2 ¿Qué es Droidia? ________________________________________________________ 3
3. Diseño ___________________________________________________________________ 8
3.1. Base de datos___________________________________________________________ 8
3.1.1. Base de datos Admin _________________________________________________ 8
3.1.2. Base de datos User _________________________________________________ 16
3.2. Aplicación Java_________________________________________________________ 17
3.3. Conexión _____________________________________________________________ 33
3.4. Página principal ________________________________________________________ 36
3.5. APP Android ___________________________________________________________ 41
6. Gracias __________________________________________________________________ 51
7. Webgrafía _______________________________________________________________ 52
8. DVD's ___________________________________________________________________ 53
1
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
2
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
1. Introducción
1.1. Objetivos
Droidia se ha desarrollado para la ayuda a la organización y al control de la empresa y los
empleados. Se crea al ver la necesidad de eliminar el “papeleo” continuo que tienen ciertas
empresas de obras, ya que se pierden, se manchan, se rompen o incluso el trabajador al estar
agotado, lo lleva días después.
3
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
2. Medios a utilizar
2.1. Software
Los programas que hemos dedicado a la creación de Droidia se presentarán en la siguiente
lista denominando su fin dentro del proyecto.
-SQL Developer Versión 4.1.1.19: Aplicación que nos ayuda a desarrollar bases de
datos.
-No-IP DUC: Aplicación que enlaza con un servidor DNS el cual nos ofrece una IP pública
para que puedan acceder a nosotros.
-Android Studio versión 1.5.1: Aplicación la cual podemos desarrollar aplicaciones para
Android.
-Packet Tracer Cisco: Programa para el diseño de diagramas de red. Con esta aplicación se
diseñó el concepto de la red del proyecto.
4
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
2.2. Hardware
Los equipos utilizados en nuestro proyecto con su descripción completa, además de las
máquinas virtuales utilizadas. En este apartado, se incluye la descripción del servidor real que
hospeda nuestra aplicación.
Equipo de sobremesa con procesador Intel Core i7-3770 a 3,40 GHz hasta 3,80 GHz. El cual
tiene 16 GB de memoria RAM y Windows 7 Ultimate x64.
-Máquina Virtual Servidor Droidia: En dicha máquina se encuentran las bases de datos
y el servidor Tomcat de la aplicación.
Equipo con procesador Intel Core i7-3770 a 3,40 GHz hasta 3,80 GHz. El cual tiene 3 GB de
memoria RAM y Windows 7 Professional x64.
-Servidor web en Hostinger.es: Servidor web gratuito, el cual tiene nuestra página
principal, la que muestra si el servidor está levantado o no, además de ofrecernos contacto
con el administrador del servidor si hay algún problema.
droidia.16mb.com
DIRECCIÓN IP 31.170.164.158
SERVIDOR server6.hostinger.es
IP DEL SERVIDOR 31.170.164.21
Apache/2.4
PHP 5.5
-Servidor DNS en noip.com: Servidor DNS que nos redirige a nuestro servidor de la
aplicación a través de una simple aplicación llamada No-IP DUC.
droidia.ddns.net 83.51.67.123
-Router de fibra óptica: Para mejor comunicación con nuestro servidor desde el exterior,
el servidor está conectado a internet a través de un router de fibra óptica.
5
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
-Servidor IBM xSeries 226: Servidor ofrecido por Tecnova S.L.L. para la realización de
este proyecto.
El equipo consta de Windows Server 2008 Enterprise SP1a 32 bits, un procesador Intel Xeon a
3.00 GHz, una memoria RAM de 2 GB, además de dotarlo con una conexión a internet de fibra
óptica y una IP propia (192.168.1.52) dentro de la misma red.
Podemos observar las dos fuentes de alimentación que utiliza el servidor para alimentarse, ya
que requiere mucha potencia.
6
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Actualización del sistema operativo para tener todos los parches de seguridad y compatibilidad
con la máquina.
7
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
3. Diseño
8
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
3.1.1.3. Tablas
Obras:
Aquí guardamos la información referente a las obras, su ID, una breve descripción, y la fecha
de inicio.
Plantilla:
Usamos esta tabla para guardar la información básica de los empleados, si ID, nombre, DNI y
salario. Además a partir de esta tabla creamos una herencia que nos da oficinistas y obreros.
Obrero:
Guardamos información específica de los empleados que son obreros, a parte de lo heredado
de plantilla contamos con una especialidad, las horas que ha trabajado y una contraseña que le
permitira acceder a la aplicación.
El campo de horas esta en desuso ya que cuando avanzamos en el proyecto nos dimos cuenta
que no nos hacía falta, en un principio serviría para calcular el sueldo pero acabamos usando
una función que no necesitaba de este campo.
Obras_Obrero:
Esta table es el resultado de una doble relación entre Obras y Obrero, aquí guardamos los
partes de obra para eso añadimos los campos Horas (horas trabajadas) y Día (fecha del parte
de obra), ademas este último lo usamos como parte de la primary Key para evitar que un
trabajador de dos partes de obra del mismo día en la misma obra.
Oficina:
Departamento:
Guardamos los departamentos a los que pertenecen los oficinistas y guardamos el nombre del
departamento y el sueldo extra que se le asigna a los oficinistas que trabajen en el mismo.
9
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
3.1.1.4. Vistas
Las primera vista ha quedado en desuso por la implantación de una función que calcule el
sueldo del obrero.
La segunda vista vista la usamos para el calculo del salario de oficinistas ya que no requiere
ninguna operación especial y es mas rápido de esta manera.
Las dos últimas son una unión de Obreros y Oficina con el padre de la herencia para que sea
mas facil extraer datos desde Java.
10
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
3.1.1.5. Procedimientos
Ya que hemos intentado manipular las tablas mínimamente desde la aplicación Java, hemos
creado procedimientos que realizarán la mayoría de las acciones que necesitemos, de esta
forma reforzamos la seguridad contra SQL-Injection.
El primer procedure nos pide la primary key de la tabla obras obrero y a partir de esta lee los
datos en la tabla de la otra base de datos y los copia a la nuestra, tras esto borra la línea que
hemos copiado de la otra base de datos.
Este procedure actualiza las horas del campo obrero, aunque esta en desuso ya que usamos
una función para calcular el sueldo que es la única función del campo horas.
11
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Este procedure sirve para insertar obreros, ya que la información esta divididad en dos tablas
necesitamos dos INSERT.
Este procedure sirve para insertar oficinistas, ya que la información esta divididad en dos
tablas necesitamos dos INSERT.
12
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Este procedure se usa en el caso que queramos rechazar un parte de obras, lo que hace es
borrar la línea de la base de datos User.
3.1.1.6. Triggers
Este trigger actualiza la base de datos User cada vez que se realiza un cambio en la tabla de
obras.
Este trigger actualiza la base de datos User cada vez que se realiza un cambio en la tabla de
obrero.
Este trigger realiza una comprobación de la herencia al insertar obreros, levanta una excepción
si ya existe un trabajador con ese ID.
13
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Este trigger realiza una comprobación de la herencia al insertar oficinistas, levanta una
excepción si ya existe un trabajador con ese id.
14
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
3.1.1.8. Función
Esta es la función que usamos para calcular el sueldo, los datos de entrada son la ID del
trabajador, el año y el mes, a partir de esto nos calcula el sueldo de esa fecha.
15
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Esta base de datos es idéntica a las tres tablas de Admin Obras, Obrero, Obras_Obrero.
Excepto que en esta última tabla añadimos el campo de fecha en la que se realizó el parte de
obras.
Esto es lo único que tenemos en esta base de datos ya que todo el control lo realiza la base de
datos de Admin.
16
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
17
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Aquí podemos ver las clases con sus métodos, es la misma distribución que en la base de
datos.
Plantilla es el padre de una herencia de obreros y oficinistas y esta última a su vez tiene un
campo que es departamento que se encuentra en otra clase, además tenemos la clase de obra
que no se relacionará con nadie directamente dentro del diagrama.
Los métodos que encontramos son los típicos get y set así que no entraremos en detalles aquí.
18
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Gestión se encarga de las tareas simples, insert y select, Acción de las más complejas, acceder
a prodecures, funciones y conectarse, además esta última es el padre de una herencia de 5
clases, cada una realizará una función.
La clase Accion puede crearse a partir de una sesión y un request (la sesión es nuestra
conexión a la base de datos y el request es donde almacenamos los datos que pedimos
mediante los JSP), vacía o a partir de solo la sesión.
Tiene un método inicio que se desarrolla en el resto de clases de la herencia ya que cada uno
tendrá una función distinta.
19
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
La clase de gestión tiene dos métodos, el primero inserta datos y el segundo los consulta,
ambas piden una sesión y una query.
20
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Esta clase nos permite calcular el sueldo, el método inicio () está en blanco porque
obligatoriamente no devuelve nada y nosotros necesitamos que un método que nos devuelva
el sueldo para eso usamos inicio2 (), recibe una sesión y un request, y en este request deben
venir los datos:
IdP (id del obrero), fecha (para calcular el sueldo de ese mes).
21
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
La siguiente clase nos permite conectarnos a la base de datos y como vemos hay 2 métodos, el
primero sirve para conectarnos a la base de datos Admin usando un usuario de la base de
datos y el segundo nos conecta directamente a la base de datos User con el usuario
predeterminado, este proceso es seguro ya que a continuación (en el JSP) se realizará una
comprobación de que el usuario sea el correcto.
22
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Esta clase nos permite dar de alta a obreros u oficinistas, una vez pasados los datos que
necesitemos a través del request se llama al procedure de la base de datos correspondiente y
se da de alta al empleado.
23
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Esta clase es la que controla los partes de obra, tiene 3 métodos, el primero da de alta un
parte de obra en la base de datos User, los otros dos aceptan y rechazan respectivamente un
parte de obras, esto significa que si lo aceptan copian los datos de la base de datos de User a la
de Admin y si lo rechazan simplemente lo borran de la base de datos User, todo esto mediante
llamadas al procedimiento de la base de datos que se encargaba de esto.
24
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
La mayoría de los métodos de las distintas clases son los select o insert que necesitábamos
para obtener datos de la base de datos desde los JSP.
En esta clase tenemos 5 métodos, el primero nos devuelve un string para añadir un
departamento a la base de datos, el segundo nos devuelve un string para sacar los datos de un
departamento, el tercero hace lo mismo pero con todos los departamentos, y los dos últimos
nos crean un departamento a partir del resulset extraído de la tabla departamento o de la vista
que teníamos en la base de datos.
25
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
En esta clase el primer método nos devuelve un string para mostrar obras usando un filtro que
tenemos que añadir en el request, el segundo nos proporciona datos de una obra y sus
obreros, el tercero nos devuelve el siguiente id de obra, el cuarto nos muestra todas las obras
y el último nos muestra todos los obreros que hay en una obra.
26
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
El primer método nos devuelve el string para comprobar que exista un obrero con ese id y
contraseña, el siguiente crea un objeto obrero a partir de la vista de la base de datos, el
tercero nos muestra información de la visto y el cuarto nos calcula las horas aunque está en
desuso ya que usamos la función en la base de datos para calcular todo lo relativo al sueldo de
un obrero.
27
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
El primer método nos devuelve el string que nos muestra el departamento al que pertenece un
oficinista, el segundo crea un oficinista a partir del resultSet y un departamento de la vista de
la base de datos, el siguiente nos devuelve el string para asignar un departamento a un
oficinista y el último nos devuelve el string para ver la vista de oficinistas.
28
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
La siguiente imagen es un método para calcular el sueldo, la primera parte del if sirve para
calcular el del oficinista y la segunda calcula el de un obrero (aunque esta segunda parte ya no
la usamos porque tenemos la función en la base de datos).
29
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
30
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
31
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
32
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
3.3. Conexión
Dentro de nuestro proyecto, hemos desarrollado un sistema de red para poder poner en
contacto cada parte de Droidia. La mostraremos en el siguiente diagrama.
Como se observa en el diagrama, nuestros servidores, los cuales están en el mismo equipo, se
encuentran en la misma red local, realizada con cableado UTP de categoría 6, además de estar
interconectados mediante un router de fibra óptica, el cual la conexión máxima en red local es
de 100 Mbps y la conexión con Internet es de 30,64 Mbps de descarga y 3,15 Mbps de subida.
33
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
En No-IP, nos envía a través de una forma directa a la aplicación Droidia en el servidor Tomcat,
de esta manera podemos acceder desde el exterior a nuestro servidor.
En el diagrama podemos observar que la APP de Android nos avisa si no tenemos conexión a
Internet en nuestro dispositivo móvil.
En Hostinger, la seguridad no depende de nosotros, pero podemos colocarle una usuario y una
contraseña, los cuales se encriptan y realizan una conexión segura para que no puedan
interceptar el envío de paquetes.
34
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Dentro de nuestros servidores, el acceso desde el exterior está restringido por el firewall y la
configuración NAT dentro del router, de esta manera solo se puede acceder al servidor
Tomcat. A continuación se muestra la NAT realizada en el router para impedir el acceso desde
el exterior.
Como se observa, se realiza un acceso a través de los puertos hacia la IP de nuestro servidor
dentro de la red local.
El puerto 80 es el que permite el acceso a la página index.html dentro del servidor Tomcat, el
puerto 8443, permite conectarnos a las aplicaciones de Tomcat, de esta manera podemos
movernos dentro del servidor Tomcat sin que salte alguna restricción de acceso.
35
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Es la primera página web a la que accedemos, ya sea desde la APP o desde un navegador web,
esta página ha sido diseñada para comprobar que el servidor está activo, sino muestra un
formulario de contacto con el administrador del sistema para que diagnostique el problema de
la conexión.
La página implementa el lenguaje HTML y el PHP, ya que son los más adecuados para esto. Con
HTML realizamos el entorno y mediante PHP comprobamos las conexiones con el servidor y
configuramos el formulario y los envíos de mensajes al correo electrónico del administrador.
36
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
public_html
37
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
El archivo default.php, contiene un código mediante el cual se puede saber si el servidor está
activo o no.
<?php
ini_set('display_errors', 'Off');
$url="http://droidia.ddns.net/";
$headers = get_headers($url);
if (preg_match('/^HTTP\/\d\.\d\s+(200|301|302)/',
$headers[0])){
header('refresh:4; url=http://droidia.ddns.net/');
} else {
?>
38
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
2. Rellenamos el formulario.
39
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
3. Si dejamos sin completar algún campo, nos dirige a mailerror.html, sino envía el mensaje al
administrador.
40
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
41
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
3.5.2. MainActivity
Cuando la APP se inicia, primero comprueba si hay conexión con internet, después carga la
barra de progreso en la parte superior de la pantalla y cuando la web ha cargado, llega al
100%.
42
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Para comprobar la conectividad con internet de nuestro dispositivo, debemos crear una clase
que devolverá un boolean, indicando si hay o no internet.
En este código se observa que si no hay internet lanzamos un mensaje personalizado dentro
de un PopUp, el cual se encuentra en src > main > res > values > strings.xml.
43
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
4. Manual de usuario
La OVA está compuesta de tres partes, dichas partes se encuentran en tres DVD’s dentro de
este proyecto.
Para comenzar copie el contenido de los DVD’s llamados Droidia OVA seguidos de un número a
un carpeta.
Este proceso tardará un poco ya que pesan entre todos 12,3 GB.
Una vez realizada la copia, haga clic con el botón derecho del mouse al archivo .zip y
descomprímalo con WinRar u otro programa para descomprimir archivos de este tipo, al
finalizar encontrará una OVA de nuestro proyecto preparada para importar a VirtualBox.
¡ATENCIÓN!
Antes de importar la OVA, debe confirmar que su equipo puede mover este servidor ya que
necesita un tamaño de disco duro y de memoria RAM algo elevados.
Entre en VirtualBox e importe la OVA sin cambiar ningún parámetro, leyendo detenidamente
el mensaje que le saldrá al aceptar la importación.
En este mensaje se le explicará todo lo que necesita saber sobre el servidor y cómo se utiliza.
44
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Una vez terminada la importación, abra la máquina virtual y espere a que cargue.
Observará que el servidor Tomcat se inicia automáticamente gracias a una tarea que se
ejecuta al iniciar la máquina.
Dentro del servidor podremos acceder a todos los archivos de la aplicación a través del acceso
directo de JDeveloper del escritorio.
45
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
También podremos acceder a la base de datos desde el acceso directo de SQLDeveloper, cuyos
usuarios tienen la contraseña almacenada para mayor acceso a las tablas sin necesidad de
introducirlas, Dichas contraseñas se indican en el mensaje de importación de la OVA. Además
de que cada base de datos tiene un color identificativo.
Para utilizar la aplicación a nivel usuario, solo tendremos que iniciar Mozilla Firefox y conectará
automáticamente con el 127.0.0.1 para acceder al servidor Tomcat, es una manera fácil de
poder ver el funcionamiento del servidor sin necesidad de montar uno real.
46
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Para acceder a la aplicación como administradores, tendremos que poner como usuario el
nombre de la base de datos de administrador droidiaadm y de contraseña 1234.
Cada consulta a la base de datos tiene un buscador que nos mostraría todos los resultados con
solo poner % en la caja de búsqueda.
47
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
En los listados podemos tener la opción de exportarlos a PDF con un botón y guardándolos
como .pdf.
Los PDF podemos abrirlos con Mozilla ya que tiene instalado un complemento para ello, de
esta manera no necesitamos más programas instalados en la máquina virtual.
Dándole hacia atrás volveremos a la página anterior y podremos ir otra vez al menú.
48
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Dentro de la aplicación, nos encontraremos un menú con una opción para dar de alta un parte
de obra de ese día.
Colocaremos un filtro de búsqueda de obra, las cuales están dentro de la base de datos.
Y abrimos el parte de obra poniendo el día que hemos trabajado y las horas que hemos estado.
49
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
Curso: 2º ASIR
Grupo: B
Desarrollo de una aplicación con la intención de facilitar la labor de control del personal que
requieran transportes, en este caso hemos adaptado la aplicación a una empresa de
construcción.
Se ha creado un manual de usuario que explica detalladamente cada paso a seguir para poder
utilizar el servidor y acceder a todos los datos.
-Impresión Personal:
50
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
6. Gracias
-A la empresa Tecnova S.L.L. y a José Domínguez Martín por ser un tutor laboral excelente y
haber contribuido en el préstamo de un servidor IBM para realizar el proyecto de una manera
más real y cercana al mundo laboral.
-A los profesores que han coordinado la FCT y el proyecto, José Manuel Ruiz Morillo y Adolfo
Salto.
-Y a los profesores que nos han dado clases, que sin ellos no habríamos aprendido todo lo que
conocemos hoy en día.
51
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
7. Webgrafía
-Aplicación Android:
https://danielme.com/2012/05/19/android-webview-incrustar-un-navegador-en-nuestras-
apps/
https://www.movistar.es/particulares/test-de-velocidad/
-Hostinger:
http://www.hostinger.es/
-No-IP:
http://www.noip.com/
52
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
8. DVD’s
53
DROIDIA
Abel Domínguez Mateo Rubén Aguilar García
54