lunes, 5 de febrero de 2007

Manual del programador de J2ME amb J2MESDLIB utilitzant Netbeans

Requisits:

-Netbeans 5.5 amb Java: Aquest IDE per java es pot aconseguir a: http://www.netbeans.info/downloads/index.php

-Netbeans Mobility Pack 5.5: Això és un Add-on de Netbeans i es pot aconseguir a:
http://www.netbeans.info/downloads/index.php?rs=11&p=4

-LSDATALIB: És la llibreria de tractament de fitxers desenvolupada per dfwikiteam. Aquesta llibreria es pot aconseguir a:
http://morfeo.upc.es/crom/mod/wiki/view.php?id=16&page=view/J2MEMicroDBTests&gid=0&uid=0

-J2MESDLIB: És la llibreria que permet treballar amb taules relacionals en dispositius mòbils desenvolupada per dfwikiteam. Aquesta llibreria es pot aconseguir a:
http://morfeo.upc.es/crom/mod/wiki/view.php?id=16&page=view/Introducci%F3+a+J2MEMicroDB&gid=0&uid=0
a l'apartat de "Com descarregar J2MESDLIB?"

Com preparar l'entorn de treball

En primer lloc s'ha d'instal·lar el Netbeans. Per fer això només cal executar l'arxiu d'instal·lació de Netbeans i seguir els passos que indica la pantalla.
En segon lloc s'ha d'instal·lar el Netbeans Mobility pack. De la mateixa manera que Neatbeans, només cal executar el programa d'instal·lació i seguir les instruccions de la pantalla. Cal recordar que no es pot instal·lar el Mobility Pack sense haver instal·lat prèviament Netbeans.

Per poder utilitzar les llibreries LSDATALIB i J2MESDLIB, s'ha crear un nou projecte i afegir les llibreries manualment.
Per crear un nou projecte a Netbeans cal anar al menú "File" i prémer "New Project".
















Després d'això s'ha de triar el tipus d'aplicació que es vol programar. Triarem com a "categories" Mobile i com a "projects" Mobile Application. Un cop triat, només cal seguir els passos que la pantalla indica: donar un nom al projecte i dir on s'ha de guardar (opcionalment el projecte pot venir amb l'aplicació "hello MIDlet", per tal de tenir una petita guia de com utilitzar MIDlets) i triar la plataforma de l'emulador així com les configuracions pertinents, que per començar, les deixarem amb les opcions per defecte.


Per tal d'afegir les llibreries LSDATALIB i J2MESDLIB s'haurà de prémer el botó dret del ratolí damunt del projecte en qüestió, després "Set active Project Configuration" i finalment Add configuration to Project.
La pantalla de nova configuració demanarà "Use Configuration Template". La plantilla que s'ha de seleccionar és "DefaultColorPhone_template".
A sota caldrà posar el nom de la nova configuració.











Ara és el moment d'afegir les llibreries de fitxers i bases de dades.
Cal prémer "Libraries & Resources". Després "Add Jar/Zip" i buscar els arxius descarregats prèviament de LSDATALIB i J2MESDLIB.
A més, per tal de poder treballar amb les llibreries gràfiques de Netbeans, s'ha de prémer "Add Library" i afegir "Netbeans MIDP Components". Aquesta llibreria permatrà utilitzar components gràfics que el programa de prova necessita.
Arribat aquest punt, podem començar a programar.


Manual del programador de J2MESDLIB

La llibreria J2MESDLIB permet treballar amb taules relacionals en dispositius mòbils. Aquesta API proporciona els mètodes necessaris per poder crear, modificar i esborrar, en definitiva, gestionar taules en una base de dades relacional.
En aquesta secció veurem com utilitzar la API de la llibreria J2MESDLIB per a poder gestionar taules en una base de dades relacional.

Com crear una base de dades i afegir-hi una taula

En primer lloc, cal generar una base de dades que actuarà com contenidor de taules. Per això és necessari cridar al mètode de classe generateDB. Si la base de dades no existeix aquest mètode s'encarrega de crear les taules del catàleg, que tindran com funció principal emmagatzemar informació sobre les taules dels usuaris de la base de dades. Aquest mètode rep un paràmetre per indicar si s'ha de mostrar informació de les operacions que es realitzen per la sortida estàndard. Aquesta opció resulta útil en la fase de depurat de l'aplicació.

Després d'haver generat el catàleg de la base de dades es pot passar a gestionar les taules. Per a crear una taula en la nova base de dades cal utilitzar el mètode CreateTable. Aquest mètode rep com primer paràmetre el nom de la taula a crear, el segon paràmetre és un vector amb els camps de la taula i el tercer paràmetre és un enter que indica el nombre de columnes que formen la clau primària de la taula.

Suposem que volem crear en la base de dades de discs de música. Anem a crear una taula de discs amb tres camps: el nom de l'artista, el nom del disc i el gènere. El nom de l'artista en conjunció amb el nom del disc actuarà de com identificador(clau primària) de cada entrada de la base de dades.

Per definir els camps de la taula s'utilitza la classe J2MEColumn. El constructor de J2MEColumn rep com a paràmetres el nom del camp, si el camp formarà part de la clau primària de la taula o no, el tipus del camp (BOOL, DOUBLE, INT i VARCHAR són els tipus de dades disponibles en aquesta versió) i la grandària del camp. Després de definir els camps de la taula cal guardar-los en un vector i aquest vector és el segon paràmetre del mètode createTable.

El següent fragment de codi mostra com podem crear la base de dades i la taula.

J2MESDLIB.generateDB(false);
J2MEColumn c1 = new J2MEColumn("artista",true,J2MEColumn.ColumnType.VARCHAR,J2MEColumn.ColumnType.CHAR_SIZE*15);
J2MEColumn c2 = new J2MEColumn("disc",true,J2MEColumn.ColumnType.VARCHAR,J2MEColumn.ColumnType.CHAR_SIZE*15);
J2MEColumn c3 = new J2MEColumn("genere",false,J2MEColumn.ColumnType.VARCHAR,J2MEColumn.ColumnType.CHAR_SIZE*15);
Vector columnes = new Vector();
columnes.addElement(c1);
columnes.addElement(c2);
columnes.addElement(c3);
J2METable t = J2MESDLIB.createTable("musicbd",columnes,2);

Inserció de fila

Una vegada creada la taula podem passar a la inserció de noves tuples o files.
En primer lloc, obrim la base de dades cridant al mètode generateDB, després és necessari carregar la taula a la qual accedirem cridant al mètode loadTable. En cas que la taula no existeixi ens encarreguem de crear-la. A continuació podem passar a la creació d'una nova fila. Per a això utilitzarem la classe J2MERow. Crearem una fila buida amb el mètode createRow, després afegirem les dades de la fila amb el mètode setColValue. El primer paràmetre d'aquest mètode és la dada que anem a guardar i el segon paràmetre el número de camp. En el nostre exemple el nom de l'artista és el camp número 0, el nom del disc és el camp número 1 i el gènere el número 2. Per a acabar afegirem la fila a la taula de contactes a través del mètode addRow i guardarem els canvis en la taula amb el mètode saveTable.

El codi quedaria de la següent manera:

J2METable t=null;
J2MESDLIB.generateDB(false);
if(J2MESDLIB.existsTable("musicbd")){
t = J2MESDLIB.loadTable("musicbd");
}
else{
t = crearMusicBD();
}

J2MERow r = t.createRow();
r.setColValue("artista",0);
r.setColValue("disc",1);
r.setColValue("genere",2);
t.addRow(r);
t.saveTable();
t.closeTable();
J2MESDLIB.closeDB();

Cerca de fila

Com hem fet en l'exemple anterior en primer lloc obrim la base de dades i carreguem la taula de contactes. A continuació utilitzarem la classe J2MEKey per a buscar el contacte pel seu nom. Per a això creem un objecte de la classe J2MEKey i amb el mètode addValueKey afegim el nom de l'artista i el nom del disc de l'entrada que volem buscar (en el nostre exemple "artista" i "disc"). Invocant el mètode seek buscarem l'entrada a la taula. Si l'entrada existeix podrem obtenir les seves dades amb el mètode read.
En la versió actual de la llibreria només es pot buscar de forma eficient per clau primària o identificador.

El codi seria el següent:

J2METable t = null;
J2MERow r = null;
J2MESDLIB.generateDB(false);

if(J2MESDLIB.existsTable("musicbd")){
t = J2MESDLIB.loadTable("musicbd");
if (t.rowCount()>0){
J2MEKey key = new J2MEKey();
key.addValueKey("artista");
key.addValueKey("disc");
if(t.seek(key)){
r = t.read();
}
}
}
t.closeTable();
J2MESDLIB.closeDB();

Actualitzar/Modificar una fila

Després d'obrir la base de dades i carregar la taula crearem un objecte de la classe J2MEKey que ens servirà per buscar a la taula l'entrada que anem a modificar. Això ho farem invocant el mètode seek. Una vegada trobat, llegirem les dades invocant el mètode read. A continuació modificarem la columna corresponent i després modificarem la fila a través del mètode update, al que passarem com paràmetre les noves dades del contacte. Finalment, gravarem els canvis fets en la taula a través del mètode saveTable.

En la versió actual de la llibreria no es pot modificar la clau primària de la taula. Per això en l'exemple anterior només podrem modificar el gènere.

El codi seria el següent:

J2METable t = null;
J2MESDLIB.generateDB(false);
if(J2MESDLIB.existsTable("musicbd")){
t = J2MESDLIB.loadTable("musicbd");
J2MEKey key = new J2MEKey();
key.addValueKey("artista");
key.addValueKey("disc");
if(t.seek(key)){
J2MERow row = t.read();
row.setColValue("nouGenere",2);
t.update(row);
t.saveTable();
}

}
t.closeTable();
J2MESDLIB.closeDB();

Esborrar fila

Anem a esborrar les dades de l'entrada "artista""disc". Per a això obrirem la base de dades i carregarem la taula. A continuació crearem un objecte J2MEKey per localitzar l'entrada "artista""disc". Això ho farem invocant el mètode seek. Una vegada localitzada, passarem a esborrar-la de la taula a través del mètode delete.

Codi:

J2METable t = null;
J2MESDLIB.generateDB(false);

if(J2MESDLIB.existsTable("musicbd")){
t = J2MESDLIB.loadTable("musicbd");
J2MEKey key = new J2MEKey();
key.addValueKey("artista");
key.addValueKey("disc");
if(t.seek(key)){
t.delete();
}
}
t.closeTable();
J2MESDLIB.closeDB();

Manual d'usuari de l'aplicació d'exemple

Aquesta aplicació gestiona una petita base de dades de discos d'artistes i pretén il·lustrar el funcionament de la llibreria J2MESDLIB.
Per engegar l'aplicació només cal executar sobre la màquina virtual de java els arxius d'exemple.
Quan apareixi l'emulador de mòbil, cal seleccionar el MIDlet ExempreSDLib i prémer el botó launch, llavors apareixerà la pantalla de benvinguda que explicarà com funciona el programa.
Les dues funcions bàsiques són, veure la base de dades (que permetrà gestionar-la) i afegir una nova entrada a la base de dades.

















Per afegir una nova entrada només cal prémer menú i seguidament el número 2 i apareixerà una nova pantalla per inserir dades.
S'ha d'escriure el nom de l'artista, el nom del disc i el gènere al qual pertany. Finalment prémer Ok.















Per arribar a la pantalla a la gestió de la base de dades s'ha de prémer el botó menú i després el número 2. En aquesta pantalla es pot veure el contingut de la base de dades.
A més es poden fer cerques amb tres criteris diferents, un per cada atribut de la taula. Per tal de fer-ho, només cal seleccionar el criteri que es vol, escriure el text a buscar i finalment prémer menú i número 1. Si el camp de text a buscar queda buit, es mostraran totes les entrades.
Prement menú i número 2 anirem a la pantalla de modificació de dades.
Prement menú i número 3 anirem a la pantalla d'esborrat d'entrades.










A la pantalla d'edició d'entrades es mostraran les entrades que havien quedat visibles a la pantalla de visualització de la base de dades, és a dir, que si s'havia fet alguna cerca i havien quedat només les entrades trobades, en aquesta pantalla només apareixeran aquestes.
Per editar s'ha d'anar a la fila corresponent i prémer el botó Editar.














En arribar a la pantalla d'edició de les dades, aquestes apareixeran i només es permetrà modificar els camps que no formin part de l'identificador. En aquest cas només es podrà modificar el gènere, donat que el nom de l'artista i el disc identifiquen l'entrada a la base de dades.
Una vegada modificat, cal prémer Ok.













De la mateixa manera que a la pantalla d'edició d'entrades, en la d'esborrat de dades apareixeran les entrades que havien quedat a la pantalla de visualització de la base de dades.
També caldrà seleccionar la fila de l'entrada que volem esborrar i prémer el botó Ok.

No hay comentarios: