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:
Livro fundamental para iniciantes em BREW.
Simplifying Access to BREW Databases : (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.