Jueves 12 de enero de 2011
Hola de nuevo a todos. Voy a pasar a contaros un poco donde me encuentro actualmente y hacia donde voy. Tambien creo que es un buen momento para mostrar algunos de los diagramas de análisis y diseño en los que estoy trabajando relacionados con el desarrollo. Como sabéis me he quedado desarrollando la parte de contactos. La idea es que desde la gestión de los grupos, de alguna forma, la aplicación enlace con los participantes (contactos). Inicialmente mi idea era proporcionar una doble funcionalidad, de forma que los participantes pudieran obtenerse tanto de la agenda del terminal como manualmente mediante la introducción de la información necesaria. La introducción manual del participante de momento la voy a aparcar hasta la V2 de IF. Bien, pues dicho lo dicho, me puse con el asunto de los contactos. El primer asunto a resolver es sobre la diferenciación entre dos entidades que parecen lo mismo pero que no lo son. Me refiero a las entidades que representan por un lado un contacto de un grupo dentro de IF y por otro un contacto con origen en el terminal (a traves del Proveedor de contenidos). Bien pues dicho y presentadas ambas entidades ya tengo medianamente terminada la capa de persistencia de ambas. Esta capa queda resuelta mediante dos nuevas clases con sus correspondientes Interfaces, que son:
- ContactosDAO : capa de persistencia para los contactos de un grupo.
- ContactosAgendaDAO : capa de persistencia para los contactos con origen en el terminal (Content Provider).
- IOperacionesContactoDAO
- IOperacionesContactoAgendaDAO
Actualmente, a parte de que estoy un poco off, tengo un inconveniente que no me ha dejado continuar al ritmo inicial. En inconveniente es que no termino de entender cómo recuperar cierta información de un contacto, en mi caso, necesito recuperar los datos (teléfonos moviles, direcciones de mail) de contacto de un contacto. De hecho la funcionalidad a implementar durante la seleccion de un contacto tiene que pasar por:
- Un contacto (futuro participante) solo aparece en la lista de contactos seleccionables si existe para él alguna forma de contacto válida.
- Una vez se selecciona un contacto, IF debe mostrar una lista donde el usuario pueda seleccionar la forma de contacto preferida para él, bien sea un teléfono móvil para el envío de un SMS o bien una dirección de mail para el envío del consiguiente correo. En cualquiera de los casos si el contacto tiene diversas posibilidades el sistema debe dar al usuario la posibilidad de seleccionarlo.
Retomando un poco sobre el asunto de la arquitectura que vimos en su día cuando planteabamos el proyecto, quiero mostraros un ejemplo de aquella idea. En este diagrama podemos apreciar cómo estoy realizando el control desde la capa de presentacion hasta la capa de datos: Como podeis apreciar en este diagrama de secuencia las entidades que aparecen son:
- act_Grupos: Act_Grupos -> Se corresponde con la propia actividad que muestra los grupos existentes y da acceso a las operaciones CRUD de los grupos
- act_NuevoGripo: Act_NuevoGrupo -> Elemento de negocio que representa un grupo en IF
- gruposDAO: GruposDAO -> Objeto/Clase ya perteneciente a la capa de persistencia de IF y que gestiona las operaciones físicas relacionadas con grupos.
- objetosGlobales:ObjetosGlobales -> Clase global de apoyo.
Jueves 5 de enero de 2011
Hola de nuevo, hoy no me voy a enrollar demasiado con el texto debido a que todavía no tengo lista toda la documentación e implementación que quiero subir de una tacada. Después de unos días liadete con la familia principalmente debido a las fiestas de navidad, hoy he sacado un rato y me he puesto de nuevo con el asunto. Hoy he dejado enlazada la actividad de grupos con la agenda del terminal. Por el momento no me ha dado tiempo a dejarlo del todo ajustado y ademas me faltan muchas funcionalidades relacionadas con la implementación en la que estoy trabajando, así que hoy no es buen día para subir nada. Esperaré a tener completa la implementación de los participantes para los grupos para subir una nueva versión de IF y nueva documentación técnica del desarrollo. Pienso que en un par de días podría tenerlo concluido el desarrollo y en unos días mas la documentación del mismo. Un saludo a todos y Feliz 2012.
Lunes 26/Martes 27 de diciembre de 2011 (Deprecated)
Bueno, pues hoy inauguro la lista de Bug Fixes identificados por mí. Justamente estaba esta mañana probando la pantalla de grupos y en una de las operaciones me he percatado de un problema, asi que nada, lo dejo solucionado y prosigo con el asunto de la asociación de contactos a los grupos:
id 1: 26 de diciembre de 2011.Descripción: Teniendo un grupo seleccionado en la actividad de gestión de grupos, si se selecciona el mismo grupo se produce un null pointer. Solución: no siempre existe un cliente para los eventos de los controles personalizados. Hay que validar que existe suscriptor antes del reenvío del evento. (Solucionado)id 2: 14 de febrero de 2012. Descripción: Se puede eliminar un grupo existente en el sistema estando relacionado con un evento todavía existente. El problema es que después de dicha eliminación la actividad de gestión de eventos queda inservible debido al error de integridad producido. Solución: como sabéis, y si no lo sabéis yo os lo digo, SQLite no incorpora por el momento mecanismos automáticos de integridad, y por lo tanto hay que implementarlos. He implementado integridad a nivel de capa DAO. Para mas información podéis consultar la entrada del log de desarrollo de 14 de febrero de 2012. (Solucionado)id 3: 3 de marzo de 2012. Descripción: Si en un grupo tenemos un contacto pepito y lo agregamos de nuevo, se produce una excepcion. Solución: En la lista de contactos de agenda solo deben aparecer los contactos no existentes ya en el grupo. (Solucionado)- id 4: 3 de marzo de 2012. Descripción: Si el nombre del contacto es muy largo, con el terminal en modo vertical se dejan de ver los iconos de la zona derecha del layout. En modo horizontal se soluciona si el nombre del contacto no es tan largo como para exceder la linea, en otro caso pasa lo mismo. Solución: Para nombres largos hay que hacer una especie de resumen algo así como NOMBRE_MUY_MUY_LARGO______…. (Investigar)
- id 5: 3 de marzo de 2012. Descripción: El icono para añadir elementos en todos los layouts se desplaza a la derecha debido al contenido de los elementos inferiores. Debemos controlar los anchos máximos de las columnas de los mantenimientos. (Investigar)
- id 6: 27 de septiembre de 2012. Descripción: Las fechas en los mensajes de notificación son incorrectas. Relacionado con id 8.
- id 7: 01 de octubre de 2012. Descripción: En la actividad de gestión de eventos, el frontal permite el borrado de un evento aunque dicho evento haya ya sido sorteado. A bajo nivel el sistema esta funcionando correctamente por que el evento, aunque desaparece del interfaz, no se esta borrando de la bbdd. Por lo tanto hay que solucionar el control en dicho formulario.
- id 8: 01 de octubre de 2012. Descripción: La grabación de la fecha de evento seleccionada por el usuario a la hora de la creación del mismo se realiza de forma incorrecta. Me he dado cuenta ahora en el momento de ver las notificaciones de las fechas de los mismos.
- Dotar a la aplicación de un formato lo mas uniforme posible.
- Rehusar el código/conocimiento ya adquirido.
Como ya he comentado, y despues de solucionar los pequeños problemas encontrados, hoy comienzo con el asunto de la asignación de contactos a grupos….Voy a aprovechar para ir dejando el esquema de bbdd en el que estoy trabajando y que poco a poco ira tomando forma. Hoy he agregado la parte relativa a contactos de los grupos: Ojo con las tablas por que para nosotros la importante es la de la relación entre grupos y contactos. La tabla de contactos, aunque la he dibujado en el esquema, no es nuestra responsabilidad. Esta tabla sera proporcionada por el sistema a través de un proveedor de contenidos. Yo la he dibujado para tener mas claro el modelo físico. Aquí os dejo el código relativo a la creación de la bbdd existente en el SQL Helper de la aplicación: String[] sqlCreate = new String[] { "CREATE TABLE Grupo (_id INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT NOT NULL)", "CREATE TABLE Evento " + "(_id INTEGER PRIMARY KEY AUTOINCREMENT," + "nombreVisible TEXT NOT NULL, nombreInterno TEXT NOT NULL, descripcion TEXT," + "grupoid INTEGER REFERENCES Grupo(_id)," + "cantidad INTEGER NOT NULL," + "fechahora TEXT NOT NULL)", "CREATE TABLE Grupo_has_Contacto " + "(Grupo_id INTEGER NOT NULL REFERENCES Grupo(_id), Contacto_id INTEGER NOT NULL, " + " PRIMARY KEY (Grupo_id,Contacto_id))"};
Pues ya dicho esto, y preparadas las bases de las nuevas actividades, mañana continuaremos con la labor, si mi familia me lo permite, claro.
Martes 20/Miercoles 21 de diciembre de 2011
Tareas atacadas hoy:
- Actualización de los DAOs de Grupos y de Eventos para el lanzamiento de excepciones en los métodos add. La antigua implementación usando los métodos insert () ha sido modificada para usar los métodos insertOrThrow () de forma que ahora se realiza un control de la inserción usando Excepciones.
- Modificación de las clases cliente de los DAOs de Grupos y Eventos para el tratamiento correcto de las nuevas excepciones lanzadas por los DAO. Se ha eliminado la validación «guarrera» inicialmente planteada para dar paso a una nueva implementación en la que se captura y se tratan las posibles causas de excepción de los DAOs de orden inferior.
- Validación del nuevo control de grupos.
- Estudiar los ContentProvider para dar solución a la asignación de los contactos a los grupos
- Definición de las interfaces de usuario anteriores
- Revisión de la gestión de eventos. El alta de los campos date no se esta ejecutando correctamente.
- Definición de la interfaz de usuario para la modificación de eventos.
You must be logged in to post a comment.