Desenvolvendo em BREW - Parte 3 – Etapa 04

Utilizando a classe DB

Para utilizarmos a classe DB existem três passos básicos:

·                     sua declaração e instanciação no AEEApplet da aplicação (representado pela struct FuelManager);

·                     a abertura e fechamento da base na inicialização e no fechamento da aplicação;

·                     utilização dos métodos de manipulação de dados.

 

O arquivo FuelManager.h (Listagem 7) já foi devidamente explanado no artigo introdutório da aplicação Fuel Manager (edição 12 da WebMobile). O que há de novo nesse arquivo é a declaração do "atributo" DB* fuelManagerDB (Listagem 7, linha 031) que permitirá o acesso à classe acessória DB de qualquer parte de nossa aplicação.

 

Listagem 7. Conteúdo do FuelManager.h

001 ...

002 typedef struct _FuelManager

003 {

004     /*

005       Atributo AEEApplet - Applet base da plataforma BREW.

006       Precisa ser NECESSARIAMENTE o primeiro elemento da Struct 007 por causa

008       do alinhamento de bits na sobreposição de memória do Applet 009 original.

010     */

011     AEEApplet      a ;

012

013     /*

014       Permite o acesso direto as informações sobre o device onde a 015 aplicação

016       está sendo executada.

017     */

018     AEEDeviceInfo  m_DeviceInfo;

019

020     /*

021       Controla a tela que está corrente exibida no display. Caso 022 não haja

023       nenhuma tela o valor desse atributo deve ser NULL.

002     */

025     Screen* currentScreen;

026

027     /*

028       Componente que permite o acesso a base de dados da

029 aplicação.

030     */

031     DB* fuelManagerDB;

032

033 } FuelManager;

034  ...

 

A inicialização desse atributo deve ser feita junto com os restos dos atributos da aplicação, ou seja, no "método" FuelManager_InitAppData (Listagem 8, linha 037) e sua destruição também segue a mesma regra, deve ser feita no método FuelManager_FreeAppData (Listagem 8, linha 045). Uma vez instanciado, precisamos abrir o banco quando a aplicação for iniciada e fechar quando ela for finalizada, o que pode ser visto no método FuelManager_HandleEvent (Listagem8, linha 012 e 018 respectivamente).

 

Listagem 8. Conteúdo do FuelManager.cpp

001 ...

002 static boolean FuelManager_HandleEvent( FuelManager* pMe,

003                                         AEEEvent eCode,

004                                         uint16 wParam,

005                                         uint32 dwParam )

006 { 

007     boolean handled = FALSE;

008

009     switch (eCode)

010     {

011              case EVT_APP_START:

012                       pMe->fuelManagerDB->open();

013                       showScreen(pMe, SPLASH_SCREEN);

014                       ISHELL_SetTimer(pMe->a.m_pIShell,

015                                                             100,timerCallBack,pMe);

016                       return(TRUE);

017              case EVT_APP_STOP:

018                       pMe->fuelManagerDB->close();

019                       return(TRUE);

020              case EVT_SHOW_SCREEN:

021                       showScreen(pMe,wParam);

022                       return(TRUE);

023              case EVT_APP_RESUME:

024                       if(pMe->currentScreen!=NULL){

025                                 pMe->currentScreen->draw();

026                       }

027                       return(TRUE);

028              default:

029                       if ( pMe->currentScreen != NULL ){

030                         handled = pMe->currentScreen->handle_Event(

031                                                                      eCode,wParam,dwParam);

032                       }

033     }

034     return handled;

035 }

036

037 ...

 

Exemplificaremos o uso das funções da classe DB através do método inserir, sendo utilizado na tela de inserção e visualização de registros AddViewRefuelScreen. Essa classe também já foi devidamente explanada no artigo desenvolvendo GUI em Brew - Parte 1 (edição 13 da WebMobile). Adicionamos à classe da tela apenas o método saveRefuel(), que recupera de cada componente gráfico seus valores e utiliza o método insert da instância da classe DB referenciada pelo FuelManagerApplet (Listagem 9, linha 018) para gravar os valores na base de dados. Após esse procedimento o registro está devidamente salvo.

 

Listagem 9. Método saveRefuel() da classe AddViewRefuel

001 ...

002 void AddViewRefuelScreen::saveRefuel(){

003

004     AECHAR date[15];

005     int    date_lentgth;

006     AECHAR temp[10];

007     float  litros;

008     float  valor;

009     int32  odometro;

010

011     IDATECTL_GetDateString( this->pDate, date, 15, &date_lentgth,         

                                                DFMT_DD_MON_YYYY);

012     ITEXTCTL_GetText(this->pTextLitros,temp,9);

013     litros = WSTRTOFLOAT(temp);

014     ITEXTCTL_GetText(this->pTextValor,temp,9);

015     valor = WSTRTOFLOAT(temp);

016     ITEXTCTL_GetText(this->pTextOdometroTotal,temp,9);

017     odometro = ATOI((const char*)temp);

018     ownerApplet->fuelManagerDB->

                                                   insert(date,&litros,&valor,&odometro);

019 }

020 ...

Conclusão

Nesse artigo aprendemos como utilizar a API de armazenamento de dados do gerenciador de registros da plataforma BREW.

Links e referências interessantes

BREW API Reference

Presente na documentação do Qualcomm BREW, é perfeita para desenvolvedores que desejam consultar a API.

 

BREW Forums (disponível em http://brewforums.qualcomm.com/)

Fórum para usuários da plataforma BREW.

 

Developing Software for the Qualcomm BREW Platform: Ray Rischpater

Livro fundamental para iniciantes em BREW.

 

Simplifying Access to BREW Databases : Ray Rischpater (disponível em http://www.developer.com/ws/brew/article.php/3505906)

Artigo de Richpater (em inglês) que descreve a API de banco de dados em BREW.