[mapguide-commits] r6933 - in trunk/Tools/Maestro: Maestro OSGeo.MapGuide.MaestroAPI/ObjectModels OSGeo.MapGuide.MaestroAPI/Properties OSGeo.MapGuide.MaestroAPI/Resource/Validation UserDoc/source

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Thu Aug 2 08:56:13 PDT 2012


Author: jng
Date: 2012-08-02 08:56:12 -0700 (Thu, 02 Aug 2012)
New Revision: 6933

Modified:
   trunk/Tools/Maestro/Maestro/changelog.txt
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSource.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSourceInterfaces.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidationContext.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationStatusCode.cs
   trunk/Tools/Maestro/UserDoc/source/differences.rst
   trunk/Tools/Maestro/UserDoc/source/installation.rst
   trunk/Tools/Maestro/UserDoc/source/mapguide_terminology.rst
Log:
This submission includes the following changes:
  - Add new validation rules for Feature Joins
  - Small user documentation update
  - changelog.txt update

Modified: trunk/Tools/Maestro/Maestro/changelog.txt
===================================================================
--- trunk/Tools/Maestro/Maestro/changelog.txt	2012-08-02 13:48:04 UTC (rev 6932)
+++ trunk/Tools/Maestro/Maestro/changelog.txt	2012-08-02 15:56:12 UTC (rev 6933)
@@ -1,4 +1,17 @@
-5.0 Beta 3
+- New Validation rules for Fusion and Feature Join performance
+- Include full stack trace for any general unclassified validation errors triggered by a NullReferenceException
+- Fusion editor fixes
+   - OSM support
+   - Incorrect serialization of widget XML
+   - Flyout Menu support
+   - Improperly enabled/disabled
+   - Missing label in new fusion templates
+- Fusion editor improvements
+   - Can view widget info in the Generic Widget XML editor
+- Fix: Theming using first rule as template now preserves transparency
+- Fix: Restore missing checkbox for toggling Tiled Layer Group visibility in a Map Definition
+
+5.0 Beta 3
 ----------
  - mg-desktop binary update (20 July 2012 release)
  - Added support for new validations rules regarding Feature Source credentials

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSource.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSource.cs	2012-08-02 13:48:04 UTC (rev 6932)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSource.cs	2012-08-02 15:56:12 UTC (rev 6933)
@@ -452,6 +452,12 @@
             }
         }
 
+        [XmlIgnore]
+        int IAttributeRelation.RelatePropertyCount
+        {
+            get { return this.RelateProperty.Count; }
+        }
+
         void IAttributeRelation.AddRelateProperty(IRelateProperty prop)
         {
             var rel = prop as RelatePropertyType;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSourceInterfaces.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSourceInterfaces.cs	2012-08-02 13:48:04 UTC (rev 6932)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/FeatureSourceInterfaces.cs	2012-08-02 15:56:12 UTC (rev 6933)
@@ -304,6 +304,11 @@
         IEnumerable<IRelateProperty> RelateProperty { get; }
 
         /// <summary>
+        /// Gets the number of properties being joined on
+        /// </summary>
+        int RelatePropertyCount { get; }
+
+        /// <summary>
         /// Creates the property join.
         /// </summary>
         /// <param name="primaryProperty">The primary property.</param>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs	2012-08-02 13:48:04 UTC (rev 6932)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs	2012-08-02 15:56:12 UTC (rev 6933)
@@ -558,6 +558,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to The Extended Feature Class ({0}) is using an empty Join Prefix. A join prefix is used to prevent collisions between property names which may exist in both the primary and joined feature classes..
+        /// </summary>
+        internal static string FS_EmptyJoinPrefix {
+            get {
+                return ResourceManager.GetString("FS_EmptyJoinPrefix", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Empty spatial context extent detected.
         /// </summary>
         internal static string FS_EmptySpatialContextWarning {
@@ -594,6 +603,24 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to The Extended Feature Class ({0}) does not satisfy the required parameters for optimal Feature Join performance (both sides sortable, on a single property). Join Performance may not be optimal. Left-side sortable: {1}, Right-side sortable: {2}.
+        /// </summary>
+        internal static string FS_PotentialBadJoinPerformance {
+            get {
+                return ResourceManager.GetString("FS_PotentialBadJoinPerformance", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The Extended Feature Class ({0}) does not satisfy the required parameters for optimal Feature Join performance (both sides sortable, on a single property). Join Performance may not be optimal..
+        /// </summary>
+        internal static string FS_PotentialBadJoinPerformance2 {
+            get {
+                return ResourceManager.GetString("FS_PotentialBadJoinPerformance2", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to No primary key defined for class: {0}, features will not be selectable and feature joins on this class may produce unexpected results.
         /// </summary>
         internal static string FS_PrimaryKeyMissingInformation {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx	2012-08-02 13:48:04 UTC (rev 6932)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx	2012-08-02 15:56:12 UTC (rev 6933)
@@ -2784,4 +2784,13 @@
   <data name="ADF_ReferencedWidgetInMenuHasNoLabel" xml:space="preserve">
     <value>A widget by the id of {0} has no label. This may cause display problems in the menu/container ({1}) if there is no icon specified</value>
   </data>
+  <data name="FS_EmptyJoinPrefix" xml:space="preserve">
+    <value>The Extended Feature Class ({0}) is using an empty Join Prefix. A join prefix is used to prevent collisions between property names which may exist in both the primary and joined feature classes.</value>
+  </data>
+  <data name="FS_PotentialBadJoinPerformance" xml:space="preserve">
+    <value>The Extended Feature Class ({0}) does not satisfy the required parameters for optimal Feature Join performance (both sides sortable, on a single property). Join Performance may not be optimal. Left-side sortable: {1}, Right-side sortable: {2}</value>
+  </data>
+  <data name="FS_PotentialBadJoinPerformance2" xml:space="preserve">
+    <value>The Extended Feature Class ({0}) does not satisfy the required parameters for optimal Feature Join performance (both sides sortable, on a single property). Join Performance may not be optimal.</value>
+  </data>
 </root>
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs	2012-08-02 13:48:04 UTC (rev 6932)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs	2012-08-02 15:56:12 UTC (rev 6933)
@@ -59,6 +59,65 @@
             IFeatureSource feature = (IFeatureSource)resource;
             IFeatureService featSvc = feature.CurrentConnection.FeatureService;
 
+            //Feature Join Optimization check
+            foreach (var ext in feature.Extension)
+            {
+                foreach (var rel in ext.AttributeRelate)
+                {
+                    if (string.IsNullOrEmpty(rel.Name))
+                    {
+                        issues.Add(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_FeatureSource_EmptyJoinPrefix, string.Format(Properties.Resources.FS_EmptyJoinPrefix, ext.Name)));
+                    }
+
+                    if (rel.RelatePropertyCount > 0)
+                    {
+                        if (rel.RelatePropertyCount == 1)
+                        {
+                            var srcFs = feature;
+                            var dstFs = (IFeatureSource)context.GetResource(rel.ResourceId);
+
+                            var leftProvider = srcFs.Provider.ToUpper();
+                            var rightProvider = dstFs.Provider.ToUpper();
+
+                            //FDO Join optimization check
+                            if (leftProvider.Contains("OSGEO.SQLITE") && rightProvider.Contains("OSGEO.SQLITE") && srcFs.ResourceID == rel.ResourceId)
+                                continue;
+
+                            //FDO Join optimization check
+                            if (leftProvider.Contains("OSGEO.SQLSERVERSPATIAL") && rightProvider.Contains("OSGEO.SQLSERVERSPATIAL") && srcFs.ResourceID == rel.ResourceId)
+                                continue;
+
+                            //TODO: Fix the capabilities response. Because it's not telling us enough information!
+                            //Anyways, these are the providers known to provide sorted query results.
+                            bool bLeftSortable = leftProvider.Contains("OSGEO.SDF") ||
+                                                 leftProvider.Contains("OSGEO.SHP") ||
+                                                 leftProvider.Contains("OSGEO.SQLITE") ||
+                                                 leftProvider.Contains("OSGEO.ODBC") ||
+                                                 leftProvider.Contains("OSGEO.SQLSERVERSPATIAL") ||
+                                                 leftProvider.Contains("OSGEO.MYSQL") ||
+                                                 leftProvider.Contains("OSGEO.POSTGRESQL");
+
+                            bool bRightSortable = leftProvider.Contains("OSGEO.SDF") ||
+                                                 leftProvider.Contains("OSGEO.SHP") ||
+                                                 leftProvider.Contains("OSGEO.SQLITE") ||
+                                                 leftProvider.Contains("OSGEO.ODBC") ||
+                                                 leftProvider.Contains("OSGEO.SQLSERVERSPATIAL") ||
+                                                 leftProvider.Contains("OSGEO.MYSQL") ||
+                                                 leftProvider.Contains("OSGEO.POSTGRESQL");
+
+                            if (!bLeftSortable || !bRightSortable)
+                            {
+                                issues.Add(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_FeatureSource_Potential_Bad_Join_Performance, string.Format(Properties.Resources.FS_PotentialBadJoinPerformance, ext.Name, bLeftSortable, bRightSortable)));
+                            }
+                        }
+                        else 
+                        {
+                            issues.Add(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_FeatureSource_Potential_Bad_Join_Performance, string.Format(Properties.Resources.FS_PotentialBadJoinPerformance2, ext.Name)));
+                        }
+                    }
+                }
+            }
+
             //Plaintext credential check
             string providerNameUpper = feature.Provider.ToUpper();
             string fsXml = feature.Serialize().ToUpper();

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidationContext.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidationContext.cs	2012-08-02 13:48:04 UTC (rev 6932)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ResourceValidationContext.cs	2012-08-02 15:56:12 UTC (rev 6933)
@@ -24,6 +24,8 @@
 using OSGeo.MapGuide.MaestroAPI.Services;
 using OSGeo.MapGuide.ObjectModels.Common;
 using OSGeo.MapGuide.MaestroAPI.Schema;
+using OSGeo.MapGuide.ObjectModels.Capabilities;
+using OSGeo.MapGuide.ObjectModels.FeatureSource;
 
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation
 {
@@ -37,6 +39,7 @@
         private Dictionary<string, IResource> _resources;
         private Dictionary<string, FeatureSourceDescription> _schemas;
         private Dictionary<string, FdoSpatialContextList> _spatialContexts;
+        private Dictionary<string, FdoProviderCapabilities> _caps;
 
         private IResourceService _resSvc;
         private IFeatureService _featSvc;
@@ -54,6 +57,7 @@
             _resources = new Dictionary<string, IResource>();
             _schemas = new Dictionary<string, FeatureSourceDescription>();
             _spatialContexts = new Dictionary<string, FdoSpatialContextList>();
+            _caps = new Dictionary<string, FdoProviderCapabilities>();
         }
 
         /// <summary>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationStatusCode.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationStatusCode.cs	2012-08-02 13:48:04 UTC (rev 6932)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationStatusCode.cs	2012-08-02 15:56:12 UTC (rev 6933)
@@ -125,6 +125,17 @@
         Warning_FeatureSource_Plaintext_Credentials,
 
         /// <summary>
+        /// An Extended Feature Class does not specify a join prefix. This will cause collisions if the primary and secondary classes have one or more identical
+        /// property names
+        /// </summary>
+        Warning_FeatureSource_EmptyJoinPrefix,
+
+        /// <summary>
+        /// An Extended Feature Class does not specify 
+        /// </summary>
+        Warning_FeatureSource_Potential_Bad_Join_Performance,
+
+        /// <summary>
         /// DWG Load Procedures not supported. This is a limitation of Maestro
         /// </summary>
         Warning_LoadProcedure_DwgNotSupported = 3201,

Modified: trunk/Tools/Maestro/UserDoc/source/differences.rst
===================================================================
--- trunk/Tools/Maestro/UserDoc/source/differences.rst	2012-08-02 13:48:04 UTC (rev 6932)
+++ trunk/Tools/Maestro/UserDoc/source/differences.rst	2012-08-02 15:56:12 UTC (rev 6933)
@@ -14,12 +14,14 @@
 
 Fortunately, MapGuide Maestro is a capable alternative to MapGuide Studio. Besides the base shared features of loading/creating/publishing data, both tools have their own unique set of features, which this section will cover.
 
-Features unique to MapGuide Studio
-----------------------------------
+Features unique to MapGuide Studio / Autodesk Infrastructure Studio
+-------------------------------------------------------------------
 
  * MapGuide Studio supports loading of DWG files and raster images. Due to licensing and/or the need to be multi-platform, Maestro does not (and probably will never) support these features.
  * MapGuide Studio supports creating and editing Symbol Libraries. Maestro cannot edit Symbol Libraries, however it has read support for these resources and Maestro supports symbol selection from Symbol Libraries.
  * MapGuide Studio supports the "Convert to SDF" and generalization options of Load Procedures.
+ * Autodesk Infrastructure Studio (2013 onwards) supports publishing DWG files directly with no conversion.
+ * Autodesk Infrastructure Studio supports creating connections to Industry Model (Topobase) data sources.
 
 Features unique to MapGuide Maestro
 -----------------------------------
@@ -27,11 +29,17 @@
  * Maestro is multi-platform. It runs on Windows, Linux and Mac OSX.
  * Maestro can connect to many different versions of MapGuide Open Source and MapGuide Enterprise (as far back as MGOS 1.2 / MGE 2008)
  * Maestro supports validating resources ensuring data/resource integrity and trapping common errors and pitfalls that would normally be silent under MapGuide Studio.
- * Maestro has a small installation footprint (under 20mb) compared to MapGuide Studio.
+ * Maestro has a small installation footprint compared to MapGuide Studio.
  * Maestro allows you to edit any resource in its XML form. The XML editor is used as a fallback measure if Maestro encounters unsupported or unrecognised resources.
  * Maestro supports all known resource versions. Maestro will *never* silently upgrade your resources to the latest version.
  * Maestro supports custom resource templates
  * Maestro supports the creation and loading of MapGuide Packages (MGP) without needing to use the Site Administrator web application.
  * Maestro has a more active development cycle.
  * Maestro offers plenty of tools and shortcuts that greatly improves authoring productivity.
+ * Maestro supports authoring data from an mg-desktop application
+ * Maestro includes other various tools and utilities that fully exploit the services provided by MapGuide
+   * A Feature Source previewing utility
+   * A Runtime Map state inspection tool
+   * A tile pre-generation tool (MgCooker)
+   * A "Live" Map Definition editor that supports editing workflows similar to MapGuide Author 6.5
  * and much more!
\ No newline at end of file

Modified: trunk/Tools/Maestro/UserDoc/source/installation.rst
===================================================================
--- trunk/Tools/Maestro/UserDoc/source/installation.rst	2012-08-02 13:48:04 UTC (rev 6932)
+++ trunk/Tools/Maestro/UserDoc/source/installation.rst	2012-08-02 15:56:12 UTC (rev 6933)
@@ -13,7 +13,7 @@
 
 .. note::
 
- MapGuide Maestro requires .net Framework 2.0 or higher installed. For Windows Vista or newer versions of Windows, this is already installed.
+ MapGuide Maestro requires .net Framework 4.0 or higher installed first.
  
 .. note::
 
@@ -26,7 +26,7 @@
 
 The installation is simply unzipping the file::
 
- unzip "MapGuideMaestro-4.0.0-Release.zip"
+ unzip "MapGuideMaestro-5.0.0-Release.zip"
 
 Then run the application::
 
@@ -37,14 +37,14 @@
 
     For distributions like Ubuntu, the Mono package is split into several components. You need to ensure that the winforms component is installed. The following command installs it for Ubuntu::
     
-     sudo apt-get install mono-runtime libmono-winforms2.0-cil
+     sudo apt-get install mono-runtime libmono-system-windows-forms4.0-cil libmono-system-core4.0-cil libmono-system-numerics4.0-cil libmono-system-web4.0-cil
     
     For other distros, please consult your system documentation. 
     
 .. note::
 
     **Please note that Mono support for WinForms is not 100% stable.** Even though WinForms is feature complete, some features do not work flawlessly. This means that there are occasional drawing problems. Flipping a tab page back and forth usually solves the problem. Some buttons are missing, because Mono renders them outside the visible area. There are also some issues with certain icons.
-    For best results, use the most current release of Mono (currently 2.10.2) where possible. The minimum usable release is Mono 2.0 (this was the release where WinForms was 100% API complete) 
+    For best results, use the most current release of Mono (currently 2.10.2) where possible. The minimum usable release is Mono 2.8
     
 .. note::
 

Modified: trunk/Tools/Maestro/UserDoc/source/mapguide_terminology.rst
===================================================================
--- trunk/Tools/Maestro/UserDoc/source/mapguide_terminology.rst	2012-08-02 13:48:04 UTC (rev 6932)
+++ trunk/Tools/Maestro/UserDoc/source/mapguide_terminology.rst	2012-08-02 15:56:12 UTC (rev 6933)
@@ -44,6 +44,8 @@
  * 1.1.0 - MapGuide Open Source 1.2 / MapGuide Enterprise 2008
  * 1.2.0 - MapGuide Open Source 2.0 / MapGuide Enterprise 2009
  * 1.3.0 - MapGuide Open Source 2.1 / MapGuide Enterprise 2010
+ * 2.3.0 - Autodesk Infrastructure Map Server 2012
+ * 2.4.0 - MapGuide Open Source 2.4 / Autodesk Infrastructure Map Server 2013
 
 Layer Definitions describe how data from a Feature Source is to be styled. (see below: Displaying Data)
 
@@ -58,6 +60,7 @@
 
  * 1.0.0 - MapGuide Open Source 1.0 / MapGuide Enterprise 2007
  * 2.3.0 - MapGuide Open Source 2.3 / MapGuide Enterprise 2012
+ * 2.4.0 - MapGuide Open Source 2.4 / Autodesk Infrastructure Map Server 2013
 
 Map Definitions contains one or more Layer Definitions grouped together and sorted by drawing order.
 
@@ -70,6 +73,7 @@
 
  * 1.0.0 - MapGuide Open Source 1.0 / MapGuide Enterprise 2007
  * 1.1.0 - MapGuide Open Source 2.2 / MapGuide Enterprise 2011
+ * 2.4.0 - MapGuide Open Source 2.4 / Autodesk Infrastructure Map Server 2013
 
 Describes the user interface for the AJAX viewer (see: Understanding MapGuide Applications - Web Layouts)
 
@@ -130,11 +134,10 @@
 
  * 1.0.0 - MapGuide Open Source 1.2 / MapGuide Enterprise 2008
  * 1.1.0 - MapGuide Open Source 2.0 / MapGuide Enterprise 2009
+ * 2.4.0 - MapGuide Open Source 2.4 / Autodesk Infrastructure Map Server 2013
 
 Describes a cartographic symbol, which has lots of display and customisation parameters. Used by Layer Definitions.
 
-There is no specialized editor support for Symbol Definitions. Opening Symbol Definitions will default to the generic XML editor.
-
 Watermark Definitions
 ^^^^^^^^^^^^^^^^^^^^^
 
@@ -144,6 +147,4 @@
 
  * 2.3.0 - MapGuide Open Source 2.3 / MapGuide Enterprise 2012
 
-Describes a watermark that is rendered as part of the map when viewing it. Used by Map Definitions.
-
-There is no specialized editor support for Watermark Definitions. Opening Watermark Definitions will default to the generic XML editor.
\ No newline at end of file
+Describes a watermark that is rendered as part of the map when viewing it. Used by Map Definitions.
\ No newline at end of file



More information about the mapguide-commits mailing list