Repeat 1000 times: apoyarme not apollarme LOL
[PFCLatex/.git] / capitulo6 / capitulo6.tex
index a27bef1..16d7937 100644 (file)
@@ -1,6 +1,6 @@
 \chapter{Desarrollo}
 
-Durante la fase de desarrollo se implementará y documentará la aplicación. Para la implementación de la aplicación Android se eligió el IDE Eclipse con el plugin Android para el desarrollo de aplicaciones para esta plataforma. En cambio, para la Web, se usó PHP como lenguaje de programación y como IDE vim\footnote{Para conocer más acerca del mejor editor de textos del mundo (¡y no provoca dolores en los dedos meñiques!) ver: \url{http://www.vim.org/}} con ctags. En realidad para Android (programación Java) también podría haberse usado vim pero el desarrollador deseaba experimentar con el popular y no tan poderoso Eclipse.
+Durante la fase de desarrollo se implementará y documentará la aplicación. Para la implementación de la aplicación Android se eligió el IDE Eclipse con el plugin Android para el desarrollo de aplicaciones para esta plataforma. En cambio, para la Web, se usó PHP como lenguaje de programación y como IDE vim\footnote{Para conocer más acerca del mejor editor de textos del mundo (¡y no provoca dolores en los dedos meñiques!) ver: \url{http://www.vim.org/}} con ctags. En realidad para Android (programación Java) también podría haberse utilizado vim pero el desarrollador deseaba experimentar con el popular y no tan poderoso Eclipse.
 
 No es objetivo de esta memoria explicar cada una de las líneas de código de las que se componen las aplicaciones implementadas, por tanto, en este capítulo lo que se mostrará será todos los pasos que con lleva la realización de una determinada acción que se ha considerado es representativa del funcionamiento global del sistema. Junto a esta acción se mostrarán y explicarán algunas partes del código que sirven para que el lector entienda qué elementos software ha habido que desarrollar para que dicha acción llegue a buen puerto.
 a documentación ha sido realizada durante la codificación de la aplicaciones usando Javadoc y phpDocumentor 2. Ambos se basan en la interpretación de los comentarios escritos en las clases y métodos para crear documentación en diversos formatos que pueden ser accedidos por usuarios que quieran conocer o tengan que usar o reutilizar el código implementado.
@@ -15,6 +15,7 @@ Desde el cliente y tras un cambio de posición geográfica de un usuario, el dis
 
 La instancia local URLAuth contiene la dirección donde el servicio Web RESTful (ver sección \ref{cap5:ModeloWSDL}) está a la escucha, en este caso y tal y como dicta Symfony\footnote{Web Services Symfony 1.4: \url{http://symfony.com/legacy/doc/jobeet/1_4/en/15?orm=Doctrine}} es necesario especificar en la propia URL el tipo de dato que deseamos recibir (en este caso, JSON)
 
+\cleardoublepage
 
 \lstset{language=Java, basicstyle=\small, breaklines=true, float=[P], floatplacement={P}, frame=single, captionpos=b, caption={Código para la ejecución de tareas en paralelo}, label={list:JavaUpdateLocation}}
 \lstinputlisting{source/JavaUpdateLocation.java}
@@ -31,6 +32,8 @@ El StringBuilder contiene la respuesta JSON devuelta por el servidor Web. En el
 
 En el Listado~\ref{list:JavaHTTPJSONtreatment}) se observa también la existencia del método sendBroadcast. Habíamos mencionado previamente que la tarea de descarga de anuncios se ejecutaba en segundo plano por parte de un Servicio Android multihilo. Necesitamos un mecanismo para por un lado actualizar la interfaz del usuario mostrando los nuevos anuncios recibidos y por otro generar una notificación en la barra de tareas del dispositivo Android. Para llevar a cabo estos requerimientos se hace uso de un BroadCastReceiver proporcionado por la API Android que notificará a las Activities que escuchen dicho broadcast sobre la necesidad de actualizar los datos que están mostrando al usuario.
 
+\cleardoublepage
+
 \lstset{language=Java, basicstyle=\small, breaklines=true, float=[P], floatplacement={P}, frame=single, captionpos=b, caption={Código para la persistencia de los datos recibidos}, label={list:JavaHTTPJSONtreatment}}
 \lstinputlisting{source/JavaHTTPJSONtreatment.java}
 
@@ -55,10 +58,14 @@ Posteriormente hay que atrapar la petición GET HTTP para tratarla y devolver un
 \lstset{language=PHP, basicstyle=\small, breaklines=true, float=[P], floatplacement={P}, frame=single, captionpos=b, caption={Código para el tratamiento del servicio Web}, label={list:PHPWebServiceActions}}
 \lstinputlisting{source/PHPWebServiceActions.php}
 
+\cleardoublepage
+
 El método que lleva a cabo todo el peso de búsqueda en base de datos de anuncios localizados en las cercanías del usuario es getAdsByGPSAndUserIdAndLanguageId. Si este método no devuelve nada, significa que o bien no hay anuncios en esas coordenadas geográficas o el usuario no se ha subscrito a categorías relacionadas con anuncios localizados en ese área en el cual se encuentra actualmente. El método getParameters() devuelve un array con los parámetros de entrada suministrados en el GET HTTP. En este caso, dichos parámetros se insertan directamente en la URL y fueron definidos en el Listado~\ref{list:PHPWebServiceRouting}) dentro de la entrada url como \emph{longitude} y \emph{latitude}.
 
 El Listado~\ref{list:PHPWebServiceModel}) muestra como haciendo uso del id del usuario dentro del sistema (lo conocemos porque tuvo que hacer previamente \emph{log in} y envía su cookie en cada petición GET HTTP al servicio Web), la latitud y la longitud se puede mediante peticiones a la base de datos averiguar si existen anuncios de interés en las cercanías del usuario. Actualmente el radio de acción al rededor del cual se buscará en la base de datos PostGIS por posibles anuncios de interés se define directamente en el código PHP; en posteriores implementaciones sería posible por ejemplo, que en función de si el servicio es premium o no, el usuario pueda seleccionar el radio de acción al rededor del cual desea que se busquen anuncios en su posición actual.
 
+\cleardoublepage
+
 \lstset{language=PHP, basicstyle=\small, breaklines=true, float=[P], floatplacement={P}, frame=single, captionpos=b, caption={Código para la búsqueda de anuncios en la base de datos PostgreSQL/PostGIS}, label={list:PHPWebServiceModel}}
 \lstinputlisting{source/PHPWebServiceModel.php}
 
@@ -70,5 +77,7 @@ Se requiere de varias peticiones a la base de datos para poder obtener al final
 
 Y finalmente en el Listado~\ref{list:PHPWebServiceView}) se genera el código JSON que será recibido y procesado por la aplicación cliente Android tal y como se mostró en el Listado~\ref{list:JavaHTTPJSONtreatment})
 
+\cleardoublepage
+
 \lstset{language=PHP, basicstyle=\small, breaklines=true, float=[P], floatplacement={P}, frame=single, captionpos=b, caption={Código para la generación de datos en formato JSON}, label={list:PHPWebServiceView}}
 \lstinputlisting{source/PHPWebServiceView.php}