[mapguide-commits] r6972 - in trunk/Tools/Maestro: Maestro.Editors/Common OSGeo.MapGuide.MaestroAPI/Expression OSGeo.MapGuide.MaestroAPI/Feature OSGeo.MapGuide.MaestroAPI.Http OSGeo.MapGuide.MaestroAPI.Native

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Sep 3 05:32:42 PDT 2012


Author: jng
Date: 2012-09-03 05:32:42 -0700 (Mon, 03 Sep 2012)
New Revision: 6972

Modified:
   trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.designer.cs
   trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.resx
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/XmlReaderBase.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeDataReader.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeFeatureReader.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeSqlReader.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Expression/ExpressionFeatureReader.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Feature/FeatureBase.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Feature/ReaderBase.cs
Log:
#2100: Use the UNIQUE() aggregate function as the first port of call for fetching distinct values in the Expression Editor. Only fallback to existing method if the UNIQUE() approach fails. Also fix the MaestroAPI reader implementations to allow querying property types before an actual feature has been read.

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.cs	2012-08-30 18:44:23 UTC (rev 6971)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.cs	2012-09-03 12:32:42 UTC (rev 6972)
@@ -973,16 +973,52 @@
 
         private void LookupValues_Click(object sender, EventArgs e)
         {
+            //Use UNIQUE() method first. This should work in most cases
             using (new WaitCursor(this))
             {
+                string filter = null;
+                var expr = "UNIQUE(" + ColumnName.Text + ")";
+                bool bFallback = false;
+                ColumnValue.Items.Clear();
+                ColumnValue.Tag = null;
                 try
                 {
+                    using (var rdr = _featSvc.AggregateQueryFeatureSource(m_featureSource, _cls.QualifiedName, filter, new System.Collections.Specialized.NameValueCollection() { 
+                            { "UNIQ_VALS", expr }
+                        }))
+                    {
+                        ColumnValue.Tag = rdr.GetPropertyType("UNIQ_VALS");
+                        while (rdr.ReadNext())
+                        {
+                            if (!rdr.IsNull("UNIQ_VALS"))
+                            {
+                                object value = rdr["UNIQ_VALS"];
+                                ColumnValue.Items.Add(value);
+                            }
+                        }
+                        rdr.Close();
+                    }
+                }
+                catch
+                {
+                    ColumnValue.Items.Clear();
+                    bFallback = true;
+                }
+                if (!bFallback)
+                {
+                    ColumnValue.Enabled = true;
+                    ColumnValue.SelectedIndex = -1;
+                    ColumnValue.DroppedDown = true;
+                    return;
+                }
+
+                try
+                {
                     SortedList<string, PropertyDefinition> cols = (SortedList<string, PropertyDefinition>)ColumnName.Tag;
                     PropertyDefinition col = cols[ColumnName.Text];
 
                     bool retry = true;
                     Exception rawEx = null;
-                    string filter = null;
 
                     SortedList<string, string> values = new SortedList<string, string>();
                     bool hasNull = false;
@@ -1048,12 +1084,27 @@
 
         private void ColumnValue_SelectedIndexChanged(object sender, EventArgs e)
         {
-            if (ColumnValue.SelectedIndex >= 0 && ColumnValue.Tag as Type != null)
+            if (ColumnValue.SelectedIndex >= 0)
             {
-                if (ColumnValue.Tag == typeof(string) && (ColumnValue.SelectedIndex != 0 || ColumnValue.Text != "NULL"))
-                    ExpressionText.SelectedText = " '" + ColumnValue.Text + "' ";
-                else
-                    ExpressionText.SelectedText = " " + ColumnValue.Text + " ";
+                var tag = ColumnValue.Tag;
+                if (tag != null)
+                {
+                    if (ColumnValue.Tag == typeof(string) && (ColumnValue.SelectedIndex != 0 || ColumnValue.Text != "NULL"))
+                    {
+                        InsertText("'" + ColumnValue.Text + "'");
+                    }
+                    else
+                    {
+                        if (tag is PropertyValueType && (PropertyValueType)tag == PropertyValueType.String)
+                            InsertText("'" + ColumnValue.Text + "'");
+                        else
+                            InsertText(ColumnValue.Text);
+                    }
+                }
+                else 
+                {
+                    InsertText(ColumnValue.Text);
+                }
             }
         }
     }

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.designer.cs	2012-08-30 18:44:23 UTC (rev 6971)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.designer.cs	2012-09-03 12:32:42 UTC (rev 6972)
@@ -35,6 +35,8 @@
             this.panel1 = new System.Windows.Forms.Panel();
             this.lblHint = new System.Windows.Forms.Label();
             this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+            this.btnProperties = new System.Windows.Forms.ToolStripDropDownButton();
+            this.btnFunctions = new System.Windows.Forms.ToolStripDropDownButton();
             this.btnFilter = new System.Windows.Forms.ToolStripDropDownButton();
             this.btnCondition = new System.Windows.Forms.ToolStripMenuItem();
             this.btnSpatial = new System.Windows.Forms.ToolStripMenuItem();
@@ -45,8 +47,6 @@
             this.ColumnName = new System.Windows.Forms.ToolStripComboBox();
             this.ExpressionText = new System.Windows.Forms.TextBox();
             this._autoCompleteTooltip = new System.Windows.Forms.ToolTip(this.components);
-            this.btnFunctions = new System.Windows.Forms.ToolStripDropDownButton();
-            this.btnProperties = new System.Windows.Forms.ToolStripDropDownButton();
             this.panel1.SuspendLayout();
             this.toolStrip1.SuspendLayout();
             this.SuspendLayout();
@@ -92,6 +92,18 @@
             resources.ApplyResources(this.toolStrip1, "toolStrip1");
             this.toolStrip1.Name = "toolStrip1";
             // 
+            // btnProperties
+            // 
+            this.btnProperties.Image = global::Maestro.Editors.Properties.Resources.property;
+            resources.ApplyResources(this.btnProperties, "btnProperties");
+            this.btnProperties.Name = "btnProperties";
+            // 
+            // btnFunctions
+            // 
+            this.btnFunctions.Image = global::Maestro.Editors.Properties.Resources.function;
+            resources.ApplyResources(this.btnFunctions, "btnFunctions");
+            this.btnFunctions.Name = "btnFunctions";
+            // 
             // btnFilter
             // 
             this.btnFilter.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -160,22 +172,10 @@
             this.ExpressionText.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ExpressionText_KeyDown);
             this.ExpressionText.KeyUp += new System.Windows.Forms.KeyEventHandler(this.ExpressionText_KeyUp);
             // 
-            // btnFunctions
-            // 
-            this.btnFunctions.Image = global::Maestro.Editors.Properties.Resources.function;
-            resources.ApplyResources(this.btnFunctions, "btnFunctions");
-            this.btnFunctions.Name = "btnFunctions";
-            // 
-            // btnProperties
-            // 
-            this.btnProperties.Image = global::Maestro.Editors.Properties.Resources.property;
-            resources.ApplyResources(this.btnProperties, "btnProperties");
-            this.btnProperties.Name = "btnProperties";
-            // 
             // ExpressionEditor
             // 
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
             resources.ApplyResources(this, "$this");
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
             this.ControlBox = false;
             this.Controls.Add(this.ExpressionText);
             this.Controls.Add(this.toolStrip1);

Modified: trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.resx	2012-08-30 18:44:23 UTC (rev 6971)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/ExpressionEditor.resx	2012-09-03 12:32:42 UTC (rev 6972)
@@ -112,23 +112,23 @@
     <value>2.0</value>
   </resheader>
   <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <data name="OKBtn.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
     <value>Bottom, Right</value>
   </data>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="OKBtn.Location" type="System.Drawing.Point, System.Drawing">
     <value>342, 6</value>
   </data>
   <data name="OKBtn.Size" type="System.Drawing.Size, System.Drawing">
     <value>75, 23</value>
   </data>
-  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
   <data name="OKBtn.TabIndex" type="System.Int32, mscorlib">
     <value>2</value>
   </data>
@@ -139,7 +139,7 @@
     <value>OKBtn</value>
   </data>
   <data name=">>OKBtn.Type" xml:space="preserve">
-    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>OKBtn.Parent" xml:space="preserve">
     <value>panel1</value>
@@ -166,7 +166,7 @@
     <value>CancelBtn</value>
   </data>
   <data name=">>CancelBtn.Type" xml:space="preserve">
-    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>CancelBtn.Parent" xml:space="preserve">
     <value>panel1</value>
@@ -174,11 +174,26 @@
   <data name=">>CancelBtn.ZOrder" xml:space="preserve">
     <value>1</value>
   </data>
+  <data name="lblHint.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="lblHint.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 11</value>
+  </data>
+  <data name="lblHint.Size" type="System.Drawing.Size, System.Drawing">
+    <value>202, 13</value>
+  </data>
+  <data name="lblHint.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="lblHint.Text" xml:space="preserve">
+    <value>Press Alt + Right to invoke auto-complete</value>
+  </data>
   <data name=">>lblHint.Name" xml:space="preserve">
     <value>lblHint</value>
   </data>
   <data name=">>lblHint.Type" xml:space="preserve">
-    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>lblHint.Parent" xml:space="preserve">
     <value>panel1</value>
@@ -202,7 +217,7 @@
     <value>panel1</value>
   </data>
   <data name=">>panel1.Type" xml:space="preserve">
-    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>panel1.Parent" xml:space="preserve">
     <value>$this</value>
@@ -210,41 +225,14 @@
   <data name=">>panel1.ZOrder" xml:space="preserve">
     <value>2</value>
   </data>
-  <data name="lblHint.AutoSize" type="System.Boolean, mscorlib">
-    <value>True</value>
-  </data>
-  <data name="lblHint.Location" type="System.Drawing.Point, System.Drawing">
-    <value>12, 11</value>
-  </data>
-  <data name="lblHint.Size" type="System.Drawing.Size, System.Drawing">
-    <value>202, 13</value>
-  </data>
-  <data name="lblHint.TabIndex" type="System.Int32, mscorlib">
-    <value>4</value>
-  </data>
-  <data name="lblHint.Text" xml:space="preserve">
-    <value>Press Alt + Right to invoke auto-complete</value>
-  </data>
-  <data name=">>lblHint.Name" xml:space="preserve">
-    <value>lblHint</value>
-  </data>
-  <data name=">>lblHint.Type" xml:space="preserve">
-    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </data>
-  <data name=">>lblHint.Parent" xml:space="preserve">
-    <value>panel1</value>
-  </data>
-  <data name=">>lblHint.ZOrder" xml:space="preserve">
-    <value>0</value>
-  </data>
-  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
   <data name="btnProperties.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
     <value>Magenta</value>
   </data>
   <data name="btnProperties.Size" type="System.Drawing.Size, System.Drawing">
-    <value>85, 22</value>
+    <value>89, 22</value>
   </data>
   <data name="btnProperties.Text" xml:space="preserve">
     <value>Properties</value>
@@ -253,16 +241,34 @@
     <value>Magenta</value>
   </data>
   <data name="btnFunctions.Size" type="System.Drawing.Size, System.Drawing">
-    <value>82, 22</value>
+    <value>88, 22</value>
   </data>
   <data name="btnFunctions.Text" xml:space="preserve">
     <value>Functions</value>
   </data>
+  <data name="btnCondition.Size" type="System.Drawing.Size, System.Drawing">
+    <value>127, 22</value>
+  </data>
+  <data name="btnCondition.Text" xml:space="preserve">
+    <value>Condition</value>
+  </data>
+  <data name="btnSpatial.Size" type="System.Drawing.Size, System.Drawing">
+    <value>127, 22</value>
+  </data>
+  <data name="btnSpatial.Text" xml:space="preserve">
+    <value>Spatial</value>
+  </data>
+  <data name="btnDistance.Size" type="System.Drawing.Size, System.Drawing">
+    <value>127, 22</value>
+  </data>
+  <data name="btnDistance.Text" xml:space="preserve">
+    <value>Distance</value>
+  </data>
   <data name="btnFilter.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
     <value>Magenta</value>
   </data>
   <data name="btnFilter.Size" type="System.Drawing.Size, System.Drawing">
-    <value>60, 22</value>
+    <value>62, 22</value>
   </data>
   <data name="btnFilter.Text" xml:space="preserve">
     <value>Filter</value>
@@ -310,7 +316,7 @@
     <value>toolStrip1</value>
   </data>
   <data name=">>toolStrip1.Type" xml:space="preserve">
-    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>toolStrip1.Parent" xml:space="preserve">
     <value>$this</value>
@@ -318,24 +324,6 @@
   <data name=">>toolStrip1.ZOrder" xml:space="preserve">
     <value>1</value>
   </data>
-  <data name="btnCondition.Size" type="System.Drawing.Size, System.Drawing">
-    <value>152, 22</value>
-  </data>
-  <data name="btnCondition.Text" xml:space="preserve">
-    <value>Condition</value>
-  </data>
-  <data name="btnSpatial.Size" type="System.Drawing.Size, System.Drawing">
-    <value>152, 22</value>
-  </data>
-  <data name="btnSpatial.Text" xml:space="preserve">
-    <value>Spatial</value>
-  </data>
-  <data name="btnDistance.Size" type="System.Drawing.Size, System.Drawing">
-    <value>152, 22</value>
-  </data>
-  <data name="btnDistance.Text" xml:space="preserve">
-    <value>Distance</value>
-  </data>
   <data name="ExpressionText.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
     <value>Fill</value>
   </data>
@@ -358,7 +346,7 @@
     <value>ExpressionText</value>
   </data>
   <data name=">>ExpressionText.Type" xml:space="preserve">
-    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>ExpressionText.Parent" xml:space="preserve">
     <value>$this</value>
@@ -366,15 +354,12 @@
   <data name=">>ExpressionText.ZOrder" xml:space="preserve">
     <value>0</value>
   </data>
-  <metadata name="_autoCompleteTooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+  <metadata name="_autoCompleteTooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>116, 17</value>
   </metadata>
-  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
   </metadata>
-  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
-    <value>6, 13</value>
-  </data>
   <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
     <value>510, 289</value>
   </data>
@@ -387,76 +372,76 @@
   <data name="$this.Text" xml:space="preserve">
     <value>Expression Editor</value>
   </data>
+  <data name=">>btnProperties.Name" xml:space="preserve">
+    <value>btnProperties</value>
+  </data>
+  <data name=">>btnProperties.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnFunctions.Name" xml:space="preserve">
+    <value>btnFunctions</value>
+  </data>
+  <data name=">>btnFunctions.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
   <data name=">>btnFilter.Name" xml:space="preserve">
     <value>btnFilter</value>
   </data>
   <data name=">>btnFilter.Type" xml:space="preserve">
-    <value>System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>btnCondition.Name" xml:space="preserve">
     <value>btnCondition</value>
   </data>
   <data name=">>btnCondition.Type" xml:space="preserve">
-    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>btnSpatial.Name" xml:space="preserve">
     <value>btnSpatial</value>
   </data>
   <data name=">>btnSpatial.Type" xml:space="preserve">
-    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>btnDistance.Name" xml:space="preserve">
     <value>btnDistance</value>
   </data>
   <data name=">>btnDistance.Type" xml:space="preserve">
-    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>toolStripSeparator1.Name" xml:space="preserve">
     <value>toolStripSeparator1</value>
   </data>
   <data name=">>toolStripSeparator1.Type" xml:space="preserve">
-    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>ColumnValue.Name" xml:space="preserve">
     <value>ColumnValue</value>
   </data>
   <data name=">>ColumnValue.Type" xml:space="preserve">
-    <value>System.Windows.Forms.ToolStripComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.ToolStripComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>LookupValues.Name" xml:space="preserve">
     <value>LookupValues</value>
   </data>
   <data name=">>LookupValues.Type" xml:space="preserve">
-    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>ColumnName.Name" xml:space="preserve">
     <value>ColumnName</value>
   </data>
   <data name=">>ColumnName.Type" xml:space="preserve">
-    <value>System.Windows.Forms.ToolStripComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.ToolStripComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <data name=">>_autoCompleteTooltip.Name" xml:space="preserve">
     <value>_autoCompleteTooltip</value>
   </data>
   <data name=">>_autoCompleteTooltip.Type" xml:space="preserve">
-    <value>System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.ToolTip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
-  <data name=">>btnFunctions.Name" xml:space="preserve">
-    <value>btnFunctions</value>
-  </data>
-  <data name=">>btnFunctions.Type" xml:space="preserve">
-    <value>System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </data>
-  <data name=">>btnProperties.Name" xml:space="preserve">
-    <value>btnProperties</value>
-  </data>
-  <data name=">>btnProperties.Type" xml:space="preserve">
-    <value>System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </data>
   <data name=">>$this.Name" xml:space="preserve">
     <value>ExpressionEditor</value>
   </data>
   <data name=">>$this.Type" xml:space="preserve">
-    <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
 </root>
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Expression/ExpressionFeatureReader.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Expression/ExpressionFeatureReader.cs	2012-08-30 18:44:23 UTC (rev 6971)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Expression/ExpressionFeatureReader.cs	2012-09-03 12:32:42 UTC (rev 6972)
@@ -98,6 +98,16 @@
             return _reader.GetName(index);
         }
 
+        public override Schema.PropertyValueType GetPropertyType(int index)
+        {
+            return _reader.GetPropertyType(index);
+        }
+
+        public override Schema.PropertyValueType GetPropertyType(string name)
+        {
+            return _reader.GetPropertyType(name);
+        }
+
         public override ReaderType ReaderType
         {
             get { return _reader.ReaderType; }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Feature/FeatureBase.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Feature/FeatureBase.cs	2012-08-30 18:44:23 UTC (rev 6971)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Feature/FeatureBase.cs	2012-09-03 12:32:42 UTC (rev 6972)
@@ -134,6 +134,36 @@
             _pos = -1;
         }
 
+        public override PropertyValueType GetPropertyType(int index)
+        {
+            var prop = this.ClassDefinition.Properties[index];
+            if (prop.Type == PropertyDefinitionType.Data)
+                return (PropertyValueType)((DataPropertyDefinition)prop).DataType;
+            else if (prop.Type == PropertyDefinitionType.Geometry)
+                return PropertyValueType.Geometry;
+            else if (prop.Type == PropertyDefinitionType.Raster)
+                return PropertyValueType.Raster;
+            else
+                throw new ArgumentException();
+        }
+
+        public override PropertyValueType GetPropertyType(string name)
+        {
+            var prop = this.ClassDefinition.FindProperty(name);
+            if (prop != null)
+            {
+                if (prop.Type == PropertyDefinitionType.Data)
+                    return (PropertyValueType)((DataPropertyDefinition)prop).DataType;
+                else if (prop.Type == PropertyDefinitionType.Geometry)
+                    return PropertyValueType.Geometry;
+                else if (prop.Type == PropertyDefinitionType.Raster)
+                    return PropertyValueType.Raster;
+                else
+                    throw new ArgumentException();
+            }
+            throw new ArgumentException();
+        }
+
         /// <summary>
         /// Reads the next feature.
         /// </summary>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Feature/ReaderBase.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Feature/ReaderBase.cs	2012-08-30 18:44:23 UTC (rev 6971)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Feature/ReaderBase.cs	2012-09-03 12:32:42 UTC (rev 6972)
@@ -369,25 +369,18 @@
             get { return this.Current[name]; }
         }
 
-
         /// <summary>
         /// Gets the type of the property.
         /// </summary>
         /// <param name="name">The name.</param>
         /// <returns></returns>
-        public OSGeo.MapGuide.MaestroAPI.Schema.PropertyValueType GetPropertyType(string name)
-        {
-            return this.Current.GetPropertyType(name);
-        }
+        public abstract OSGeo.MapGuide.MaestroAPI.Schema.PropertyValueType GetPropertyType(string name);
 
         /// <summary>
         /// Gets the type of the property at the specified index.
         /// </summary>
         /// <param name="index">The index.</param>
         /// <returns></returns>
-        public OSGeo.MapGuide.MaestroAPI.Schema.PropertyValueType GetPropertyType(int index)
-        {
-            return this.Current.GetPropertyType(index);
-        }
+        public abstract OSGeo.MapGuide.MaestroAPI.Schema.PropertyValueType GetPropertyType(int index);
     }
 }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/XmlReaderBase.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/XmlReaderBase.cs	2012-08-30 18:44:23 UTC (rev 6971)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/XmlReaderBase.cs	2012-09-03 12:32:42 UTC (rev 6972)
@@ -140,6 +140,16 @@
             }
         }
 
+        public override PropertyValueType GetPropertyType(string name)
+        {
+            return _propertyMap[name].Type;
+        }
+
+        public override PropertyValueType GetPropertyType(int index)
+        {
+            return _properties[index].Type;
+        }
+
         public override Type GetFieldType(int i)
         {
             return ClrFdoTypeMap.GetClrType(_properties[i].Type);

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeDataReader.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeDataReader.cs	2012-08-30 18:44:23 UTC (rev 6971)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeDataReader.cs	2012-09-03 12:32:42 UTC (rev 6972)
@@ -80,6 +80,16 @@
             get { return ReaderType.Data; }
         }
 
+        public override PropertyValueType GetPropertyType(int index)
+        {
+            return (PropertyValueType)_reader.GetPropertyType(index); //We can do this because the enum values map directly to MgPropertyType
+        }
+
+        public override PropertyValueType GetPropertyType(string name)
+        {
+            return (PropertyValueType)_reader.GetPropertyType(name); //We can do this because the enum values map directly to MgPropertyType
+        }
+
         public override string GetName(int index)
         {
             return _reader.GetPropertyName(index);

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeFeatureReader.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeFeatureReader.cs	2012-08-30 18:44:23 UTC (rev 6971)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeFeatureReader.cs	2012-09-03 12:32:42 UTC (rev 6972)
@@ -23,6 +23,7 @@
 using OSGeo.MapGuide.MaestroAPI.Exceptions;
 using OSGeo.MapGuide.MaestroAPI.Feature;
 using OSGeo.MapGuide.MaestroAPI.Internal;
+using OSGeo.MapGuide.MaestroAPI.Schema;
 
 namespace OSGeo.MapGuide.MaestroAPI.Native
 {
@@ -51,6 +52,16 @@
             return null;
         }
 
+        public override PropertyValueType GetPropertyType(int index)
+        {
+            return (PropertyValueType)_reader.GetPropertyType(index); //We can do this because the enum values map directly to MgPropertyType
+        }
+
+        public override PropertyValueType GetPropertyType(string name)
+        {
+            return (PropertyValueType)_reader.GetPropertyType(name); //We can do this because the enum values map directly to MgPropertyType
+        }
+
         public override void Dispose()
         {
             Close();

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeSqlReader.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeSqlReader.cs	2012-08-30 18:44:23 UTC (rev 6971)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/LocalNativeSqlReader.cs	2012-09-03 12:32:42 UTC (rev 6972)
@@ -70,6 +70,16 @@
             return null;
         }
 
+        public override PropertyValueType GetPropertyType(int index)
+        {
+            return (PropertyValueType)_reader.GetPropertyType(index); //We can do this because the enum values map directly to MgPropertyType
+        }
+
+        public override PropertyValueType GetPropertyType(string name)
+        {
+            return (PropertyValueType)_reader.GetPropertyType(name); //We can do this because the enum values map directly to MgPropertyType
+        }
+
         public override void Close()
         {
             _reader.Close();



More information about the mapguide-commits mailing list