[mapguide-commits] r5974 - in trunk/Tools/Maestro: Maestro.Editors/Common Maestro.Editors/FeatureSource/Providers Maestro.Editors/FeatureSource/Providers/Sdf Maestro.Editors/FeatureSource/Providers/Shp OSGeo.MapGuide.MaestroAPI/Schema OSGeo.MapGuide.MaestroAPI/SchemaOverrides

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed Jul 6 08:32:56 EDT 2011


Author: jng
Date: 2011-07-06 05:32:56 -0700 (Wed, 06 Jul 2011)
New Revision: 5974

Modified:
   trunk/Tools/Maestro/Maestro.Editors/Common/UnmanagedFileBrowser.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/FileBasedCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Sdf/SdfFileCtrl.cs
   trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Shp/ShpFileCtrl.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/ClassDefinition.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/DataPropertyDefinition.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/GeometricPropertyDefinition.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/RasterPropertyDefinition.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcConfigurationDocument.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcTableItem.cs
Log:
#1689: Add support for filtering aliased items by file extension. This is used by the SDF and SHP feature source editors to filter out non SDF/SHP file extensions.

Also fix more defects in serialization of class and property definitions with names requiring encoding


Modified: trunk/Tools/Maestro/Maestro.Editors/Common/UnmanagedFileBrowser.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/Common/UnmanagedFileBrowser.cs	2011-07-06 10:43:58 UTC (rev 5973)
+++ trunk/Tools/Maestro/Maestro.Editors/Common/UnmanagedFileBrowser.cs	2011-07-06 12:32:56 UTC (rev 5974)
@@ -27,6 +27,7 @@
 using OSGeo.MapGuide.MaestroAPI.Services;
 using Aga.Controls.Tree;
 using OSGeo.MapGuide.ObjectModels.Common;
+using System.IO;
 
 namespace Maestro.Editors.Common
 {
@@ -157,6 +158,7 @@
         private UnmanagedFileBrowser()
         {
             InitializeComponent();
+            _fileExtensions = new List<string>();
         }
 
         private IResourceService _resSvc;
@@ -172,7 +174,26 @@
             trvFolders.Model = new FolderTreeModel(_resSvc);
         }
 
+        private List<string> _fileExtensions;
+
         /// <summary>
+        /// Gets or sets the file extensions to filter the files by. If empty, no filtering
+        /// will be done
+        /// </summary>
+        public string[] Extensions
+        {
+            get { return _fileExtensions.ToArray(); }
+            set
+            {
+                _fileExtensions.Clear();
+                for (int i = 0; i < value.Length; i++)
+                {
+                    _fileExtensions.Add(value[i].ToLower());
+                }
+            }
+        }
+
+        /// <summary>
         /// Gets the selected item.
         /// </summary>
         /// <value>The selected item.</value>
@@ -230,15 +251,26 @@
             lstResources.Items.Clear();
             foreach (var item in list.Items)
             {
-                if (typeof(UnmanagedDataListUnmanagedDataFile).IsAssignableFrom(item.GetType()))
+                var f = item as UnmanagedDataListUnmanagedDataFile;
+                if (f != null)
                 {
-                    var file = (UnmanagedDataListUnmanagedDataFile)item;
-                    var li = new ListViewItem();
-                    li.Name = file.UnmanagedDataId;
-                    li.Text = file.FileName;
-                    li.ImageIndex = GetImageIndex(li.Text);
+                    var ext = Path.GetExtension(f.FileName);
+                    if (string.IsNullOrEmpty(ext))
+                        continue;
 
-                    lstResources.Items.Add(li);
+                    if (_fileExtensions.Count > 0 && !_fileExtensions.Contains(ext.ToLower().Substring(1)))
+                        continue;
+
+                    if (typeof(UnmanagedDataListUnmanagedDataFile).IsAssignableFrom(item.GetType()))
+                    {
+                        var file = (UnmanagedDataListUnmanagedDataFile)item;
+                        var li = new ListViewItem();
+                        li.Name = file.UnmanagedDataId;
+                        li.Text = file.FileName;
+                        li.ImageIndex = GetImageIndex(li.Text);
+
+                        lstResources.Items.Add(li);
+                    }
                 }
             }
         }

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/FileBasedCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/FileBasedCtrl.cs	2011-07-06 10:43:58 UTC (rev 5973)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/FileBasedCtrl.cs	2011-07-06 12:32:56 UTC (rev 5974)
@@ -68,10 +68,13 @@
             
         }
 
+        protected virtual string[] GetUnmanagedFileExtensions() { return new string[0]; }
+
         private void btnBrowseAlias_Click(object sender, EventArgs e)
         {
             using (var picker = new UnmanagedFileBrowser(_service.ResourceService))
             {
+                picker.Extensions = GetUnmanagedFileExtensions();
                 picker.SelectFoldersOnly = false;
                 if (picker.ShowDialog() == DialogResult.OK)
                 {

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Sdf/SdfFileCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Sdf/SdfFileCtrl.cs	2011-07-06 10:43:58 UTC (rev 5973)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Sdf/SdfFileCtrl.cs	2011-07-06 12:32:56 UTC (rev 5974)
@@ -76,6 +76,11 @@
             }
         }
 
+        protected override string[] GetUnmanagedFileExtensions()
+        {
+            return new string[] { "sdf" };
+        }
+
         protected override void OnResourceChanged()
         {
             base.OnResourceChanged();

Modified: trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Shp/ShpFileCtrl.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Shp/ShpFileCtrl.cs	2011-07-06 10:43:58 UTC (rev 5973)
+++ trunk/Tools/Maestro/Maestro.Editors/FeatureSource/Providers/Shp/ShpFileCtrl.cs	2011-07-06 12:32:56 UTC (rev 5974)
@@ -76,6 +76,11 @@
             }
         }
 
+        protected override string[] GetUnmanagedFileExtensions()
+        {
+            return new string[] { "shp" };
+        }
+
         protected override string FileFdoProperty
         {
             get

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/ClassDefinition.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/ClassDefinition.cs	2011-07-06 10:43:58 UTC (rev 5973)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/ClassDefinition.cs	2011-07-06 12:32:56 UTC (rev 5974)
@@ -222,10 +222,11 @@
         {
             XmlElement id = null;
 
+            var en = Utility.EncodeFDOName(this.Name);
             if (_identity.Count > 0)
             {
                 id = doc.CreateElement("xs", "element", XmlNamespaces.XS);
-                var en = Utility.EncodeFDOName(this.Name);
+                
                 id.SetAttribute("name", en); //TODO: May need encoding
                 id.SetAttribute("type", this.Parent.Name + ":" + en + "Type");
                 id.SetAttribute("abstract", this.IsAbstract.ToString().ToLower());
@@ -251,7 +252,7 @@
 
             //Now write class body
             var ctype = doc.CreateElement("xs", "complexType", XmlNamespaces.XS);
-            ctype.SetAttribute("name", this.Name + "Type"); //TODO: This may have been decoded. Should it be re-encoded?
+            ctype.SetAttribute("name", en + "Type"); //TODO: This may have been decoded. Should it be re-encoded?
             ctype.SetAttribute("abstract", this.IsAbstract.ToString().ToLower());
             if (!string.IsNullOrEmpty(this.DefaultGeometryPropertyName))
             {
@@ -292,6 +293,7 @@
 
         public void ReadXml(XmlNode node, XmlNamespaceManager mgr)
         {
+            var en = Utility.EncodeFDOName(this.Name);
  	        var abn = node.Attributes["abstract"];
             if (abn != null)
                 this.IsAbstract = Convert.ToBoolean(abn.Value);
@@ -316,7 +318,7 @@
 
             //Process identity properties
             var parent = node.ParentNode;
-            var key = parent.SelectSingleNode("xs:element[@name=\"" + this.Name + "\"]/xs:key", mgr);
+            var key = parent.SelectSingleNode("xs:element[@name=\"" + en + "\"]/xs:key", mgr);
             if (key != null)
             {
                 var fields = key.SelectNodes("xs:field", mgr);

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/DataPropertyDefinition.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/DataPropertyDefinition.cs	2011-07-06 10:43:58 UTC (rev 5973)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/DataPropertyDefinition.cs	2011-07-06 12:32:56 UTC (rev 5974)
@@ -164,8 +164,10 @@
 
         public override void WriteXml(System.Xml.XmlDocument doc, System.Xml.XmlNode currentNode)
         {
+            var en = Utility.EncodeFDOName(this.Name);
+
             var prop = doc.CreateElement("xs", "element", XmlNamespaces.XS);
-            prop.SetAttribute("name", this.Name); //TODO: This may have been decoded. Should it be re-encoded?
+            prop.SetAttribute("name", en);
             prop.SetAttribute("minOccurs", this.IsNullable ? "0" : "1");
             if (this.IsReadOnly)
                 prop.SetAttribute("readOnly", XmlNamespaces.FDO, this.IsReadOnly.ToString().ToLower());

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/GeometricPropertyDefinition.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/GeometricPropertyDefinition.cs	2011-07-06 10:43:58 UTC (rev 5973)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/GeometricPropertyDefinition.cs	2011-07-06 12:32:56 UTC (rev 5974)
@@ -211,8 +211,10 @@
 
         public override void WriteXml(System.Xml.XmlDocument doc, System.Xml.XmlNode currentNode)
         {
+            var en = Utility.EncodeFDOName(this.Name);
+
             var geom = doc.CreateElement("xs", "element", XmlNamespaces.XS);
-            geom.SetAttribute("name", this.Name); //TODO: This may have been decoded. Should it be re-encoded?
+            geom.SetAttribute("name", en); //TODO: This may have been decoded. Should it be re-encoded?
             geom.SetAttribute("type", "gml:AbstractGeometryType");
             geom.SetAttribute("hasMeasure", XmlNamespaces.FDO, this.HasMeasure.ToString().ToLower());
             geom.SetAttribute("hasElevation", XmlNamespaces.FDO, this.HasElevation.ToString().ToLower());

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/RasterPropertyDefinition.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/RasterPropertyDefinition.cs	2011-07-06 10:43:58 UTC (rev 5973)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schema/RasterPropertyDefinition.cs	2011-07-06 12:32:56 UTC (rev 5974)
@@ -70,8 +70,10 @@
 
         public override void WriteXml(System.Xml.XmlDocument doc, System.Xml.XmlNode currentNode)
         {
+            var en = Utility.EncodeFDOName(this.Name);
+
             var geom = doc.CreateElement("xs", "element", XmlNamespaces.XS);
-            geom.SetAttribute("name", this.Name); //TODO: This may have been decoded. Should it be re-encoded?
+            geom.SetAttribute("name", en); //TODO: This may have been decoded. Should it be re-encoded?
             geom.SetAttribute("type", "fdo:RasterPropertyType");
             geom.SetAttribute("defaultImageXSize", XmlNamespaces.FDO, this.DefaultImageXSize.ToString());
             geom.SetAttribute("defaultImageYSize", XmlNamespaces.FDO, this.DefaultImageYSize.ToString());

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcConfigurationDocument.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcConfigurationDocument.cs	2011-07-06 10:43:58 UTC (rev 5973)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcConfigurationDocument.cs	2011-07-06 12:32:56 UTC (rev 5974)
@@ -70,24 +70,22 @@
         {
             foreach (var fs in _schemas)
             {
+                var map = doc.CreateElement("SchemaMapping");
+                //The version is required for data compatiblity with FDO. I don't think
+                //the actual value matters. So use a safe version of FDO
+                map.SetAttribute("provider", "OSGeo.ODBC.3.2");
+                map.SetAttribute("xmlns:rdb", "http://fdordbms.osgeo.org/schemas");
+                map.SetAttribute("xmlns", "http://fdoodbc.osgeo.org/schemas");
+                map.SetAttribute("name", fs.Name);
                 var items = GetMappingsForSchema(fs.Name);
                 if (items.Count > 0)
                 {
-                    var map = doc.CreateElement("SchemaMapping");
-                    //The version is required for data compatiblity with FDO. I don't think
-                    //the actual value matters. So use a safe version of FDO
-                    map.SetAttribute("provider", "OSGeo.ODBC.3.2"); 
-                    map.SetAttribute("xmlns:rdb", "http://fdordbms.osgeo.org/schemas");
-                    map.SetAttribute("xmlns", "http://fdoodbc.osgeo.org/schemas");
-                    map.SetAttribute("name", fs.Name);
-
                     foreach (var item in items)
                     {
                         item.WriteXml(doc, map);
                     }
-
-                    currentNode.AppendChild(map);
                 }
+                currentNode.AppendChild(map);
             }
         }
 

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcTableItem.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcTableItem.cs	2011-07-06 10:43:58 UTC (rev 5973)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/SchemaOverrides/OdbcTableItem.cs	2011-07-06 12:32:56 UTC (rev 5974)
@@ -67,7 +67,7 @@
             if (cls != null)
             {
                 var ctype = doc.CreateElement("complexType");
-                ctype.SetAttribute("name", this.ClassName + "Type");
+                ctype.SetAttribute("name", Utility.EncodeFDOName(this.ClassName) + "Type");
                 {
                     var table = doc.CreateElement("Table");
                     table.SetAttribute("name", this.ClassName);
@@ -83,7 +83,7 @@
                             }
 
                             var el = doc.CreateElement("element");
-                            el.SetAttribute("name", prop.Name);
+                            el.SetAttribute("name", Utility.EncodeFDOName(prop.Name));
 
                             var col = doc.CreateElement("Column");
                             col.SetAttribute("name", prop.Name);



More information about the mapguide-commits mailing list