From 5c333928f7f328319f1de4486d5e7ce3a54fc2ce Mon Sep 17 00:00:00 2001 From: xue <> Date: Thu, 19 Jan 2006 05:37:08 +0000 Subject: Added DummyDataSource. TDataGrid completed (tests pending). --- framework/Collections/TDummyDataSource.php | 131 +++++++++++++++++++++++++++++ framework/Collections/TPagedDataSource.php | 56 ++++++++++-- 2 files changed, 182 insertions(+), 5 deletions(-) create mode 100644 framework/Collections/TDummyDataSource.php (limited to 'framework/Collections') diff --git a/framework/Collections/TDummyDataSource.php b/framework/Collections/TDummyDataSource.php new file mode 100644 index 00000000..74f5f667 --- /dev/null +++ b/framework/Collections/TDummyDataSource.php @@ -0,0 +1,131 @@ + + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005 PradoSoft + * @license http://www.pradosoft.com/license/ + * @version $Revision: $ $Date: $ + * @package System.Collections + */ + +/** + * TDummyDataSource class + * + * TDummyDataSource implements a dummy data collection with a specified number + * of dummy data items. You can traverse it using foreach + * PHP statement like the following, + * + * foreach($dummyDataSource as $dataItem) + * + * + * @author Qiang Xue + * @version $Revision: $ $Date: $ + * @package System.Collections + * @since 3.0 + */ +class TDummyDataSource extends TComponent implements IteratorAggregate +{ + private $_count; + + public function __construct($count) + { + $this->_count=$count; + } + + public function getCount() + { + return $this->_count; + } + + /** + * @return Iterator iterator + */ + public function getIterator() + { + return new TDummyDataSourceIterator($this->_count); + } +} + +/** + * TDummyDataSourceIterator class + * + * TDummyDataSourceIterator implements Iterator interface. + * + * TDummyDataSourceIterator is used by {@link TDummyDataSource}. + * It allows TDummyDataSource to return a new iterator + * for traversing its dummy items. + * + * @author Qiang Xue + * @version $Revision: $ $Date: $ + * @package System.Collections + * @since 3.0 + */ +class TDummyDataSourceIterator implements Iterator +{ + private $_index; + private $_count; + + /** + * Constructor. + * @param TList the data to be iterated through + * @param integer start index + * @param integer number of items to be iterated through + */ + public function __construct($count) + { + $this->_count=$count; + $this->_index=0; + } + + /** + * Rewinds internal array pointer. + * This method is required by the interface Iterator. + */ + public function rewind() + { + $this->_index=0; + } + + /** + * Returns the key of the current array item. + * This method is required by the interface Iterator. + * @return integer the key of the current array item + */ + public function key() + { + return $this->_index; + } + + /** + * Returns the current array item. + * This method is required by the interface Iterator. + * @return mixed the current array item + */ + public function current() + { + return null; + } + + /** + * Moves the internal pointer to the next array item. + * This method is required by the interface Iterator. + */ + public function next() + { + $this->_index++; + } + + /** + * Returns whether there is an item at current position. + * This method is required by the interface Iterator. + * @return boolean + */ + public function valid() + { + return $this->_index<$this->_count; + } +} + +?> \ No newline at end of file diff --git a/framework/Collections/TPagedDataSource.php b/framework/Collections/TPagedDataSource.php index 71e7c9e6..02c15b64 100644 --- a/framework/Collections/TPagedDataSource.php +++ b/framework/Collections/TPagedDataSource.php @@ -1,5 +1,33 @@ + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005 PradoSoft + * @license http://www.pradosoft.com/license/ + * @version $Revision: $ $Date: $ + * @package System.Collections + */ +/** + * TPagedDataSource class + * + * TPagedDataSource implements an integer-indexed collection class with paging functionality. + * + * Data items in TPagedDataSource can be traversed using foreach + * PHP statement like the following, + * + * foreach($pagedDataSource as $dataItem) + * + * The data are fetched from {@link setDataSource DataSource}. Only the items + * within the specified page will be returned and traversed. + * + * @author Qiang Xue + * @version $Revision: $ $Date: $ + * @package System.Collections + * @since 3.0 + */ class TPagedDataSource extends TComponent implements IteratorAggregate { /** @@ -214,6 +242,9 @@ class TPagedDataSource extends TComponent implements IteratorAggregate return $this->_dataSource->getCount(); } + /** + * @return Iterator iterator + */ public function getIterator() { if($this->_dataSource instanceof TList) @@ -228,12 +259,12 @@ class TPagedDataSource extends TComponent implements IteratorAggregate /** - * TListIterator class + * TPagedListIterator class * - * TListIterator implements Iterator interface. + * TPagedListIterator implements Iterator interface. * - * TListIterator is used by TList. It allows TList to return a new iterator - * for traversing the items in the list. + * TPagedListIterator is used by {@link TPagedDataSource}. It allows TPagedDataSource + * to return a new iterator for traversing the items in a {@link TList} object. * * @author Qiang Xue * @version $Revision: $ $Date: $ @@ -249,7 +280,9 @@ class TPagedListIterator implements Iterator /** * Constructor. - * @param array the data to be iterated through + * @param TList the data to be iterated through + * @param integer start index + * @param integer number of items to be iterated through */ public function __construct(TList $list,$startIndex,$count) { @@ -311,6 +344,19 @@ class TPagedListIterator implements Iterator } } +/** + * TPagedMapIterator class + * + * TPagedMapIterator implements Iterator interface. + * + * TPagedMapIterator is used by {@link TPagedDataSource}. It allows TPagedDataSource + * to return a new iterator for traversing the items in a {@link TMap} object. + * + * @author Qiang Xue + * @version $Revision: $ $Date: $ + * @package System.Collections + * @since 3.0 + */ class TPagedMapIterator implements Iterator { private $_map; -- cgit v1.2.3