blackberry devcon 2011 - com34

Download BlackBerry DevCon 2011 - COM34

Post on 03-Dec-2014

688 views

Category:

Technology

2 download

Embed Size (px)

DESCRIPTION

 

TRANSCRIPT

  • 1. Aplicaciones orientadas a datosen BlackBerry PlayBookMariano CarrizoCOM34Octubre 18 - 20, 2011

2. Agenda Descarga simple de datos Flex data components Protocolo AMF Remote Objects Sistema de archivos Bases de datos@kiwox 2 3. Descarga simple de datosURLLoader 4. URLLoaderEl Camino SimpleClase nativa ActionScript 3Permite la descarga de contenidos en varios formatos Text URL encoded variables BinaryInforma el progreso de descarga URLLoader.bytesLoaded URLLoader.bytesTotalDispone los datos una vez completada la descarga @kiwox 4 5. URLLoaderEjemploprotected var ldr:URLLoader;protected function loadData():void { ldr = new URLLoader(); ldr.addEventListener(Event.COMPLETE, onDataComplete); ldr.addEventListener(IOErrorEvent.IO_ERROR, onError); try { ldr.load(new URLRequest("datos.php")); } catch(e:Error) { trace("Error al descargar datos"); }} @kiwox 5 6. URLLoaderEjemploprotected function onDataComplete(event:Event):void { trace(ldr.data);}protected function onError(event:IOErrorEvent):void { trace("Error: "+event.errorID);}@kiwox 6 7. URLLoaderDatos en Formato XMLprotected var xmlData:XML;protected function onDataComplete(event:Event):void { xmlData = XML(ldr.data); for(var i:String in xmlData.item) { trace(xmlData.item[i].titulo); }}@kiwox 7 8. URLLoaderDatos en Formato Binarioldr = new URLLoader();ldr.dataFormat = URLLoaderDataFormat.BINARY;ldr.addEventListener(Event.COMPLETE, onDataComplete);ldr.addEventListener(IOErrorEvent.IO_ERROR, onError);ldr.addEventListener(ProgressEvent.PROGRESS, onProgress);try { ldr.load(new URLRequest("imagen.png"));} catch(e:Error) { trace("Error al descargar imagen");}@kiwox 8 9. Flex Data ComponentsAbstrayendo Las Tareas 10. Flex data componentsAbstrayendo Las TareasSimplifican la intermediacin con el servidorDisponen los datos listos para usarlosAdmiten formatos ms complejos XML JSON AMF Objeto/ArrayPermiten enlazar a componentes visuales List, TextArea, etc.@kiwox 10 11. Flex data componentsHTTPServiceObtiene datos directos de estilo RESTInicia la llamada con el mtodo send()El resultado estar disponible en la propiedadlastResult @kiwox 11 12. Flex data componentsHTTPService @kiwox 12 13. Flex data componentsWebServiceInteracta con servicios WSDLSoporta protocolo SOAPPermite el envo de parmetros a mtodos especficosLos resultados pueden ser enlazados o esperados enmtodos callBackPodemos configurar cada operacin con elementos @kiwox 13 14. Flex data componentsWebServiceSYMBOL @kiwox 14 15. DemoAcceso a Datos Remotos @kiwox 15 16. Protocolo AMFTransferencia Binaria de Datos 17. Protocolo AMFTransferencia Binaria de Datos Active Message Format Formato nativo ActionScript ActionScript 2: AMF0 ActionScript 3: AMF3 Soporta datos primitivos y compuestos String, Number, Null, Boolean Object, Array, XML, ByteArray Objetos personalizados (ValueObjects) Especificacin AMF3: http://goo.gl/b3qbk @kiwox 17 18. Protocolo AMFTransferencia Binaria de Datos Desde ActionScript utilizando NetStream En conjunto con Flash Media Server bajo protocolo rtmp:/ Permite instanciar objetos remotos (servidor) Soporte disponible en la mayora de servidores@kiwox 18 19. Protocolo AMFTransferencia Binaria de Datosvar netConnection:NetConnection = new NetConnection();var responder:Responder = new Responder();netConnection.connect(http://localhost/Amfphp/);netConnection.call(DataService/getRecords, responder); @kiwox 19 20. Remote Objectsservicio.getAll() ServidorObjectVO[] Clases PHP@kiwox 20 21. Remote Objectsservices-config.xml* @kiwox 21 22. Persistencia de DatosAlmacenamiento en el Dispositivo 23. Sistema de ArchivosFile Localiza y resuelve punteros a archivos Permite consultar propiedades y existenciaFileStream Flujo de lectura/escritura de datos 24. Sistema de Archivos Localizar Crear Flujo de Leer Datos Cerrar Flujo RecursoDatos@kiwox 24 25. Sistema de Archivos Localizar Crear Flujo de Escribir Datos Cerrar Flujo RecursoDatos@kiwox 25 26. Sistema de archivosvar archivo:File = File.documentsDirectory.resolvePath(datos/listado.xml);if(archivo.exists) {} @kiwox 26 27. DirectoriosFile.applicationDirectory /app/air/File.applicationStorageDirectory /data/File.documentsDirectoryFile.desktopDirectory /shared/documents/ @kiwox 27 28. FileStreamvar fs:FileStream = new FileStream();fs.open(archivo, FileMode.READ) FileMode.READ FileMode.WRITE FileMode.APPEND FileMode.UPDATE@kiwox 28 29. FileStreamvar datos:File = File.applicationStorageDirectory.resolvePath("datos.txt");var fs:FileStream = new FileStream();fs.open(datos, FileMode.WRITE);try {fs.writeUTFBytes("Hola mundo");} catch(e:Error) {trace("Error escribiendo");}fs.close(); @kiwox 29 30. FileStreamvar datos:File = File.applicationStorageDirectory.resolvePath("datos.txt");var fs:FileStream = new FileStream();fs.addEventListener(Event.COMPLETE, completeHandler);fs.openAsync(datos, FileMode.READ);var str:String = "";function completeHandler(event:Event):void {str = fs.readUTFBytes(fs.bytesAvailable);} @kiwox 30 31. FileStreamvar datos:File = File.applicationStorageDirectory.resolvePath("datos.txt");var fs:FileStream = new FileStream();fs.addEventListener(ProgressEvent.PROGRESS, progressHandler);fs.addEventListener(Event.COMPLETE, completeHandler);fs.openAsync(datos, FileMode.READ);var str:String = "";function progressHandler(event:ProgressEvent):void {str += fs.readUTFBytes(fs.bytesAvailable);}function completeHandler(event:Event):void {trace("Datos listos");} @kiwox 31 32. Bases de DatosSQLite en Adobe AIR@kiwox 32 33. SQLiteSQLConnection Objeto conector Localiza el recurso y maneja las transacciones @kiwox 33 34. SQLitevar conn:SQLConnection = new SQLConnection();conn.addEventListener(SQLEvent.OPEN, openHandler);conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);var folder:File = File.applicationStorageDirectory;var dbFile:File = folder.resolvePath("DBSample.db");conn.openAsync(dbFile);function openHandler(event:SQLEvent):void{trace(Base de datos abierta");}function errorHandler(event:SQLErrorEvent):void{trace(Error:, event.error.message);trace(Detalles:, event.error.details);}@kiwox 34 35. SQLitevar conn:SQLConnection = new SQLConnection();var folder:File = File.applicationStorageDirectory;var dbFile:File = folder.resolvePath("DBSample.db");try{conn.open(dbFile);trace(Base de datos abierta");}catch (error:SQLError){trace("Error:", error.message);trace(Detalles:", error.details);} @kiwox 35 36. SQLiteSQLStatement Transacciones individuales Pueden ser asincrnicas @kiwox 36 37. SQLitevar createStmt:SQLStatement = new SQLStatement();createStmt.sqlConnection = conn;var sql:String ="CREATE TABLE IF NOT EXISTS employees (" +"empId INTEGER PRIMARY KEY AUTOINCREMENT, " +"firstName TEXT, " +"lastName TEXT, " +"salary NUMERIC CHECK (salary > 0)" +")";createStmt.text = sql;createStmt.addEventListener(SQLEvent.RESULT, createResult);createStmt.addEventListener(SQLErrorEvent.ERROR, createError);createStmt.execute(); @kiwox 37 38. SQLiteconn.open(dbFile, OpenMode.UPDATE);conn.begin();var insertCustomer:SQLStatement = new SQLStatement();insertCustomer.sqlConnection = conn;insertCustomer.text ="INSERT INTO customers (firstName, lastName) " +"VALUES (Bob, Jones)";insertCustomer.execute();var customerId:Number = insertCustomer.getResult().lastInsertRowID;conn.commit(); @kiwox 38 39. SQLitevar insertPhoneNumber:SQLStatement = new SQLStatement();insertPhoneNumber.sqlConnection = conn;insertPhoneNumber.text ="INSERT INTO customerPhoneNumbers (customerId, number) " +"VALUES (:customerId, 800-555-1234)";insertPhoneNumber.parameters[":customerId"] = customerId;insertPhoneNumber.execute();conn.commit(); @kiwox 39 40. SQLitetry {var insertPhoneNumber:SQLStatement = new SQLStatement();insertPhoneNumber.sqlConnection = conn; insertPhoneNumber.text = "INSERT INTO customerPhoneNumbers (customerId, number) " + "VALUES (:customerId, 800-555-1234)"; insertPhoneNumber.parameters[":customerId"] = customerId; insertPhoneNumber.execute();conn.commit();} catch (error:SQLError) {conn.rollback();}@kiwox 40 41. SQLiteBases de datos encriptadas Utilizan una llave en formato ByteArraypublic function open(reference:Object = null,openMode:String = "create",autoCompact:Boolean = false,pageSize:int = 1024,encryptionKey:ByteArray = null):void @kiwox 41 42. SQLitevar conn:SQLConnection = new SQLConnection();var encryptionKey:ByteArray = new ByteArray();encryptionKey.writeUTFBytes(CadenaDe16Bytes");conn.openAsync(dbFile, SQLMode.CREATE, null, false, 1024, encryptionKey);@kiwox 42 43. DemoManejo de Datos@kiwox 43 44. Ms Informacin Recursos Adobe DevNet: http://www.adobe.com/devnet/devices.html Tour de Flex: http://www.adobe.com/devnet/flex/tourdeflex.html Adobe TV: http://tv.adobe.com/ Libro Flex 4.5: http://goo.gl/RcKXJ@kiwox 44 45. Muchas Gracias!Mariano CarrizoCOM34Octubre 18 - 20, 2011