Uso de Couchbase Lite en una aplicación Java Gluon

Hace poco escribí sobre la creación de aplicaciones de escritorio con Couchbase Lite y JavaFX. Como se ha demostrado Couchbase es una excelente solución para el almacenamiento de datos y sincronización en una aplicación de escritorio debido a la Java SDK disponible. Sin embargo, soy consciente de que JavaFX no es para todo el mundo.

Existe otro framework similar para crear aplicaciones de escritorio en Java. Se llama Gluon, y también ofrece soporte para aplicaciones Android e iOS. Sin embargo, en este ejemplo nos centraremos estrictamente en el escritorio.

Vamos a ver cómo crear una aplicación de escritorio Gluon utilizando casi el mismo código que se encuentra en nuestro anterior ejemplo JavaFX.

Requisitos

Hay algunos requisitos para construir una aplicación Gluon que utilice Couchbase.

  • JDK 1.7+
  • IntelliJ IDEA
  • Pasarela de sincronización Couchbase

Normalmente no hago de esto un requisito, pero es mucho más fácil crear una aplicación Gluon con un IDE como IntelliJ, por eso está en la lista. Hay un plugin para IntelliJ que construirá un proyecto Gluon con Gradle y todo lo que necesitas.

Aunque Couchbase Sync Gateway no es realmente un requisito, es necesario si quieres añadir soporte de sincronización entre tu aplicación y Couchbase Server / otras plataformas y dispositivos.

Creación de un nuevo proyecto Gluon

Si decide utilizar IntelliJ para compilar su proyecto, asegúrese de haber descargado el plugin Gluon tal y como se describe a continuación aquí.

Utilizando IntelliJ, cree un nuevo proyecto, pero elija crear un proyecto Gluon Desktop - Proyecto de vistas múltiples con FXML como se ve a continuación.

En última instancia, depende de usted hacia dónde ir a partir de aquí, pero para mantenerse lo más cerca posible de esta guía, dé a su proyecto un com.couchbaselabs nombre del paquete y gluón clase principal.

Todo lo que sigue puede dejarse por defecto ya que sólo vamos a hacer una aplicación de dos páginas con Gluon. Cuando hayamos terminado, es de esperar que nos quedemos con una estructura de archivos y directorios parecida a la siguiente:

Te darás cuenta de que he creado algunos archivos adicionales, tales como CouchbaseSingleton.java y Todo.java.

Esencialmente tenemos vistas XML y controladores que van con esas vistas. Esto es muy similar a lo que vimos en un Aplicación JavaFX. A la hora de diseñar esas vistas, tenemos varias opciones. Podemos usar XML sin procesar, o podemos usar SceneBuilder. Ahora bien, no hay que confundir este SceneBuilder con el JavaFX SceneBuilder. Cometí este error y estuve dándome cabezazos durante bastante tiempo. La versión que queremos soportará aplicaciones Gluon.

Antes de empezar a añadir código de aplicación, debemos añadir nuestras dependencias al archivo Gradle del proyecto. Si no estás familiarizado con Gradle, hace el mismo trabajo que Maven o Ant. La sintaxis es diferente, pero yo personalmente lo encuentro un poco más limpio. Abra el proyecto de build.gradle e incluya el siguiente código:

Lo más importante aquí son las dependencias:

Esto incluirá la biblioteca Couchbase Lite, así como el tiempo de ejecución de la aplicación de escritorio para Gluon.

Con el proyecto listo, podemos empezar a desarrollar la aplicación.

Diseño de la capa de datos de Couchbase

Cuando trabajamos con Couchbase es una buena idea crear una instancia singleton del mismo. Esto significa que vamos a utilizar la misma instancia abierta durante toda la aplicación, hasta que decidamos cerrarla.

Abra el archivo src/main/java/com/couchbaselabs/CouchbaseSingleton.java e incluya el siguiente código:

Si viste la aplicación JavaFX que construí anteriormente, notarás que este singleton es el mismo entre los dos proyectos. Incluso puedes usar una versión similar para Android.

En el CouchbaseSingleton estamos creando y abriendo una base de datos local llamada proyecto fx. Esta base de datos se utilizará en toda la aplicación. También estamos creando nuestra vista Couchbase Lite para realizar consultas. Este todos emitirá un par clave-valor de id de documento y documento para cada documento de la base de datos local.

El método constructor es privado, lo que significa que no queremos que el usuario pueda instanciar un objeto desde él. En su lugar, queremos utilizar un método estático getInstance para hacer el trabajo.

Aunque no nos ocuparemos de la replicación hasta más adelante en la guía, queremos sentar las bases. El sitio startReplication nos permitirá definir una sincronización bidireccional con una pasarela de sincronización y el método stopReplication nos permitirá detener la replicación, quizás cuando se cierre la aplicación.

Ahora tenemos nuestras funciones para guardar y cargar datos.

En el guardar aceptamos un método personalizado Todo objeto. Este objeto sólo contiene un id, un título y una descripción. La clase se parece a esto:

Esta clase se encuentra en la sección src/main/java/com/couchbaselabs/Todo.java archivo. Lo que estamos haciendo en realidad es tomar el objeto y añadirlo como propiedades a un documento NoSQL de Couchbase. Después de guardar el documento y obtener un id, devolvemos el mismo documento con el id incluido.

La función de consulta ejecutará la vista que hemos creado anteriormente y añadirá cada uno de los elementos resultantes a un array de Todo poniendo fin a nuestro singleton de base de datos.

Creación de una vista para listar datos

Vamos a crear una aplicación que utiliza múltiples vistas Gluon en lugar de tratar de meter todo en la misma vista. Esto no debe confundirse con Couchbase Lite Views que están en el tema de los datos, no UI.

La vista por defecto será la primera vista que aparezca cuando iniciemos la aplicación. Esta vista mostrará una lista de todos nuestros elementos de tareas. Si no se utiliza SceneBuilder, el marcado XML que se encuentra en src/main/resources/com/couchbaselabs/views/primary.fxml tendría el siguiente aspecto:

 

La vista resultante tendrá el siguiente aspecto:

Verá en la imagen que hay una barra de navegación con un botón, pero no aparece en el diseño XML. En su lugar, el diseño sólo contiene la vista de lista. Sin embargo, el XML hace referencia a nuestro src/main/java/com/couchbaselabs/views/PrimaryPresenter.java archivo. Este es el archivo donde no sólo definimos la barra de navegación, sino cualquier lógica que alimente la vista en particular.

En src/main/java/com/couchbaselabs/views/PrimaryPresenter.java se parecerá mucho a nuestro proyecto JavaFX, con las diferencias en el componente de navegación.

En el archivo anterior tenemos la propiedad de vista de lista vinculada a la vista de lista real en el XML. Sin embargo, el código que realmente importa es el que se encuentra en el archivo inicializar método. En él hacemos tres cosas fundamentales.

En el código anterior definimos cómo aparecerán los datos en la lista. Por defecto sólo acepta datos de cadena, así que lo anulamos para que tome el título de nuestro Todo objetos.

En el listener anterior establecemos el título de nuestra barra de navegación así como el botón. Cuando se pulse el botón, la vista cambiará a nuestra vista secundaria.

Por último, nos queda ejecutar la consulta inicial de datos y rellenar la lista, así como estar atentos a los nuevos datos que vayan llegando. Si llegan cambios, se iterará sobre ellos y se revisarán los indicadores en cada documento modificado. Si se ha eliminado un indicador, los datos se borrarán de la lista. Si se ha producido un cambio, los datos de la vista de lista se eliminarán y, a continuación, se sustituirán. En caso contrario, sólo se añadirán los datos. Dado que el listener opera en un subproceso en segundo plano, los cambios en la interfaz de usuario deben realizarse dentro del subproceso Plataforma.runLater.

Esto nos lleva al segundo y último punto de vista.

Creación de una vista para guardar datos

La segunda vista tendrá un formulario y será responsable de que las entradas del usuario se añadan a la base de datos y se muestren en la vista anterior. El marcado XML que alimenta esta vista tendrá el siguiente aspecto:

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Nic Raboy, Defensor del Desarrollador, Couchbase

Nic Raboy es un defensor de las tecnologías modernas de desarrollo web y móvil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y móvil más fácil de entender.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.