AIR File API

marzo 29, 2008

Es una de las APIs más funcionales en AIR

Es posible crear archivos y directorios, abrir y leer archivos, escribir archivos, listar el contenido de un directorio, acceder a directorios, comunes entre S.O., inspeccionar propiedades de un archivo, son todas clases del paquete flash.filesystem

Las tres clases que manejan toda esta API son File, FileMode, FileStream para leer/escribir archivos. Cuando queremos trabajar con archivos el primer paso es referenciarlo, se pueden identificar dos formas de hacerlos, la primera es instanciando un objeto y definir la propiedad nativePathvar

archivo =  new air.File();   
JS
var archivo : file = new File(); 
AS
Archive.nativePath = “C:/Documents and Settings…”;
Si bien esta alternativa es totalmente valida la forma más usual es a través de un directorio especialvar archivo File;
archivo = File.documentsDirectory.resolve(“foto.jpg”);
var archivo;
archivo = air.file.documentsDirectory.resolve(“…”);

Los directorios especiales pueden usar el método resolve para obtener un path hijo o usar el mismo objeto como File, tenemos los siguientes directorios especiales:

 applicationStorageDirectory: Donde podemos almacenar archivos propios de nuestra aplicación applicationResourceDirectory: La carpeta donde están nuestros archivos de instalación
desktopDirectory: “Escritorio del usuario”
documentsDirectory: “Mis Documentos”
userDirectory: Generalmente en un nivel superior a Mis Documentos Las operaciones sobre los archivos pueden ser sincronicas o asincrónicas, en el caso de asincrónicas, debemos escuchar el evento “complete” o Event.COMPLETE

Los métodos existentes son:

File.copyTo()                             File.copyToAsync()
File.deleteDirectory()              File.deleteDirectoryAsync()
File.deleteFile()                        File.deleteFileAsync()
File.listDirectory()                    File.listDirectoryAsync()
File.moveTo()                           FilemoveToAsync()
File.moveToTrash()                 File.moveToTrashAsync()
FileStream.open()                    FileStream.openAsync()

Un detalle de las propiedades de los archivos:

  • exists
  • icon
  • isDirectory
  • isHidden
  • isPackage
  • isSymbolicLink
  • nativePath
  • parent
  • url
  • creationDate
  • extension
  • modificationDate
  • name
  • size
  • type

Para abrir y leer un archivo, debemos obtener una referencia al objeto File y luego crear un FileStreamvar flujo:

FileStream = new FileStream();
flujo.open(archive, modo);

Los modos posibles son: FileMode.READ, FileMode.WRITE, FileMode.APPEND, FileMode.UPDATE.
También tenemos métodos para escribir distintos tipos de datos writeBoolean, writeInt, WriteUTF y para leer en el mismo orden, creamos archivos binarios.
El trabajo con directorios es igual que con los archivos, hay que referenciarlos y también es posible crear directorios temporales y borrarlos.


SQL en AIR

marzo 20, 2008

AIR puede conectarse a datos mediante un RDBMS embebido, hablamos de SQLite, esto es parte de los 10 MB que incluye el runtime de AIR.

Existen dos modelos que podemos utilizar, Sincrónico / Asincrónico pero una vez elegido un método, hay que continuar siempre con el mismo.

Las clases que mas podemos llegar a utilizar:

air.SQLConnection: representa a la conexión
air.SQLStatement: representa una consulta
air.SQLResult: representa una respuesta de la Base de Datos
air.SQLEvent: representa un evento de base de datos
air.SQLerrorEvent: representa un evento de error en la base de datos.

Para ejecutar una consulta tipo SELECT:

  1. Crear y abrir la coneccion
  2. Crear el SQLStatement y especificar la base de datos
    1. var select = new air.SQLStatement();
    2. select.sqlConnection = conn;
  3. Definir el query
    1. select.text = “SELECT * FROM CLIENTES”;
  4. Definir eventos
    1. Select.addEventListener(air.SQLEvent.RESULT, respondio);
  5. Definir la función respondió para capturar el resultado
  6. Ejecutar
    1. select.execute()

Opcionalmente se pueden definir parámetros en el query y luego definirlos como parameters, también es posible traer solo los primeros XX resutados y luego ir pidiendo mas, para eso se usa execute.


Firmando Aplicaciones AIR

marzo 4, 2008

Las Aplicaciones de Adobe AIR se deben firmar para instalarse en otro sistema, esta es la filosofía de las aplicaciones construidas con AIR, existen alternativas de generación de paquetes AIRI provistos por los distintos plugins, pero esta alternativa está pensada para los casos que la aplicación deba ser firmada en un equipo distinto o cuando la firma se gestiona de forma distinta al desarrollo de la aplicación.

Firmando una aplicación

Como se menciona anteriormente el cuadro de firma digital nos da dos opciones, firmar con un certificado de digital o preparar un paquete AIRI. En el caso de firmar la aplicación, puede usar un certificado digital concedido por una entidad emisora de certificado raíz, o bien, crear un certificado con firma automática.

Cualquiera puede crear un certificado con firma, y es justamente ese el problema, a la hora de abrir una aplicación e instarla en nuestros equipos siempre serán más fiables las que han sido firmadas con las firmas que proveen las entidades emisoras.


El archivo AppDescriptor

marzo 1, 2008

El archivo descriptor de una aplicación AIR se llama “Application.xml” y es un archivo XML que setea algunas directivas que nuestra aplicacion AIR debera seguir, puede ser generado manualmente mediante cualquier editor de texto o con algun plugin. Dreamweaver nos ofrece una version muy simplificada y Basica con lo escencial que una aplicacion necesta. Aptana nos ofrece otro bastante mas completa bastante completo de todas formas siempre pueden ser modificacos posteriormente.

Esta es una aproximación a los nodos principales de un Application.xml standar con algunos comentarios.


<?xml version="1.0" encoding="utf-8" standalone="no"?>
 
<application xmlns="http://ns.adobe.com/air/application/1.0">
<id>ar.com.algonzalez.example.seteos</id><!-- Identificador único de caracter obligatorio es por esto que se recomienda una notacion del tipo direccion web inversa. -->
<filename>seteos</filename><!-- Un nombre de archivo para la aplicacion de caracter obligarorio, no lleva extension. -->
<name>seteos</name><!-- Este es el nombre que se visualizara duranta la instalacion de la aplicacion de caracter opcional -->
<version>1.0</version><!-- Designa en forma de texto una version para la aplicacion (V1, Version 1.0, Beta, Release, etc) es obligatorio . -->
<description>Aplicacion de prueba de seteos standart para una aplicacion AIR</description><!-- Tambien de caracter opcional y se podra ver en durante la instalacion de la nuestra aplicacion AIR. -->
<copyright>No tengo copy right</copyright><!-- Una informacion de copyright de caracter opcional -->
<initialWindow><!-- Es obligatorio y se usa de contenedor para configurar algunas opciones de la ventana inicial. -->
<content>seteos.html</content><!-- Es el pricipal HTML de la aplicacion y es obligatorio. -->
<title>Mi Aplicacion AIR<title/><!-- Titulo de la ventana principal. es Opcional. -->
<systemChrome>standard</systemChrome><!-- Puede contener dos valores "standard" or "none". Es opcional y por defecto standard. -->
<transparent>false</transparent><!-- Los valores pueden ser true o false, por defecto false y se puede aplicar solamente cuando systemChrome sea "none". -->
<visible>true</visible><!-- para inicializar la ventana en visible o no, es opcional y por defecto esta en false. -->
<minimizable>true</minimizable><!-- Si estara disponible la opcion de minimizar. Default true. -->
<maximizable>true</maximizable><!-- Si estara disponible la opcion de maximizar. Default true. -->
<resizable>true</resizable><!-- Si estara disponible la opcion de redimensionar. Default true. -->
<width>1024</width><!-- Espesifica el ancho inicial de la ventana. Opcional. -->
<height>768</height><!-- Espesifica el alto inicial de la ventana. Opcional. -->
<x>200</x><!-- posicion inicial de la ventana en x. Opcional. -->
<y>200</y><!-- posicion inicial de la ventana en y. Optional. -->
<minSize>800 600</minSize><!-- Especifica la configuacion minima de visualización de la ventana, Opcional. -->
<maxSize>1280 1024</maxSize><!-- Especifica la configuacion maxima de visualización de la ventana, Opcional. -->
</initialWindow>
<icon> <!-- El icono que representara la aplicacion se recomienda usar todas las medidas para su correcta visualizacion. -->
<image16x16></image16x16>
<image32x32></image32x32>
<image48x48></image48x48>
<image128x128></image128x128>
</icon>
<fileTypes><!-- Defines un tipo de archivos. Opcional. -->
<fileType> <!-- El nombre que el sistema mostrara para registrar un tipo de auchivo. Requerido. -->
<name></name> <!-- La extension que se va a registrar. Requerido -->
<extension></extension> <!-- Una descripcion del tipo de archivo. Opcional. -->
<description></description> <!-- El tipo MIME. Opcional. -->
<contentType></contentType> <!-- El icono que se va a mostrar por el tipo de archivo Opcional. -->
<icon>
<image16x16></image16x16>
<image32x32></image32x32>
<image48x48></image48x48>
<image128x128></image128x128>
</icon>
</fileType>
</fileTypes>
</application>