[mapguide-commits] r4834 - in trunk/Tools/Maestro: Maestro/ResourceEditors/FeatureSourcePreview MaestroAPI

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed May 5 04:34:54 EDT 2010


Author: jng
Date: 2010-05-05 04:34:51 -0400 (Wed, 05 May 2010)
New Revision: 4834

Modified:
   trunk/Tools/Maestro/Maestro/ResourceEditors/FeatureSourcePreview/ClassPreviewCtrl.cs
   trunk/Tools/Maestro/MaestroAPI/FeatureSetReader.cs
Log:
#1349: Implement IEnumerable<IDataRecord> for FeatureSetReader, this means you can now foreach over a FeatureSetReader. The local feature source preview now uses this method as simple proof that it works.

Modified: trunk/Tools/Maestro/Maestro/ResourceEditors/FeatureSourcePreview/ClassPreviewCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro/ResourceEditors/FeatureSourcePreview/ClassPreviewCtrl.cs	2010-05-05 08:22:59 UTC (rev 4833)
+++ trunk/Tools/Maestro/Maestro/ResourceEditors/FeatureSourcePreview/ClassPreviewCtrl.cs	2010-05-05 08:34:51 UTC (rev 4834)
@@ -91,10 +91,11 @@
                     else
                         table.Columns.Add(col.Name, col.Type);
                 }
-                while (reader.Read())
+                //while (reader.Read())
+                foreach(FeatureSetRow row in reader)
                 {
                     var drow = table.NewRow();
-                    var row = reader.Row;
+                    //var row = reader.Row;
                     foreach (FeatureSetColumn col in reader.Columns)
                     {
                         if (!row.IsValueNull(col.Name))

Modified: trunk/Tools/Maestro/MaestroAPI/FeatureSetReader.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPI/FeatureSetReader.cs	2010-05-05 08:22:59 UTC (rev 4833)
+++ trunk/Tools/Maestro/MaestroAPI/FeatureSetReader.cs	2010-05-05 08:34:51 UTC (rev 4834)
@@ -29,7 +29,7 @@
 	/// <summary>
 	/// Represents a set of results from a query
 	/// </summary>
-	public abstract class FeatureSetReader : IDisposable, IDataReader
+	public abstract class FeatureSetReader : IDisposable, IDataReader, IEnumerable<IDataRecord>
 	{
 		protected FeatureSetColumn[] m_columns;
 		protected FeatureSetRow m_row;
@@ -225,6 +225,48 @@
         {
             get { return m_row[GetName(i)]; }
         }
+
+        internal class FeatureSetRowEnumerator : IEnumerator<IDataRecord>
+        {
+            private FeatureSetReader _parent;
+
+            public FeatureSetRowEnumerator(FeatureSetReader parent)
+            {
+                _parent = parent;
+            }
+
+            public IDataRecord Current
+            {
+                get { return _parent.Row; }
+            }
+
+            public void Dispose() { }
+
+            object System.Collections.IEnumerator.Current
+            {
+                get { return _parent.Row; }
+            }
+
+            public bool MoveNext()
+            {
+                return _parent.Read();
+            }
+
+            public void Reset()
+            {
+                throw new NotSupportedException();
+            }
+        }
+
+        public IEnumerator<IDataRecord> GetEnumerator()
+        {
+            return new FeatureSetRowEnumerator(this);
+        }
+
+        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+        {
+            return new FeatureSetRowEnumerator(this);
+        }
     }
 
 	public abstract class FeatureSetColumn



More information about the mapguide-commits mailing list