Este blog com várias partes o ajudará a criar um aplicativo móvel de ponta a ponta usando os recursos líderes do setor do Couchbase Lite. Os aplicativos de ponta a ponta, escalonáveis e de nível de produção incluem os seguintes recursos:
-
- Um banco de dados incorporado - o armazenamento de dados localmente reduz as viagens de rede para um banco de dados centralizado para cada atividade no dispositivo. Isso contribui muito para melhorar a experiência do usuário.
- Sincronização com outros dispositivos móveis pares e com um servidor centralizado.
- Recursos analíticos avançados, pesquisa de texto completo e aprendizado de máquina no dispositivo.
Como há muito a ser abordado, dividimos este projeto em três partes. A Parte 1 apresenta o processo de criação de um aplicativo móvel que aproveita o Couchbase Lite e o utiliza como um banco de dados incorporado para armazenar dados. A Parte 2 (esta postagem) mostra como executar o Full-Text Search (FTS) no dispositivo. E a parte 3 mostrará o processo de sincronização dos dados com pares e um servidor Couchbase centralizado.
O que é o Couchbase Mobile?
O Couchbase é um banco de dados em nuvem NoSQL distribuído e premiado. Ele oferece versatilidade, desempenho, escalabilidade e valor financeiro inigualáveis em implantações na nuvem, no local, híbridas, distribuídas e de computação de borda.
As implantações móveis/edge são uma parte essencial do ecossistema digital que o Couchbase Mobile atende. Couchbase Mobile Inclui:
-
- Banco de dados Couchbase Lite incorporado para dispositivos de borda
- Sync Gateway de alto desempenho para sincronização ponto a ponto e sincronização centralizada de servidores
- Os data centers de borda alimentados pelo Couchbase Server podem ser implantados na nuvem, no local ou em data centers de borda locais.
Visão geral do aplicativo móvel
O código para esse aplicativo de demonstração está disponível em meu Repositório do GitHub do Couchbase Mobile. Faça o download do arquivo Rateit.zip e extraia os arquivos para sua pasta local.
Como alternativa, você pode seguir as instruções deste blog para criar o aplicativo do zero.
A funcionalidade do aplicativo é dividida em três partes
-
- Enviar solicitações de classificação
- Receber solicitações de classificação de outras pessoas
- Visualizar a solicitação classificada retornada por outros
Para obter uma compreensão mais profunda dos vários componentes do aplicativo, consulte Parte 1, onde enviamos/recebemos solicitações de classificação.
Adição de pesquisa de texto completo
Neste exemplo, adicionamos um simples pesquisa e o código para adicionar um índice invertido (usado por sistemas de pesquisa) que recebe a entrada do usuário e exibe resultados relevantes.
Primeiros passos: Revisar a documentação do CBLite
Consulte o documentação para entender os vários componentes de um aplicativo de banco de dados Couchbase Lite. Eu crio um banco de dados totalmente novo para esse aplicativo quando ele é chamado pela primeira vez. Como alternativa, o aplicativo também pode usar um banco de dados pré-criado.
As etapas para incorporar o banco de dados podem ser encontradas na seção Documentação do Couchbase Lite. Revise cada uma das seções para aprender a:
-
- criar e abrir um banco de dados
- gravar um documento no banco de dados incorporado
- escrever consultas para recuperar o documento
- expirar ou excluir um documento
- criar índices de pesquisa de texto completo
- criar uma expressão de pesquisa FTS
- criar uma consulta que incorpore a expressão de pesquisa
Pré-requisitos para a criação de aplicativos
Este aplicativo foi desenvolvido para dispositivos Android usando os seguintes pré-requisitos de software e hardware que você precisa conhecer:
-
- Você precisa entender os fundamentos da criação de aplicativos com o Android Studio e da programação em Java.
- Este aplicativo de demonstração e as capturas de tela relacionadas são provenientes da criação do aplicativo em um computador macOS.
- Usamos (disponível gratuitamente) Android Studio 2020.3 para criar aplicativos móveis para dispositivos Android.
- É usada a versão 3.0.0-beta02 do Couchbase Lite. As bibliotecas necessárias serão incorporadas ao código e não há necessidade de fazer download do software manualmente em seu desktop.
Compreensão do layout
Os arquivos de layout são arquivos XML que descrevem a tela do aplicativo móvel. Por exemplo, activity_main.xml tem o ENVIAR PARA, MENSAGEM, ASSUNTO além das duas visualizações de lista que mostram as solicitações recebidas e as recebidas.
Ele também define a função a ser invocada quando o CLIQUE PARA ENVIAR SOLICITAÇÃO DE CLASSIFICAÇÃO, SOLICITAÇÕES DE CLASSIFICAÇÃO RECEBIDAS e SOLICITAÇÕES DE CLASSIFICAÇÃO RECEBIDAS são pressionados. O código XML pode ser escrito manualmente ou gerado automaticamente, definindo os atributos na variável atributos seção do designer. Aqui, adicionamos uma entrada de pesquisa ao centro do layout:
Revisão do código
Há um arquivo de código que atualizamos para adicionar a lógica de pesquisa ao aplicativo, Mainactivity.java.
Localizar Mainactivity.java sob o java -> com.example.rateit e cole o seguinte código dentro da classe Atividade principal. O novo código é adicionado ao exemplo anterior na parte 1 - ele é encontrado na linha 8 e nas linhas 12-27 abaixo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
public void receivedata( View view ) throws CouchbaseLiteException { Context context = this; CouchbaseLite.init(context); userArray.clear(); DatabaseConfiguration config = new DatabaseConfiguration(); config.setDirectory(context.getFilesDir().getAbsolutePath()); Database database = null; File dbFile = new File(context.getFilesDir(), "rateitdb"); try { database = new Database("rateitdb", config); } catch (CouchbaseLiteException e) { e.printStackTrace(); } if (!dbFile.exists()) { database.createIndex("descFTSIndex", IndexBuilder.fullTextIndex(FullTextIndexItem.property("URL"))); } SearchView search = (SearchView) findViewById(R.id.searchView); Expression searchExp = FullTextExpression.index("descFTSIndex").match(String.valueOf(search.getQuery())) ; Query query = null; if (search.getQuery().toString().trim().isEmpty()) { query = (Query) QueryBuilder.select(SelectResult.all()).from(DataSource.database(database)) .where(Expression.property("to").equalTo(Expression.string("rangana")) .and(Expression.property("type").equalTo(Expression.string("received")))); } else { query = (Query) QueryBuilder.select(SelectResult.all()).from(DataSource.database(database)) .where(Expression.property("to").equalTo(Expression.string("rangana")) .and(Expression.property("type").equalTo(Expression.string("received"))) .and(searchExp)); } int numrows = query.execute().allResults().size(); Toast.makeText(getApplicationContext(), "num rows:::"+ numrows , Toast.LENGTH_LONG).show(); try { query.execute().allResults().forEach(result -> { Dictionary thisDocsProps = result.getDictionary(0); String sendto = thisDocsProps.getString("sendto").trim(); String URL = thisDocsProps.getString("URL").trim(); String rating = thisDocsProps.getString("rating").trim(); float ratingstars = thisDocsProps.getFloat("ratingstars"); int stars = (int) ratingstars; rating = String.valueOf(thisDocsProps.getFloat("ratingstars")); userArray.add(new User(sendto, URL, rating,ratingstars)); }); } catch (CouchbaseLiteException e) { e.printStackTrace(); } userAdapter = new UserCustomAdapter(MainActivity.this, R.layout.customlayout, userArray); userList = (ListView) findViewById(R.id.listView); userList.setItemsCanFocus(false); userList.setAdapter(userAdapter); userList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, final int position, long id) { Log.i("List View Clicked", "**********"); Toast.makeText(MainActivity.this, "List View Clicked:" + position, Toast.LENGTH_LONG).show(); } }); database.close(); } |
O dados recebidos As funções são ativadas quando SOLICITAÇÕES DE CLASSIFICAÇÃO RECEBIDAS é clicado. Ele exibe todas as solicitações de classificação recebidas, executando uma consulta no banco de dados local para obter os registros.
Ele permite que você insira uma classificação e cria um registro JSON com a classificação. Quando o registro TAXA é clicado, ele grava a solicitação de volta no banco de dados com um tipo de documento de classificado. Se o DELETE é clicado, o registro é excluído definindo-se o tempo de vida do documento (TTL) para expirar.
As novas seções de código funcionam da seguinte forma:
-
- Primeiro adicionamos um índice FTS se o arquivo de banco de dados não existir, indicando a primeira entrada no aplicativo.
- Crie a expressão de pesquisa se o usuário inserir uma string de pesquisa
- Crie a consulta usando a expressão de pesquisa e execute-a
Instalação da fiação do layout
O código a seguir precisa ser adicionado a activity_main.xml. Ele adiciona o botão de pesquisa e seu rótulo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<SearchView android:id="@+id/searchView" android:layout_width="226dp" android:layout_height="40dp" android:layout_marginStart="4dp" android:layout_marginEnd="8dp" android:layout_marginBottom="4dp" android:background="@color/white" app:layout_constraintBottom_toTopOf="@+id/listView" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/textView4" app:layout_constraintTop_toBottomOf="@+id/Received" /> <TextView android:id="@+id/textView4" android:layout_width="158dp" android:layout_height="38dp" android:layout_marginStart="10dp" android:layout_marginBottom="4dp" android:background="#7BE67F" android:backgroundTint="#7BE67F" android:fontFamily="sans-serif-black" android:gravity="center" android:text="Search Text" android:textAllCaps="true" android:textStyle="bold" app:layout_constraintBottom_toTopOf="@+id/listView" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/Received" /> |
Compilação do código
Quando todo o código tiver sido atualizado, clique em Build → ReBuild Project. Quando isso for bem-sucedido, clique em Criar → Executar.
Você será solicitado a escolher o emulador na primeira vez que executar o aplicativo, por exemplo, selecione o NEXUS 5X API 25, como eu fiz. Quando a execução estiver concluída, a página principal terá a seguinte aparência:
Agora você implantou com êxito o código no emulador de sua escolha. Quando o usuário digita uma parte da string de URL, os resultados relevantes são exibidos.
Próximas etapas
Esta é a segunda parte da série de blogs, Criação de um aplicativo móvel com o Couchbaseque se concentra em uma solução móvel completa de ponta a ponta. A primeira parte mostrou como criar um aplicativo que usa um banco de dados Couchbase Lite incorporado para armazenar, recuperar e excluir documentos armazenados localmente no dispositivo.
A Parte 2 adicionou a capacidade de fazer pesquisas baseadas em texto, e a terceira e última parte desta série adicionará a sincronização ponto a ponto e a sincronização com um banco de dados centralizado.
Os principais recursos mencionados nesta postagem incluem:
- Parte 1 - Criação de um aplicativo móvel com o Couchbase
- Repositório do GitHub - incluindo o código do projeto do aplicativo Rateit
- Couchbase Mobile - informações sobre o produto
- Documentação do Couchbase Lite
- Estúdio Android

