L'archivio dati AppStore può essere utilizzato soltanto come qualsiasi altro archivio dati conforme alle API dojo.data. Tuttavia, l'archivio dati AppStore richiede un feed APP operativo per la corretta esecuzione delle funzioni di scrittura. La seguente applicazione di esempio dimostra le funzioni API di identità e lettura dell'archivio dati AppStore.
Di seguito viene riportato il feed da utilizzare in queste dimostrazioni. Il feed è accessibile in questo pacchetto di documentazione.
<?xml version='1.0' encoding='utf-8'?> <feed xmlns='http://www.w3.org/2005/Atom' xml:lang='en-US'> <title>Example.com</title> <link rel="alternate" type="text/html" href="http://example.com/" hreflang="en" title="Example.com" /> <subtitle type='text'>Feed di esempio di Example.com</subtitle> <rights>Copyright Example.com</rights> <id>http://example.com/samplefeed.xml</id> <updated>2007-08-07T20:00:00-05:00</updated> <link rel="self" type="application/atom+xml" href="http://www.example.com/samplefeed.xml"/> <entry> <title>Voce di verifica n.1</title> <id>http://example.com/samplefeed.xml/entry/1</id> <link rel='alternate' href='http://example.com/1.html'/> <summary type='html'> <p>Questa è una voce di esempio nel feed Atom. È semplicemente un paragrafo di grandi dimensioni nel riepilogo.<p> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus. Aliquam eget metus sed leo lacinia rutrum. Nunc lacus lacus, viverra placerat, laoreet nec, placerat vel, eros. Donec nec magna id sem commodo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean pede. Quisque vel leo. In vitae nisi. Curabitur sodales congue nibh. Maecenas ultrices ante nec ipsum. Aenean quis nibh. Aenean semper, quam vitae ullamcorper euismod, arcu leo tincidunt nunc, vel pulvinar turpis dolor a elit. Praesent nonummy nunc faucibus nibh. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus laoreet, ante auctor condimentum venenatis, magna quam varius elit, at feugiat dolor metus id quam. Etiam enim.<p> </summary> <author> <name>Utente di verifica</name> <email>test@example.com</email> </author> <updated>2007-08-07T04:00:00-05:00</updated> </entry> <entry> <title>Voce di verifica n.2</title> <id>http://example.com/samplefeed.xml/entry/2</id> <link rel='alternate' href='http://example.com/2.html'/> <summary type='text'> Questa è una voce di esempio nel feed Atom. È semplicemente un paragrafo di grandi dimensioni nel riepilogo. Si tratta di testo diretto. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras cursus. Aliquam eget metus sed leo lacinia rutrum. Nunc lacus lacus, viverra placerat, laoreet nec, placerat vel, eros. Donec nec magna id sem commodo rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aenean pede. Quisque vel leo. In vitae nisi. Curabitur sodales congue nibh. Maecenas ultrices ante nec ipsum. Aenean quis nibh. Aenean semper, quam vitae ullamcorper euismod, arcu leo tincidunt nunc, vel pulvinar turpis dolor a elit. Praesent nonummy nunc faucibus nibh. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus laoreet, ante auctor condimentum venenatis, magna quam varius elit, at feugiat dolor metus id quam. Etiam enim. </summary> <author> <email>test@example.com</email> </author> <updated>2007-08-07T06:00:00-05:00</updated> </entry> </feed>
In seguito, creare un'applicazione AppStore nella markup, in modo dichiarativo, dal feed nell'URL fornito. Consultare il seguente codice per creare l'archivio dati AppStore:
<div dojoType="ibm_atom.data.AppStore" url="samplefeed.xml" jsId="appStore">
Tuttavia, l'aggiunta di questa markup non influisce sulla pagina. È necessario includere la libreria dojo e caricare esplicitamente il parser, che esamina la pagina e crea istanze dei widget. Questa operazione viene eseguita nell'elemento di intestazione, con una tag script. Il codice è simile al seguente:
<script type="text/javascript">djConfig = {parseOnLoad: true};</script> <script type="text/javascript" src="../../../dojo/dojo.js"></script> <script> dojo.require("dojo.parser"); dojo.require("ibm_atom.data.AppStore"); </script>
A questo punto, sono state create istanze dell'archivio ed il feed è stato caricato. Come esempio di attività più avanzate che è possibile completare con un archivio, è poi possibile aggiungerle in un widget di struttura ad albero, che richiama i dati dall'AppStore e visualizzare un elenco di titoli.
<div dojoType="dijit.Tree" id="tree" store="appStore" query="{title:'*t*'}"></div>
Esaminando la markup precedente, il widget della struttura ad albero esegue una query
sull'AppStore per voci che hanno un titolo di *, ossia, senza stabilire corrispondenze con alcun
titolo. Il risultato è una struttura ad albero che mostra il titolo di ogni voce con cui è
stata stabilita una corrispondenza.
Esaminare alcune semplici funzioni dell'AppStore. La prima operazione consiste nel richiamare le
voci dal feed. Si supponga di voler richiamare la voce denominata "Voce di verifica n.1". È possibile eseguire un richiamo simile al seguente, rispetto
all'AppStore:
<script type="text/javascript"> dojo.addOnLoad(function(){ function callback(items, request){ console.debug(items.length); if(items.length > 0) console.debug(items[0].title); } appStore.fetch({query: {title: "Voce di verifica n.1"}, onComplete: callback}); }); </script>
Dopo avere richiamato una voce, è possibile richiamare anche diverse funzioni correlate a tale voce. Ciò significa anche richiamare gli attributi della voce (nel codice precedente, tali chiamate non sono state utilizzate per accedere direttamente agli elementi dell'oggetto voce), verificando se tale voce è inclusa nell'archivio ed esaminandone la relativa identità. Consultare i seguenti esempi:
<script type="text/javascript"> dojo.addOnLoad(function() { function callback(items, request){ var item = items[0]; console.debug(appStore.getValue(item, 'summary')); console.debug(appStore.isItem(item)); console.debug(appStore.getIdentity(item)); } appStore.fetch({query: {title: "Voce di verifica n.1"}, onComplete: callback}); }); </script>