<docbook><section><title>OATDOCdatasource</title><para> </para>
<title> datasource.js</title> datasource.js
<para>Is an Ajax Database Connectivity (ADBC) layer.
 Provides data access support for various data sources (SQL, SPARQL, SOAP, etc.) and allows binding and execution of callbacks upon data arrival.
 Data are fetched on demand and cached.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> Objects</bridgehead>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSource(type)</bridgehead>
<para>Creates new <computeroutput><ulink url="DataSource">DataSource</ulink></computeroutput> object.<computeroutput>type</computeroutput>is one of <computeroutput>TYPE_constants</computeroutput>.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> Properties</bridgehead>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSource::connection</bridgehead>
<para>Assigns an <computeroutput>OAT.Connection</computeroutput> object to this <ulink url="DataSource">DataSource</ulink>.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSource::options</bridgehead>
<para>Object with various properties, dependent on <ulink url="DataSource">DataSource</ulink> <computeroutput>TYPE_</computeroutput>:     * <computeroutput><emphasis>TYPE_SQL</emphasis></computeroutput> </para>
<itemizedlist mark="bullet" spacing="compact"><listitem><computeroutput> <emphasis>query</emphasis></computeroutput> - SQL query </listitem>
<listitem><computeroutput> <emphasis>limit</emphasis></computeroutput> - cursor limit </listitem>
<listitem><computeroutput> <emphasis>cursortype</emphasis></computeroutput> - 0/1; 0 - snapshot, 1 - dynaset </listitem>
<listitem><computeroutput><emphasis>TYPE_SOAP</emphasis></computeroutput> </listitem>
<listitem><computeroutput> <emphasis>service</emphasis></computeroutput> - name of WSDL service </listitem>
<listitem><computeroutput> <emphasis>rootelement</emphasis></computeroutput> - name of root input WSDL element </listitem>
<listitem><computeroutput> <emphasis>inputobj</emphasis></computeroutput> - input WSDL object (see <ulink url="OATDOCws">ws.js</ulink> documentation for details) </listitem>
<listitem><computeroutput><emphasis>TYPE_REST</emphasis></computeroutput> ,<computeroutput><emphasis>TYPE_SPARQL</emphasis></computeroutput> , <computeroutput><emphasis>TYPE_GDATA</emphasis></computeroutput> </listitem>
<listitem><computeroutput> <emphasis>query</emphasis></computeroutput> - HTTP GET querystring </listitem>
<listitem><computeroutput> <emphasis>output</emphasis></computeroutput> - 0/1; 0 - xml, 1 = json </listitem>
<listitem><computeroutput> <emphasis>xpath</emphasis></computeroutput> - bool; how are outputFields specified? True = XPath expressions; False = node names</listitem>
</itemizedlist><bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSource::outputFields</bridgehead>
<para>List of wanted fields in fetched data.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> Methods</bridgehead>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSource::bindRecord(recordCallback)</bridgehead>
<para>Listens for new data records.
 When new record is available, <computeroutput>recordCallback</computeroutput> is executed with 2 arguments: <computeroutput>record data</computeroutput> and <computeroutput>record index</computeroutput>.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSource::bindPage(pageCallback)</bridgehead>
<para>Listens for new data record pages.
 When new data page (record set) is available, <computeroutput>pageCallback</computeroutput> is executed with 2 arguments:<computeroutput>page data</computeroutput> and <computeroutput>page index</computeroutput>.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSource::bindFile(fileCallback)</bridgehead>
<para>Listens for new data file.
 When new data file is available, <computeroutput>fileCallback</computeroutput> is executed with 1 argument: <computeroutput>file contents</computeroutput>.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSource::bindEmpty(emptyCallback)</bridgehead>
<para>Listens for empty dataset.
 When empty dataset arrives, <computeroutput>emptyCallback</computeroutput> is executed.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSource::bindHeader(headerCallback)</bridgehead>
<para>Listens for data header.
 When header arrives, <computeroutput>headerCallback</computeroutput> is executed with 1 argument: <computeroutput>data header</computeroutput>.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSource::advanceRecord(recordIndex)</bridgehead>
<para>Advances through records.<computeroutput>recordIndex</computeroutput> must be an integer.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> Constants</bridgehead>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSourceData.TYPE_SQL</bridgehead>
<para><ulink url="ToBeDone">ToBeDone</ulink></para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSourceData.TYPE_SOAP</bridgehead>
<para><ulink url="ToBeDone">ToBeDone</ulink></para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSourceData.TYPE_REST</bridgehead>
<para><ulink url="ToBeDone">ToBeDone</ulink></para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSourceData.TYPE_SPARQL</bridgehead>
<para><ulink url="ToBeDone">ToBeDone</ulink></para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> OAT.DataSourceData.TYPE_GDATA</bridgehead>
<para><ulink url="ToBeDone">ToBeDone</ulink></para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> Examples</bridgehead>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> REST Example</bridgehead>
<programlisting>var conn = new OAT.Connection(OAT.ConnectionData.TYPE_REST, {url:&quot;myfile.xml&quot;});

var ds = new OAT.DataSource(OAT.DataSourceData.TYPE_REST);
ds.connection = conn;
ds.options.output = 0; /* fetch result as XML */
ds.options.xpath = 1; /* outputFields are specified as XPATH expressions */
ds.outputFields = [&#39;//result/binding[@name=&quot;created&quot;]/node()/text()&#39;,
                                        &#39;//result/binding[@name=&quot;creator&quot;]/node()/text()&#39;,
                                        &#39;//result/binding[@name=&quot;item_title&quot;]/node()/text()&#39;,
                                        &#39;//result/binding[@name=&quot;url&quot;]/node()/text()&#39;];

var recordCallback = function(data, index) {
        alert(&#39;Data at index &#39; + index + &#39;:\n&#39; + data );
}
ds.bindRecord(recordCallback);
ds.advanceRecord(0);
</programlisting><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> SQL Example</bridgehead>
<programlisting>var conn = new OAT.Connection(OAT.ConnectionData.TYPE_XMLA, {dsn:&quot;DSN=Local_Instance&quot;,endpoint:&quot;/XMLA&quot;});

var ds = new OAT.DataSource(OAT.DataSourceData.TYPE_SQL);
ds.connection = conn;
ds.options.query = &quot;SELECT OrderID, CustomerID, EmployeeID FROM Demo.demo.Orders&quot;;

var recordCallback = function(data, index) {
        alert(&#39;Data at index &#39; + index + &#39;:\n&#39; + data );
}
ds.bindRecord(recordCallback);
ds.advanceRecord(0);
</programlisting><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> SPARQL Example</bridgehead>
<programlisting>var connection = new OAT.Connection(OAT.ConnectionData.TYPE_REST,{url:&quot;/sparql/&quot;});
var q = &quot;SELECT ?s, ?p, ?o FROM &lt;http://www.flickr.com/search/?q=rdf+semanticweb&amp;s=rec&gt; WHERE { ?s ?p ?o . }&quot;;

var ds = new OAT.DataSource(OAT.DataSourceData.TYPE_SPARQL);
ds.outputFields = [&#39;//result/binding[@name=&quot;s&quot;]/node()/text()&#39;,
   &#39;//result/binding[@name=&quot;p&quot;]/node()/text()&#39;,
   &#39;//result/binding[@name=&quot;o&quot;]/node()/text()&#39;];

ds.connection = connection;
ds.options.query = &quot;query=&quot;+encodeURIComponent(q)+&quot;&amp;format=xml&quot;;
ds.options.output = 0; /* fetch result as XML */
ds.options.xpath = 1; /* outputFields are specified as XPATH expressions */

var recordCallback = function(data, index) {
        alert(&#39;Data at index &#39; + index + &#39;:\n&#39; + data );
}
ds.bindRecord(recordCallback);
ds.advanceRecord(0);
</programlisting><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> GData Example</bridgehead>
<programlisting>var conn = new OAT.Connection(OAT.ConnectionData.TYPE_REST, {url:&quot;gdata.xml&quot;});

var ds = new OAT.DataSource(OAT.DataSourceData.TYPE_GDATA);
ds.connection = conn;
ds.options.output = 0;
ds.options.xpath = 1;
ds.outputFields = [ &quot;//atom:feed/atom:entry/atom:title&quot; ];

var recordCallback = function(data, index) {
        alert(&#39;Data at index &#39; + index + &#39;:\n&#39; + data );
}

ds.bindRecord(recordCallback);
ds.advanceRecord(0);
</programlisting><para> <ulink url="CategoryDocumentation">CategoryDocumentation</ulink> <ulink url="CategoryOAT">CategoryOAT</ulink> <ulink url="CategoryOpenSource">CategoryOpenSource</ulink> <ulink url="CategoryToBeDone">CategoryToBeDone</ulink></para>
</section></docbook>