Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
The DataProvider class provides methods and properties that allow you to query and modify
the data in any list-based component--for example, in a List, DataGrid, TileList, or ComboBox
component.
A data provider is a linear collection of items that serve as a data source--for
example, an array. Each item in a data provider is an object or XML object that contains one or
more fields of data. You can access the items that are contained in a data provider by index, by
using the DataProvider.getItemAt()
method.
View the examples
length:uint
[read-only]
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
The number of items that the data provider contains.
Implementation public function get length():uint
Example The following example creates a List component instance and resizes the list to match the number of items in its data provider:
import fl.controls.List;
import fl.data.DataProvider;
var dp:DataProvider = new DataProvider();
dp.addItem({label:"Item 1"});
dp.addItem({label:"Item 2"});
dp.addItem({label:"Item 3"});
dp.addItem({label:"Item 4"});
var myList:List = new List();
myList.dataProvider = dp;
myList.rowHeight = 35;
myList.rowCount = dp.length;
myList.move(10, 10);
addChild(myList);
public function DataProvider(value:Object = null)
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Creates a new DataProvider object using a list, XML instance or an array of data objects
as the data source.
Parameters | value:Object (default = null ) — The data that is used to create the DataProvider.
|
Example The following example creates a new data provider using the
addItem()
method:
import fl.controls.ComboBox;
import fl.data.DataProvider;
var dp:DataProvider = new DataProvider();
dp.addItem({label:"item 1a"});
dp.addItem({label:"item 2a"});
var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);
The following example populates a data provider using an Array object:
import fl.controls.ComboBox;
import fl.data.DataProvider;
var arr:Array = new Array();
arr.push({label:"item 1b"});
arr.push({label:"item 2b"});
var dp:DataProvider = new DataProvider(arr);
var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);
The following example populates a data provider using an XML object with attributes:
import fl.controls.ComboBox;
import fl.data.DataProvider;
var xml:XML = <items>
<item label="item 1c" />
<item label="item 2c" />
</items>;
var dp:DataProvider = new DataProvider(xml);
var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);
The following example populates a data provider using an XML object with child nodes:
import fl.controls.ComboBox;
import fl.data.DataProvider;
var xml:XML = <items>
<item>
<label>item 1d</label>
</item>
<item>
<label>item 2d</label>
</item>
</items>;
var dp:DataProvider = new DataProvider(xml);
var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);
public function addItem(item:Object):void
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Appends an item to the end of the data provider.
Parameters
| item:Object — The item to be appended to the end of the current data provider.
|
See also
Example The following example creates a new data provider using the
addItem()
method:
import fl.controls.ComboBox;
import fl.data.DataProvider;
var dp:DataProvider = new DataProvider();
dp.addItem({label:"item 1a"});
dp.addItem({label:"item 2a"});
var myComboBox:ComboBox = new ComboBox()
myComboBox.dataProvider = dp;
myComboBox.move(10, 10);
addChild(myComboBox);
public function addItemAt(item:Object, index:uint):void
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Adds a new item to the data provider at the specified index.
If the index that is specified exceeds the length of the data provider,
the index is ignored.
Parameters
| item:Object — An object that contains the data for the item to be added.
|
|
| index:uint — The index at which the item is to be added.
|
Throws | RangeError — The specified index is less than 0 or greater than or equal
to the length of the data provider.
|
See also
public function addItems(items:Object):void
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Appends multiple items to the end of the DataProvider and dispatches
a DataChangeType.ADD
event. The items are added in the order
in which they are specified.
Parameters
| items:Object — The items to be appended to the data provider.
|
See also
Example The following example uses the
addItems()
method to add several items to the data provider:
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.data.DataProvider;
var arr:Array = [{col1:"1.A", col2:"1.B"}, {col1:"2.A", col2:"2.B"}]
var dp:DataProvider = new DataProvider();
dp.addItems(arr);
trace(dp.length); // 2
var c1:DataGridColumn = new DataGridColumn("col1");
var c2:DataGridColumn = new DataGridColumn("col2");
var myDataGrid:DataGrid = new DataGrid();
myDataGrid.addColumn(c1);
myDataGrid.addColumn(c2);
myDataGrid.dataProvider = dp;
myDataGrid.setSize(200, 160);
myDataGrid.move(10, 10);
addChild(myDataGrid);
public function addItemsAt(items:Object, index:uint):void
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Adds several items to the data provider at the specified index and dispatches
a DataChangeType.ADD
event.
Parameters
| items:Object — The items to be added to the data provider.
|
|
| index:uint — The index at which the items are to be inserted.
|
Throws | RangeError — The specified index is less than 0 or greater than or equal
to the length of the data provider.
|
See also
public function clone():DataProvider
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Creates a copy of the current DataProvider object.
Returns public function concat(items:Object):void
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Concatenates the specified items to the end of the current data provider.
This method dispatches a DataChangeType.ADD
event.
Parameters
| items:Object — The items to be added to the data provider.
|
See also
public function getItemAt(index:uint):Object
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Returns the item at the specified index.
Parameters
| index:uint — Location of the item to be returned.
|
Returns | Object — The item at the specified index.
|
Throws | RangeError — The specified index is less than 0 or greater than
or equal to the length of the data provider.
|
See also
public function getItemIndex(item:Object):int
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Returns the index of the specified item.
Parameters
| item:Object — The item to be located.
|
Returns | int — The index of the specified item, or -1 if the specified item is not found.
|
See also
public function invalidate():void
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Invalidates all the data items that the DataProvider contains and dispatches a
DataChangeEvent.INVALIDATE_ALL
event. Items are invalidated after they
are changed; the DataProvider automatically redraws the invalidated items.
See also
public function invalidateItem(item:Object):void
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Invalidates the specified item. An item is invalidated after it is
changed; the DataProvider automatically redraws the invalidated item.
Parameters
| item:Object — Item to be invalidated.
|
See also
public function invalidateItemAt(index:int):void
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Invalidates the item at the specified index. An item is invalidated after it is
changed; the DataProvider automatically redraws the invalidated item.
Parameters
| index:int — Index of the item to be invalidated.
|
Throws | RangeError — The specified index is less than 0 or greater than
or equal to the length of the data provider.
|
See also
public function merge(newData:Object):void
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Appends the specified data into the data that the data provider
contains and removes any duplicate items. This method dispatches
a DataChangeType.ADD
event.
Parameters
| newData:Object — Data to be merged into the data provider.
|
See also
public function removeAll():void
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Removes all items from the data provider and dispatches a DataChangeType.REMOVE_ALL
event.
See also
public function removeItem(item:Object):Object
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Removes the specified item from the data provider and dispatches a DataChangeType.REMOVE
event.
Parameters
| item:Object — Item to be removed.
|
Returns | Object — The item that was removed.
|
See also
public function removeItemAt(index:uint):Object
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Removes the item at the specified index and dispatches a DataChangeType.REMOVE
event.
Parameters
| index:uint — Index of the item to be removed.
|
Returns | Object — The item that was removed.
|
Throws | RangeError — The specified index is less than 0 or greater than
or equal to the length of the data provider.
|
See also
public function replaceItem(newItem:Object, oldItem:Object):Object
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Replaces an existing item with a new item and dispatches a DataChangeType.REPLACE
event.
Parameters
| newItem:Object — The item to be replaced.
|
|
| oldItem:Object — The replacement item.
|
Returns | Object — The item that was replaced.
|
Throws | RangeError — The item could not be found in the data provider.
|
See also
public function replaceItemAt(newItem:Object, index:uint):Object
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Replaces the item at the specified index and dispatches a DataChangeType.REPLACE
event.
Parameters
| newItem:Object — The replacement item.
|
|
| index:uint — The index of the item to be replaced.
|
Returns | Object — The item that was replaced.
|
Throws | RangeError — The specified index is less than 0 or greater than
or equal to the length of the data provider.
|
See also
public function sort(... sortArgs):*
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Sorts the items that the data provider contains and dispatches a DataChangeType.SORT
event.
Parameters
| ... sortArgs — The arguments to use for sorting.
|
Returns | * — The return value depends on whether the method receives any arguments.
See the Array.sort() method for more information.
This method returns 0 when the sortOption property
is set to Array.UNIQUESORT .
|
See also
public function sortOn(fieldName:Object, options:Object = null):*
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Sorts the items that the data provider contains by the specified
field and dispatches a DataChangeType.SORT
event.
The specified field can be a string, or an array of string values that
designate multiple fields to sort on in order of precedence.
Parameters
| fieldName:Object — The item field by which to sort. This value can be a string
or an array of string values.
|
|
| options:Object (default = null ) — Options for sorting.
|
Returns | * — The return value depends on whether the method receives any arguments.
For more information, see the Array.sortOn() method.
If the sortOption property is set to Array.UNIQUESORT ,
this method returns 0.
|
See also
public function toArray():Array
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Creates an Array object representation of the data that the data provider contains.
Returns | Array — An Array object representation of the data that the data provider contains.
|
override public function toString():String
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Creates a string representation of the data that the data provider contains.
Returns | String — A string representation of the data that the data provider contains.
|
Event Object Type: fl.events.DataChangeEvent
property DataChangeEvent.type = fl.events.DataChangeEvent.DATA_CHANGE
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Dispatched after the data is changed.
Defines the value of the
type
property of a
dataChange
event object.
This event has the following properties:
Property | Value |
---|
bubbles | false |
cancelable | false ; there is no default behavior to cancel. |
changeType | Identifies the type of change that was made. |
currentTarget | The object that is actively processing
the event object with an event listener. |
endIndex | Identifies the index of the last changed item. |
items | An array that lists the items that were changed. |
startIndex | Identifies the index of the first changed item. |
target | The object that dispatched the event. The target is
not always the object listening for the event. Use the currentTarget
property to access the object that is listening for the event. |
See also
Event Object Type: fl.events.DataChangeEvent
property DataChangeEvent.type = fl.events.DataChangeEvent.PRE_DATA_CHANGE
Language Version: | ActionScript 3.0 |
Product Version: | Flash CS3 |
Runtime Versions: | Flash Player 9.0.28.0, AIR 1.0 |
Dispatched before the data is changed.
Defines the value of the
type
property of a
preDataChange
event object. This event object is dispatched before a change is made to component data.
This event has the following properties:
Property | Value |
---|
bubbles | false |
cancelable | false ; there is no default behavior to cancel. |
changeType | Identifies the type of change to be made. |
currentTarget | The object that is actively processing
the event object with an event listener. |
endIndex | Identifies the index of the last item to be
changed. |
items | An array that lists the items to be changed. |
startIndex | Identifies the index of the first item to be
changed. |
target | The object that dispatched the event. The target is
not always the object listening for the event. Use the currentTarget
property to access the object that is listening for the event. |
See also
This example demonstrates how data providers can be used to maintain the contents of several data grids.
To run the example, follow these steps:
- Add the Label, Button, ComboBox, TextInput, and DataGrid components to the library.
- Save this code as DataProviderExample.as in the same directory as your FLA file.
- Set the Document class in the FLA file to DataProviderExample.
package
{
import fl.controls.Button;
import fl.controls.ComboBox;
import fl.controls.DataGrid;
import fl.controls.Label;
import fl.controls.TextInput;
import fl.data.DataProvider;
import flash.display.Sprite;
import flash.events.*;
import flash.text.TextFieldAutoSize;
public class DataProviderExample extends Sprite
{
private var southern:DataGrid;
private var northern:DataGrid;
private var world:DataGrid;
private var southernRoster:DataProvider;
private var northernRoster:DataProvider;
private var leagueCB:ComboBox;
private var nameTI:TextInput;
private var goalsTI:TextInput;
private var submitBtn:Button;
public function DataProviderExample() {
southernRoster = new DataProvider();
northernRoster = new DataProvider();
createDataGrids();
createUI();
}
private function createUI():void {
var description:Label = new Label();
description.text = "Enter player's name, goals scored, and hemisphere of origin:";
description.autoSize = TextFieldAutoSize.LEFT;
nameTI = new TextInput();
goalsTI = new TextInput();
var submitBtn:Button = new Button();
submitBtn.label = "Submit Player";
submitBtn.addEventListener(MouseEvent.CLICK, submitPlayer);
leagueCB = new ComboBox();
leagueCB.addItem( { label:"Northern", data: 0 } );
leagueCB.addItem( { label:"Southern", data: 1 } );
description.move(10,10);
nameTI.move(10,40);
nameTI.setSize(150,24);
goalsTI.move(170,40);
goalsTI.setSize(40,24);
leagueCB.move(220,40);
leagueCB.setSize(120,24);
submitBtn.move(350,40);
goalsTI.restrict = "0123456789";
addChild(description);
addChild(leagueCB);
addChild(submitBtn);
addChild(nameTI);
addChild(goalsTI);
}
private function submitPlayer(e:MouseEvent):void {
if(nameTI.text != "" && goalsTI.text != "") {
var targetRoster:DataProvider;
if(leagueCB.selectedItem.label == "Southern") {
targetRoster = southernRoster;
}
else {
targetRoster = northernRoster;
}
targetRoster.addItem( { Name: nameTI.text, Goals: goalsTI.text } );
var worldRoster:DataProvider = southernRoster.clone();
worldRoster.merge(northernRoster);
worldRoster.sortOn("Goals", Array.NUMERIC | Array.DESCENDING);
southernRoster.sortOn("Goals", Array.NUMERIC | Array.DESCENDING);
northernRoster.sortOn("Goals", Array.NUMERIC | Array.DESCENDING);
world.dataProvider = worldRoster;
nameTI.text = "";
goalsTI.text = "";
}
}
private function createDataGrids():void {
southern = new DataGrid();
northern = new DataGrid();
world = new DataGrid();
southern.move(10,100);
northern.move(180,100);
world.move(350,100);
southern.setSize(170, 250);
northern.setSize(170, 250);
world.setSize(170, 250);
southern.columns =
northern.columns =
world.columns = [ "Name", "Goals" ];
southern.dataProvider = southernRoster;
northern.dataProvider = northernRoster;
addChild(southern);
addChild(northern);
addChild(world);
var northernLabel:Label = new Label();
northernLabel.autoSize = TextFieldAutoSize.LEFT;
northernLabel.text = "Southern Hemisphere";
northernLabel.move(10,75);
addChild(northernLabel);
var southernLabel:Label = new Label();
southernLabel.autoSize = TextFieldAutoSize.LEFT;
southernLabel.text = "Northern Hemisphere";
southernLabel.move(180,75);
addChild(southernLabel);
var majorLabel:Label = new Label();
majorLabel.autoSize = TextFieldAutoSize.LEFT;
majorLabel.text = "World";
majorLabel.move(350,75);
addChild(majorLabel);
}
}
}
© 2009 Adobe Systems Incorporated. All rights reserved.
Wed Jul 29 2009, 04:58 PM -07:00 DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider DataProvider
fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider fl.data.DataProvider