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*/
011AEEAppleta ;
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*/
025Screen* currentScreen;
026
027/*
028 Componente que permite o acesso a base de dados da
029 aplicação.
030*/
031DB* 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 {
007boolean handled = FALSE;
008
009switch (eCode)
010{
011case EVT_APP_START:
012pMe->fuelManagerDB->open();
013showScreen(pMe, SPLASH_SCREEN);
014ISHELL_SetTimer(pMe->a.m_pIShell,
015100,timerCallBack,pMe);
016return(TRUE);
017case EVT_APP_STOP:
018pMe->fuelManagerDB->close();
019return(TRUE);
020case EVT_SHOW_SCREEN:
021showScreen(pMe,wParam);
022 return(TRUE);
023case EVT_APP_RESUME:
024if(pMe->currentScreen!=NULL){
025pMe->currentScreen->draw();
026}
027return(TRUE);
028default:
029if ( pMe->currentScreen != NULL ){
030 handled = pMe->currentScreen->handle_Event(
031eCode,wParam,dwParam);
032}
033}
034return 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
004AECHAR date[15];
005intdate_lentgth;
006AECHAR temp[10];
007float litros;
008float valor;
009int32 odometro;
010
011IDATECTL_GetDateString( this->pDate, date, 15, &date_lentgth,
DFMT_DD_MON_YYYY);
012ITEXTCTL_GetText(this->pTextLitros,temp,9);
013litros = WSTRTOFLOAT(temp);
014ITEXTCTL_GetText(this->pTextValor,temp,9);
015valor = WSTRTOFLOAT(temp);
016ITEXTCTL_GetText(this->pTextOdometroTotal,temp,9);
017odometro = ATOI((const char*)temp);
018ownerApplet->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.