[mapguide-commits] r5259 - in sandbox/maestro-3.0: Maestro.Base/Templates Maestro.Editors/LayerDefinition Maestro.Editors/LayerDefinition/Vector OSGeo.MapGuide.MaestroAPI OSGeo.MapGuide.MaestroAPI/Commands OSGeo.MapGuide.MaestroAPI/ObjectModels OSGeo.MapGuide.MaestroAPI/Resource OSGeo.MapGuide.MaestroAPI/Services OSGeo.MapGuide.MaestroAPI.Http

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Fri Oct 8 01:56:23 EDT 2010


Author: jng
Date: 2010-10-08 05:56:23 +0000 (Fri, 08 Oct 2010)
New Revision: 5259

Modified:
   sandbox/maestro-3.0/Maestro.Base/Templates/VectorLayerDefinitionItemTemplate.cs
   sandbox/maestro-3.0/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs
   sandbox/maestro-3.0/Maestro.Editors/LayerDefinition/Vector/VectorLayerStyleSectionCtrl.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI.Http/HttpServerConnection.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI.Http/RequestBuilder.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/GridLayerDefinitionImpl.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaceExtensions.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/BaseLayerDefinitionValidator.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ServerConnectionBase.cs
   sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Services/IFeatureService.cs
Log:
3.0 sandbox changes:

 - More abstract layer API changes. Basically any API that returns an IList<T> needs to be broken down into the following:
   - IEnumerable<T> AllItems { get; }
   - void AddItem(T item)
   - void RemoveItem(T item)
 other interfaces may have additional APIs for more collection-like behaviour. But the addition of these APIs will insulate the underlying implementation from the consumer


Modified: sandbox/maestro-3.0/Maestro.Base/Templates/VectorLayerDefinitionItemTemplate.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Base/Templates/VectorLayerDefinitionItemTemplate.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/Maestro.Base/Templates/VectorLayerDefinitionItemTemplate.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -25,6 +25,8 @@
 using Res = Maestro.Base.Properties.Resources;
 using OSGeo.MapGuide.MaestroAPI.Resource;
 using OSGeo.MapGuide.MaestroAPI.ObjectModels;
+using Maestro.Editors.Generic;
+using OSGeo.MapGuide.ObjectModels.LayerDefinition;
 
 namespace Maestro.Base.Templates
 {
@@ -41,7 +43,24 @@
 
         public override IResource CreateItem(IServerConnection conn)
         {
-            return ObjectFactory.CreateDefaultLayer(conn, OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 0, 0));
+            using (var picker = new ResourcePicker(conn.ResourceService, ResourceTypes.FeatureSource, ResourcePickerMode.OpenResource))
+            {
+                if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+                {
+                    var lyr = ObjectFactory.CreateDefaultLayer(conn, OSGeo.MapGuide.ObjectModels.LayerDefinition.LayerType.Vector, new Version(1, 0, 0));
+                    var vl = (IVectorLayerDefinition)lyr.SubLayer;
+                    vl.ResourceId = picker.ResourceID;
+                    //Stub these for now, validation will ensure this never makes it
+                    //into the session repository until all validation errors pass
+                    vl.FeatureName = string.Empty;
+                    vl.Geometry = string.Empty;
+                    return lyr;
+                }
+                else
+                {
+                    return null;
+                }
+            }
         }
     }
 }

Modified: sandbox/maestro-3.0/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/Maestro.Editors/LayerDefinition/LayerPropertiesSectionCtrl.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -37,7 +37,7 @@
             _vl = _parent.SubLayer as IVectorLayerDefinition;
             Debug.Assert(_vl != null);
 
-            _props = _vl.PropertyMapping;
+            _props = new List<INameStringPair>(_vl.PropertyMapping);
             //Modifying the visibility constitutes a change in the resource
             //_props.ListChanged += OnPropertyListChanged;
             PopulatePropertyList();
@@ -64,7 +64,7 @@
         {
             if (e.PropertyName == "ResourceId") //Feature Source changed
             {
-                _vl.PropertyMapping.Clear();
+                _vl.RemoveAllScaleRanges();
                 PopulatePropertyList();
             }
         }

Modified: sandbox/maestro-3.0/Maestro.Editors/LayerDefinition/Vector/VectorLayerStyleSectionCtrl.cs
===================================================================
--- sandbox/maestro-3.0/Maestro.Editors/LayerDefinition/Vector/VectorLayerStyleSectionCtrl.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/Maestro.Editors/LayerDefinition/Vector/VectorLayerStyleSectionCtrl.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -74,7 +74,7 @@
                 return;
             IVectorScaleRange vsc = scaleRangeList.SelectedItem;
             scaleRangeList.RemoveScaleRange(scaleRangeList.SelectedItem);
-            _vl.VectorScaleRange.Remove(scaleRangeList.SelectedItem);
+            _vl.RemoveVectorScaleRange(scaleRangeList.SelectedItem);
 
             _edsvc.HasChanged();
         }
@@ -92,7 +92,7 @@
             if (_vl == null)
                 return;
 
-            if (_vl.VectorScaleRange == null || _vl.VectorScaleRange.Count == 0)
+            if (!_vl.HasVectorScaleRanges())
                 return;
 
             List<IVectorScaleRange> ranges = new List<IVectorScaleRange>();
@@ -103,10 +103,10 @@
 
             ranges.Sort(new ScaleRangeSorter());
 
-            _vl.VectorScaleRange.Clear();
+            _vl.RemoveAllScaleRanges();
             foreach (IVectorScaleRange sc in ranges)
             {
-                _vl.VectorScaleRange.Add(sc);
+                _vl.AddVectorScaleRange(sc);
             }
 
             //Refresh display
@@ -156,7 +156,7 @@
             if (_vl == null)
                 return;
 
-            _vl.VectorScaleRange.Add(vsc);
+            _vl.AddVectorScaleRange(vsc);
             Control c = scaleRangeList.AddScaleRange(vsc);
             scaleRangeList.ResizeAuto();
             _edsvc.HasChanged();
@@ -179,7 +179,7 @@
         private void EvaluateCommands()
         {
             btnDelete.Enabled = btnDuplicate.Enabled = scaleRangeList.SelectedItem != null;
-            btnSort.Enabled = _vl.VectorScaleRange.Count > 1;
+            btnSort.Enabled = _vl.HasVectorScaleRanges();
         }
     }
 }

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Commands/ExecuteLoadProcedure.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -384,7 +384,7 @@
                                         List<string> geomTypes = new List<string>();
                                         geomTypes.AddRange(obj.ToString().Trim().Split(' '));
 
-                                        var scale = vld.VectorScaleRange[0];
+                                        var scale = vld.GetScaleRangeAt(0);
 
                                         var remove = new List<string>();
                                         if (!geomTypes.Contains(GeometryMetadata.GEOM_TYPE_POINT))
@@ -611,7 +611,7 @@
                                         List<string> geomTypes = new List<string>();
                                         geomTypes.AddRange(obj.ToString().Trim().Split(' '));
 
-                                        var scale = vld.VectorScaleRange[0];
+                                        var scale = vld.GetScaleRangeAt(0);
 
                                         var remove = new List<string>();
                                         if (!geomTypes.Contains(GeometryMetadata.GEOM_TYPE_POINT))

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/GridLayerDefinitionImpl.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/GridLayerDefinitionImpl.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/GridLayerDefinitionImpl.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -447,17 +447,30 @@
             }
         }
 
-        IList<IGridColorRule> IGridColorStyle.ColorRule
+        IEnumerable<IGridColorRule> IGridColorStyle.ColorRule
         {
-            get { return (IList<IGridColorRule>)this.ColorRule; }
+            get 
+            {
+                foreach (var cr in this.ColorRule)
+                {
+                    yield return cr;
+                }
+            }
         }
 
         void IGridColorStyle.AddColorRule(IGridColorRule rule)
         {
-            if (this.ColorRule == null)
-                this.ColorRule = new System.ComponentModel.BindingList<GridColorRuleType>();
+            var cr = rule as GridColorRuleType;
+            if (cr != null)
+                this.ColorRule.Add((GridColorRuleType)cr);
+        }
 
-            this.ColorRule.Add((GridColorRuleType)rule);
+
+        void IGridColorStyle.RemoveColorRule(IGridColorRule rule)
+        {
+            var cr = rule as GridColorRuleType;
+            if (cr != null)
+                this.ColorRule.Remove((GridColorRuleType)cr);
         }
     }
 

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaceExtensions.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaceExtensions.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaceExtensions.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -67,6 +67,22 @@
         }
     }
 
+    public static class VectorLayerExtensions
+    {
+        public static bool HasVectorScaleRanges(this IVectorLayerDefinition vl)
+        {
+            Check.NotNull(vl, "vl");
+            return vl.GetScaleRangeCount() > 0;
+        }
+
+        public static int GetScaleRangeCount(this IVectorLayerDefinition vl)
+        {
+            Check.NotNull(vl, "vl");
+            var list = new List<IVectorScaleRange>(vl.VectorScaleRange);
+            return list.Count;
+        }
+    }
+
     public static class VectorScaleRangeExtensions
     {
         /// <summary>

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -315,20 +315,80 @@
         /// </summary>
         string Filter { get; set; }
 
-        //FIXME: this compiles, but will probably break when run due to lack of co/contravariance support pre-4.0
-
         /// <summary>
         /// Gets the scale ranges for this layer
         /// </summary>
-        IList<IVectorScaleRange> VectorScaleRange { get; }
+        IEnumerable<IVectorScaleRange> VectorScaleRange { get; }
 
-        //FIXME: this compiles, but will probably break when run due to lack of co/contravariance support pre-4.0
+        /// <summary>
+        /// Gets the collection index of this scale range
+        /// </summary>
+        /// <param name="range"></param>
+        /// <returns></returns>
+        int IndexOfScaleRange(IVectorScaleRange range);
 
         /// <summary>
+        /// Removes all scale ranges from this layer
+        /// </summary>
+        void RemoveAllScaleRanges();
+
+        /// <summary>
+        /// Gets the scale range at this specified index
+        /// </summary>
+        /// <param name="index"></param>
+        /// <returns></returns>
+        IVectorScaleRange GetScaleRangeAt(int index);
+
+        /// <summary>
+        /// Adds the specified vector scale range
+        /// </summary>
+        /// <param name="range"></param>
+        void AddVectorScaleRange(IVectorScaleRange range);
+
+        /// <summary>
+        /// Removes the specified vector scale range
+        /// </summary>
+        /// <param name="range"></param>
+        void RemoveVectorScaleRange(IVectorScaleRange range);
+
+        /// <summary>
         /// Gets the property mappings for this layer. This determines which properties
         /// are displayed (and what labels to use) in the property pane and 
         /// </summary>
-        IList<INameStringPair> PropertyMapping { get; }
+        IEnumerable<INameStringPair> PropertyMapping { get; }
+
+        /// <summary>
+        /// Adds the specified property mapping
+        /// </summary>
+        /// <param name="pair"></param>
+        void AddPropertyMapping(INameStringPair pair);
+
+        /// <summary>
+        /// Removes the specified property mapping
+        /// </summary>
+        /// <param name="pair"></param>
+        void RemovePropertyMapping(INameStringPair pair);
+
+        /// <summary>
+        /// Gets the position of the specified pair in the order of property mappings
+        /// </summary>
+        /// <param name="pair"></param>
+        /// <returns></returns>
+        int GetPosition(INameStringPair pair);
+
+        /// <summary>
+        /// Moves the specified pair up the order of property mappings
+        /// </summary>
+        /// <param name="pair"></param>
+        /// <returns></returns>
+        int MoveUp(INameStringPair pair);
+
+        /// <summary>
+        /// Moves the specified pair down the order of property mappings
+        /// </summary>
+        /// <param name="pair"></param>
+        /// <returns></returns>
+        int MoveDown(INameStringPair pair);
     }
 
     /// <summary>
@@ -1120,18 +1180,22 @@
         /// </summary>
         double ConstrastFactor { get; set; }
 
-        //FIXME: this compiles, but will probably break when run due to lack of co/contravariance support pre-4.0
-
         /// <summary>
         /// Gets the color rules for this style
         /// </summary>
-        IList<IGridColorRule> ColorRule { get; }
+        IEnumerable<IGridColorRule> ColorRule { get; }
 
         /// <summary>
         /// Adds a color rule to this style
         /// </summary>
         /// <param name="rule"></param>
         void AddColorRule(IGridColorRule rule);
+
+        /// <summary>
+        /// Removes the specified color rule from this style
+        /// </summary>
+        /// <param name="rule"></param>
+        void RemoveColorRule(IGridColorRule rule);
     }
 
     public interface IGridSurfaceStyle

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -1372,15 +1372,123 @@
         }
 
         [XmlIgnore]
-        IList<IVectorScaleRange> IVectorLayerDefinition.VectorScaleRange
+        IEnumerable<IVectorScaleRange> IVectorLayerDefinition.VectorScaleRange
         {
-            get { return (IList<IVectorScaleRange>)this.VectorScaleRange; }
+            get 
+            {
+                foreach (var vsr in this.VectorScaleRange)
+                {
+                    yield return vsr;
+                }
+            }
         }
 
         [XmlIgnore]
-        IList<INameStringPair> IVectorLayerDefinition.PropertyMapping
+        IEnumerable<INameStringPair> IVectorLayerDefinition.PropertyMapping
         {
-            get { return (IList<INameStringPair>)this.PropertyMapping; }
+            get
+            {
+                foreach (var pair in this.PropertyMapping)
+                {
+                    yield return pair;
+                }
+            }
         }
+
+
+        void IVectorLayerDefinition.AddVectorScaleRange(IVectorScaleRange range)
+        {
+            var r = range as VectorScaleRangeType;
+            if (r != null)
+                this.VectorScaleRange.Add(r);
+        }
+
+        void IVectorLayerDefinition.RemoveVectorScaleRange(IVectorScaleRange range)
+        {
+            var r = range as VectorScaleRangeType;
+            if (r != null)
+                this.VectorScaleRange.Remove(r);
+        }
+
+        void IVectorLayerDefinition.AddPropertyMapping(INameStringPair pair)
+        {
+            var p = pair as NameStringPairType;
+            if (p != null)
+                this.PropertyMapping.Add(p);
+        }
+
+        void IVectorLayerDefinition.RemovePropertyMapping(INameStringPair pair)
+        {
+            var p = pair as NameStringPairType;
+            if (p != null)
+                this.PropertyMapping.Remove(p);
+        }
+
+        int IVectorLayerDefinition.GetPosition(INameStringPair pair)
+        {
+            var p = pair as NameStringPairType;
+            if (p != null)
+                return this.PropertyMapping.IndexOf(p);
+
+            return -1;
+        }
+
+        int IVectorLayerDefinition.MoveUp(INameStringPair pair)
+        {
+            int pos = ((IVectorLayerDefinition)this).GetPosition(pair);
+            if (pos > 0)
+            {
+                int dest = pos - 1;
+                var p = this.PropertyMapping[dest];
+                var p2 = (NameStringPairType)pair;
+
+                //Swap
+                this.PropertyMapping[dest] = p2;
+                this.PropertyMapping[pos] = p;
+
+                return dest;
+            }
+            return -1;
+        }
+
+        int IVectorLayerDefinition.MoveDown(INameStringPair pair)
+        {
+            int pos = ((IVectorLayerDefinition)this).GetPosition(pair);
+            if (pos < this.PropertyMapping.Count - 1)
+            {
+                int dest = pos + 1;
+                var p = this.PropertyMapping[dest];
+                var p2 = (NameStringPairType)pair;
+
+                //Swap
+                this.PropertyMapping[dest] = p2;
+                this.PropertyMapping[pos] = p;
+
+                return dest;
+            }
+            return -1;
+        }
+
+        void IVectorLayerDefinition.RemoveAllScaleRanges()
+        {
+            this.VectorScaleRange.Clear();
+        }
+
+        int IVectorLayerDefinition.IndexOfScaleRange(IVectorScaleRange range)
+        {
+            var r = range as VectorScaleRangeType;
+            if (r != null)
+                return this.VectorScaleRange.IndexOf(r);
+
+            return -1;
+        }
+
+        IVectorScaleRange IVectorLayerDefinition.GetScaleRangeAt(int index)
+        {
+            if (index >= this.VectorScaleRange.Count)
+                return null;
+
+            return this.VectorScaleRange[index];
+        }
     }
 }

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/BaseLayerDefinitionValidator.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/BaseLayerDefinitionValidator.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Resource/BaseLayerDefinitionValidator.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -56,7 +56,7 @@
                 if (string.IsNullOrEmpty(vldef.Geometry))
                     issues.Add(new ValidationIssue(resource, ValidationStatus.Error, Properties.Resources.LDF_MissingGeometryError));
 
-                if (vldef.VectorScaleRange == null || vldef.VectorScaleRange.Count == 0)
+                if (vldef.VectorScaleRange == null || !vldef.HasVectorScaleRanges())
                     issues.Add(new ValidationIssue(resource, ValidationStatus.Error, Properties.Resources.LDF_MissingScaleRangesError));
                 else
                 {

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ServerConnectionBase.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ServerConnectionBase.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/ServerConnectionBase.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -1641,5 +1641,9 @@
         }
 
         public abstract OSGeo.MapGuide.ObjectModels.Common.DataStoreList EnumerateDataStores(string providerName, string partialConnString);
+
+        public abstract string[] GetSchemas(string resourceId);
+
+        public abstract string[] GetClassNames(string resourceId, string schemaName);
     }
 }

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Services/IFeatureService.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Services/IFeatureService.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI/Services/IFeatureService.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -109,5 +109,9 @@
         /// <param name="partialConnString"></param>
         /// <returns></returns>
         OSGeo.MapGuide.ObjectModels.Common.DataStoreList EnumerateDataStores(string providerName, string partialConnString);
+
+        string[] GetSchemas(string resourceId);
+
+        string[] GetClassNames(string resourceId, string schemaName);
     }
 }

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI.Http/HttpServerConnection.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI.Http/HttpServerConnection.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI.Http/HttpServerConnection.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -1831,5 +1831,25 @@
                 return base.MoveResourceWithReferences(oldpath, newpath, callback, progress);
             }
         }
+
+        public override string[] GetSchemas(string resourceId)
+        {
+            var req = m_reqBuilder.GetSchemas(resourceId);
+            using (var s = this.OpenRead(req))
+            {
+                var sc = this.DeserializeObject<OSGeo.MapGuide.ObjectModels.Common.StringCollection>(s);
+                return sc.Item.ToArray();
+            }
+        }
+
+        public override string[] GetClassNames(string resourceId, string schemaName)
+        {
+            var req = m_reqBuilder.GetClassNames(resourceId, schemaName);
+            using (var s = this.OpenRead(req))
+            {
+                var sc = this.DeserializeObject<OSGeo.MapGuide.ObjectModels.Common.StringCollection>(s);
+                return sc.Item.ToArray();
+            }
+        }
     }
 }

Modified: sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI.Http/RequestBuilder.cs
===================================================================
--- sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI.Http/RequestBuilder.cs	2010-10-07 23:58:46 UTC (rev 5258)
+++ sandbox/maestro-3.0/OSGeo.MapGuide.MaestroAPI.Http/RequestBuilder.cs	2010-10-08 05:56:23 UTC (rev 5259)
@@ -1451,5 +1451,40 @@
 
             return m_hosturi + "?" + EncodeParameters(param);
         }
+
+        public string GetSchemas(string resourceId)
+        {
+            NameValueCollection param = new NameValueCollection();
+            param.Add("OPERATION", "GETSCHEMAS");
+            param.Add("VERSION", "1.0.0");
+            param.Add("SESSION", m_sessionID);
+            param.Add("FORMAT", "text/xml");
+            param.Add("CLIENTAGENT", m_userAgent);
+
+            if (m_locale != null)
+                param.Add("LOCALE", m_locale);
+
+            param.Add("RESOURCEID", resourceId);
+
+            return m_hosturi + "?" + EncodeParameters(param);
+        }
+
+        public string GetClassNames(string resourceId, string schemaName)
+        {
+            NameValueCollection param = new NameValueCollection();
+            param.Add("OPERATION", "GETCLASSES");
+            param.Add("VERSION", "1.0.0");
+            param.Add("SESSION", m_sessionID);
+            param.Add("FORMAT", "text/xml");
+            param.Add("CLIENTAGENT", m_userAgent);
+
+            if (m_locale != null)
+                param.Add("LOCALE", m_locale);
+
+            param.Add("RESOURCEID", resourceId);
+            param.Add("SCHEMA", schemaName);
+
+            return m_hosturi + "?" + EncodeParameters(param);
+        }
     }
 }



More information about the mapguide-commits mailing list