[mapguide-commits] r6394 - in trunk/Tools/Maestro: Maestro MaestroAPITests OSGeo.MapGuide.MaestroAPI/ObjectModels OSGeo.MapGuide.MaestroAPI/Properties OSGeo.MapGuide.MaestroAPI/Resource/Validation

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Sat Dec 31 10:48:43 EST 2011


Author: jng
Date: 2011-12-31 07:48:43 -0800 (Sat, 31 Dec 2011)
New Revision: 6394

Modified:
   trunk/Tools/Maestro/Maestro/changelog.txt
   trunk/Tools/Maestro/MaestroAPITests/HttpConnectionTests.cs
   trunk/Tools/Maestro/MaestroAPITests/TestControl.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.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/BaseLayerDefinitionValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseMapDefinitionValidator.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationStatusCode.cs
Log:
#1717: Add extra symbol definition validation rules. Also fix incorrect resource being flagged in map definition validation issues.

Modified: trunk/Tools/Maestro/Maestro/changelog.txt
===================================================================
--- trunk/Tools/Maestro/Maestro/changelog.txt	2011-12-31 13:48:10 UTC (rev 6393)
+++ trunk/Tools/Maestro/Maestro/changelog.txt	2011-12-31 15:48:43 UTC (rev 6394)
@@ -1,6 +1,13 @@
 4.1
 ---
 
+ - Support for v2.4.0 resources (Web Layout, Map Definition, Layer Definition, Watermark Definition, Symbol Definition)
+ - Added extra symbol definition validation rules
+ - Fix: Select font link in Text Symbol Definition dialog does nothing
+ - Fix: Incorrect resource being flagged for Map Definition validation issues
+ - Fix: Size Context not being saved for composite lines in Line Style Editor
+ - Fix: Web Layout editor not persisting "Keep Connection Alive" option.
+ - Fix: Missing Symbol Definition 1.1.0 resource template
  - Fix: Stylization functions not shown in Expression Editor
 
 4.0

Modified: trunk/Tools/Maestro/MaestroAPITests/HttpConnectionTests.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/HttpConnectionTests.cs	2011-12-31 13:48:10 UTC (rev 6393)
+++ trunk/Tools/Maestro/MaestroAPITests/HttpConnectionTests.cs	2011-12-31 15:48:43 UTC (rev 6394)
@@ -152,6 +152,8 @@
             var resDataList = resSvc.EnumerateResourceData(source);
             if (resDataList.ResourceData.Count == 1)
                 dataName = resDataList.ResourceData[0].Name;
+            else
+                resSvc.SetResourceData(source, dataName, ResourceDataType.File, File.OpenRead("TestData/MappingService/UT_HydrographicPolygons.sdf"));
 
             resSvc.SetResourceData(target,
                                    dataName,

Modified: trunk/Tools/Maestro/MaestroAPITests/TestControl.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/TestControl.cs	2011-12-31 13:48:10 UTC (rev 6393)
+++ trunk/Tools/Maestro/MaestroAPITests/TestControl.cs	2011-12-31 15:48:43 UTC (rev 6394)
@@ -45,12 +45,24 @@
 
     public class ConnectionUtil
     {
+        public static string Port { get { return ""; } }
+
         public static IServerConnection CreateTestHttpConnection()
         {
-            return ConnectionProviderRegistry.CreateConnection("Maestro.Http",
-                "Url", "http://" + Environment.MachineName + "/mapguide/mapagent/mapagent.fcgi",
-                "Username", "Administrator",
-                "Password", "admin");
+            if (!string.IsNullOrEmpty(Port))
+            {
+                return ConnectionProviderRegistry.CreateConnection("Maestro.Http",
+                    "Url", "http://" + Environment.MachineName + ":" + Port + "/mapguide/mapagent/mapagent.fcgi",
+                    "Username", "Administrator",
+                    "Password", "admin");
+            }
+            else
+            {
+                return ConnectionProviderRegistry.CreateConnection("Maestro.Http",
+                    "Url", "http://" + Environment.MachineName + "/mapguide/mapagent/mapagent.fcgi",
+                    "Username", "Administrator",
+                    "Password", "admin");
+            }
         }
     }
 }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs	2011-12-31 13:48:10 UTC (rev 6393)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs	2011-12-31 15:48:43 UTC (rev 6394)
@@ -1864,6 +1864,18 @@
         IEnumerable<IParameterOverride> Override { get; }
 
         /// <summary>
+        /// Gets the number of parameter overrides
+        /// </summary>
+        int Count { get; }
+
+        /// <summary>
+        /// Gets the parameter override at the specified index
+        /// </summary>
+        /// <param name="index"></param>
+        /// <returns></returns>
+        IParameterOverride this[int index] { get; }
+
+        /// <summary>
         /// Adds the parameter override.
         /// </summary>
         /// <param name="ov">The parameter override</param>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs	2011-12-31 13:48:10 UTC (rev 6393)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs	2011-12-31 15:48:43 UTC (rev 6394)
@@ -2136,6 +2136,24 @@
             }
         }
 
+        [XmlIgnore]
+        public int Count
+        {
+            get { return this.Override.Count; }
+        }
+
+        [XmlIgnore]
+        public IParameterOverride this[int index]
+        {
+            get
+            {
+                if (index >= this.Override.Count)
+                    throw new ArgumentOutOfRangeException();
+
+                return this.Override[index];
+            }
+        }
+
         public void AddOverride(IParameterOverride ov)
         {
             var o = ov as Override;

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs	2011-12-31 13:48:10 UTC (rev 6393)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs	2011-12-31 15:48:43 UTC (rev 6394)
@@ -612,6 +612,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Referenced Symbol Definition {0} has an irrelevant usage context for this layer because this layer does not have features of type: {1}.
+        /// </summary>
+        internal static string LDF_IrrelevantUsageContext {
+            get {
+                return ResourceManager.GetString("LDF_IrrelevantUsageContext", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Layer is missing core information.
         /// </summary>
         internal static string LDF_LayerNullError {
@@ -711,6 +720,24 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to The Layer Definition contains a Composite Rule pointing to a non-existent Symbol Definition: {0}.
+        /// </summary>
+        internal static string LDF_SymbolDefintionReferenceNotFound {
+            get {
+                return ResourceManager.GetString("LDF_SymbolDefintionReferenceNotFound", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The Layer Definition specifies a parameter override for {0} that does not exist ({1}).
+        /// </summary>
+        internal static string LDF_SymbolParameterOverrideToNonExistentParameter {
+            get {
+                return ResourceManager.GetString("LDF_SymbolParameterOverrideToNonExistentParameter", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to The layer has no type, or the type is unsupported by Maestro.
         /// </summary>
         internal static string LDF_UnsupportedLayerTypeWarning {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx	2011-12-31 13:48:10 UTC (rev 6393)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx	2011-12-31 15:48:43 UTC (rev 6394)
@@ -548,4 +548,13 @@
   <data name="BaseTemplate240_ApplicationDefinition" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\BaseTemplate.ApplicationDefinition1.xml;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
   </data>
+  <data name="LDF_SymbolDefintionReferenceNotFound" xml:space="preserve">
+    <value>The Layer Definition contains a Composite Rule pointing to a non-existent Symbol Definition: {0}</value>
+  </data>
+  <data name="LDF_SymbolParameterOverrideToNonExistentParameter" xml:space="preserve">
+    <value>The Layer Definition specifies a parameter override for {0} that does not exist ({1})</value>
+  </data>
+  <data name="LDF_IrrelevantUsageContext" xml:space="preserve">
+    <value>Referenced Symbol Definition {0} has an irrelevant usage context for this layer because this layer does not have features of type: {1}</value>
+  </data>
 </root>
\ No newline at end of file

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseLayerDefinitionValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseLayerDefinitionValidator.cs	2011-12-31 13:48:10 UTC (rev 6393)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseLayerDefinitionValidator.cs	2011-12-31 15:48:43 UTC (rev 6394)
@@ -26,6 +26,7 @@
 using OSGeo.MapGuide.ObjectModels.Common;
 using OSGeo.MapGuide.ObjectModels.DrawingSource;
 using OSGeo.MapGuide.MaestroAPI.Schema;
+using OSGeo.MapGuide.ObjectModels.SymbolDefinition;
 
 namespace OSGeo.MapGuide.MaestroAPI.Resource.Validation
 {
@@ -75,7 +76,92 @@
 
             if (ldef.SubLayer == null)
                 issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_LayerDefinition_LayerNull, Properties.Resources.LDF_LayerNullError));
-            
+
+            ClassDefinition cls = null;
+            if (vldef != null || gldef != null)
+            {
+                //Load referenced feature source
+                IFeatureSource fs = null;
+
+                try
+                {
+                    fs = (IFeatureSource)context.GetResource(ldef.SubLayer.ResourceId);
+                    issues.AddRange(ResourceValidatorSet.Validate(context, fs, recurse));
+                }
+                catch (Exception)
+                {
+                    issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_LayerDefinition_FeatureSourceLoadError, string.Format(Properties.Resources.LDF_FeatureSourceLoadError)));
+                }
+
+                if (fs != null)
+                {
+                    //Verify specified feature class and geometry check out
+                    try
+                    {
+                        string qualClassName = vldef == null ? gldef.FeatureName : vldef.FeatureName;
+                        string geometry = vldef == null ? gldef.Geometry : vldef.Geometry;
+
+                        bool foundSchema = false;
+                        bool foundGeometry = false;
+
+                        FeatureSourceDescription desc = context.DescribeFeatureSource(ldef.SubLayer.ResourceId);
+                        foreach (FeatureSchema fsc in desc.Schemas)
+                        {
+                            foreach (ClassDefinition scm in fsc.Classes)
+                            {
+                                if (scm.QualifiedName == qualClassName)
+                                {
+                                    foundSchema = true;
+                                    cls = scm;
+                                    foreach (PropertyDefinition col in scm.Properties)
+                                    {
+                                        if (col.Name == geometry)
+                                        {
+                                            foundGeometry = true;
+                                            break;
+                                        }
+                                    }
+
+                                    if (vldef != null && vldef.PropertyMapping != null)
+                                    {
+                                        foreach (INameStringPair s in vldef.PropertyMapping)
+                                        {
+                                            bool found = false;
+                                            foreach (PropertyDefinition col in scm.Properties)
+                                            {
+                                                if (col.Name == s.Name)
+                                                {
+                                                    found = true;
+                                                    break;
+                                                }
+                                            }
+                                            if (!found)
+                                                issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_LayerDefinition_ClassNotFound, string.Format(Properties.Resources.LDF_SchemaMissingError, qualClassName, fs.ResourceID)));
+                                        }
+                                    }
+
+                                    break;
+                                }
+                            }
+                        }
+
+                        if (!foundSchema)
+                            issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_LayerDefinition_ClassNotFound, string.Format(Properties.Resources.LDF_SchemaMissingError, qualClassName, fs.ResourceID)));
+                        else if (!foundGeometry)
+                            issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_LayerDefinition_GeometryNotFound, string.Format(Properties.Resources.LDF_GeometryMissingError, geometry, qualClassName, fs.ResourceID)));
+                    }
+                    catch (Exception)
+                    {
+                        issues.Add(new ValidationIssue(fs, ValidationStatus.Error, ValidationStatusCode.Error_LayerDefinition_Generic, string.Format(Properties.Resources.LDF_SchemaAndColumnReadFailedError)));
+                    }
+
+                    if (recurse)
+                    {
+                        issues.AddRange(ResourceValidatorSet.Validate(context, fs, recurse));
+                    }
+                }
+            }
+
             if (vldef != null)
             {
                 if (string.IsNullOrEmpty(vldef.FeatureName))
@@ -105,6 +191,86 @@
                                     vsr2.MinScale.HasValue ? vsr2.MinScale.Value : 0,
                                     vsr2.MaxScale.HasValue ? vsr2.MaxScale.Value.ToString() : Properties.Resources.Infinity))); 
                             }
+
+                            if (vsr2.CompositeStyleCount > 0)
+                            {
+                                foreach (var cs in vsr2.CompositeStyle)
+                                {
+                                    foreach (var cr in cs.CompositeRule)
+                                    {
+                                        if (cr.CompositeSymbolization != null)
+                                        {
+                                            foreach (var si in cr.CompositeSymbolization.SymbolInstance)
+                                            {
+                                                //verify that symbol references point to valid symbol definitions
+                                                if (si.Reference.Type == SymbolInstanceType.Reference)
+                                                {
+                                                    var symRef = (ISymbolInstanceReferenceLibrary)si.Reference;
+                                                    if (!context.ResourceExists(symRef.ResourceId))
+                                                        issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_LayerDefinition_SymbolDefintionReferenceNotFound, string.Format(
+                                                            Properties.Resources.LDF_SymbolDefintionReferenceNotFound, symRef.ResourceId)));
+
+
+                                                    if (cls != null)
+                                                    {
+                                                        //warn if the symbol definition has usage contexts that are irrelevant against the layer's feature source
+                                                        var prop = cls.FindProperty(vldef.Geometry) as GeometricPropertyDefinition;
+                                                        if (prop != null)
+                                                        {
+                                                            var gtypes = new List<FeatureGeometricType>(prop.GetIndividualGeometricTypes());
+                                                            var sym = context.GetResource(symRef.ResourceId) as ISimpleSymbolDefinition;
+                                                            if (sym != null)
+                                                            {
+                                                                if (sym.LineUsage != null && !gtypes.Contains(FeatureGeometricType.Curve))
+                                                                {
+                                                                    issues.Add(new ValidationIssue(resource, ValidationStatus.Information, ValidationStatusCode.Info_LayerDefinition_IrrelevantUsageContext, string.Format(
+                                                                        Properties.Resources.LDF_IrrelevantUsageContext, symRef.ResourceId, FeatureGeometricType.Curve.ToString())));
+                                                                }
+
+                                                                if (sym.AreaUsage != null && !gtypes.Contains(FeatureGeometricType.Surface))
+                                                                {
+                                                                    issues.Add(new ValidationIssue(resource, ValidationStatus.Information, ValidationStatusCode.Info_LayerDefinition_IrrelevantUsageContext, string.Format(
+                                                                        Properties.Resources.LDF_IrrelevantUsageContext, symRef.ResourceId, FeatureGeometricType.Surface.ToString())));
+                                                                }
+
+                                                                if (sym.PointUsage != null && !gtypes.Contains(FeatureGeometricType.Point))
+                                                                {
+                                                                    issues.Add(new ValidationIssue(resource, ValidationStatus.Information, ValidationStatusCode.Info_LayerDefinition_IrrelevantUsageContext, string.Format(
+                                                                        Properties.Resources.LDF_IrrelevantUsageContext, symRef.ResourceId, FeatureGeometricType.Point.ToString())));
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+
+                                                //verify that the overrides specified are for symbol parameters that actually exist
+                                                if (si.ParameterOverrides.Count > 0)
+                                                {
+                                                    if (si.Reference.Type == SymbolInstanceType.Reference)
+                                                    {
+                                                        var symRef = (ISymbolInstanceReferenceLibrary)si.Reference;
+                                                        var sym = (ISymbolDefinitionBase)context.GetResource(symRef.ResourceId);
+                                                        var paramList = new Dictionary<string, IParameter>();
+                                                        foreach (var p in sym.GetParameters())
+                                                        {
+                                                            paramList[p.Identifier] = p;
+                                                        }
+
+                                                        foreach (var ov in si.ParameterOverrides.Override)
+                                                        {
+                                                            if (!paramList.ContainsKey(ov.ParameterIdentifier))
+                                                            {
+                                                                issues.Add(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_LayerDefinition_SymbolParameterOverrideToNonExistentParameter, string.Format(
+                                                                    Properties.Resources.LDF_SymbolParameterOverrideToNonExistentParameter, symRef.ResourceId, ov.ParameterIdentifier)));
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
                         }
 
                         ranges.Add(new KeyValuePair<double, double>(
@@ -208,90 +374,6 @@
                 issues.Add(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_LayerDefinition_UnsupportedLayerType, Properties.Resources.LDF_UnsupportedLayerTypeWarning));
             }
 
-            if (vldef != null || gldef != null)
-            {
-                //Load referenced feature source
-                IFeatureSource fs = null;
-
-                try
-                {
-                    fs = (IFeatureSource)context.GetResource(ldef.SubLayer.ResourceId);
-                    issues.AddRange(ResourceValidatorSet.Validate(context, fs, recurse));
-                }
-                catch (Exception)
-                {
-                    issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_LayerDefinition_FeatureSourceLoadError, string.Format(Properties.Resources.LDF_FeatureSourceLoadError)));
-                }
-
-                if (fs != null)
-                {
-                    //Verify specified feature class and geometry check out
-                    try
-                    {
-                        string qualClassName = vldef == null ? gldef.FeatureName : vldef.FeatureName;
-                        string geometry = vldef == null ? gldef.Geometry : vldef.Geometry;
-
-                        bool foundSchema = false;
-                        bool foundGeometry = false;
-
-                        FeatureSourceDescription desc = context.DescribeFeatureSource(ldef.SubLayer.ResourceId);
-                        foreach (FeatureSchema fsc in desc.Schemas)
-                        {
-                            foreach (ClassDefinition scm in fsc.Classes)
-                            {
-                                if (scm.QualifiedName == qualClassName)
-                                {
-                                    foundSchema = true;
-
-                                    foreach (PropertyDefinition col in scm.Properties)
-                                    {
-                                        if (col.Name == geometry)
-                                        {
-                                            foundGeometry = true;
-                                            break;
-                                        }
-                                    }
-
-                                    if (vldef != null && vldef.PropertyMapping != null)
-                                    {
-                                        foreach (INameStringPair s in vldef.PropertyMapping)
-                                        {
-                                            bool found = false;
-                                            foreach (PropertyDefinition col in scm.Properties)
-                                            {
-                                                if (col.Name == s.Name)
-                                                {
-                                                    found = true;
-                                                    break;
-                                                }
-                                            }
-                                            if (!found)
-                                                issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_LayerDefinition_ClassNotFound, string.Format(Properties.Resources.LDF_SchemaMissingError, qualClassName, fs.ResourceID)));
-                                        }
-                                    }
-
-                                    break;
-                                }
-                            }
-                        }
-
-                        if (!foundSchema)
-                            issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_LayerDefinition_ClassNotFound, string.Format(Properties.Resources.LDF_SchemaMissingError, qualClassName, fs.ResourceID)));
-                        else if (!foundGeometry)
-                            issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_LayerDefinition_GeometryNotFound, string.Format(Properties.Resources.LDF_GeometryMissingError, geometry, qualClassName, fs.ResourceID)));
-                    }
-                    catch (Exception)
-                    {
-                        issues.Add(new ValidationIssue(fs, ValidationStatus.Error, ValidationStatusCode.Error_LayerDefinition_Generic, string.Format(Properties.Resources.LDF_SchemaAndColumnReadFailedError)));
-                    }
-
-                    if (recurse)
-                    {
-                        issues.AddRange(ResourceValidatorSet.Validate(context, fs, recurse));
-                    }
-                }
-            }
-
             context.MarkValidated(resource.ResourceID);
 
             return issues.ToArray();

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseMapDefinitionValidator.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseMapDefinitionValidator.cs	2011-12-31 13:48:10 UTC (rev 6393)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/BaseMapDefinitionValidator.cs	2011-12-31 15:48:43 UTC (rev 6394)
@@ -168,11 +168,11 @@
                                 FdoSpatialContextList scList = context.GetSpatialContexts(fs.ResourceID);
 
                                 if (scList.SpatialContext == null || scList.SpatialContext.Count == 0)
-                                    issues.Add(new ValidationIssue(fs, ValidationStatus.Warning, ValidationStatusCode.Warning_MapDefinition_MissingSpatialContext, string.Format(Properties.Resources.MDF_MissingSpatialContextWarning, fs.ResourceID)));
+                                    issues.Add(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_MapDefinition_MissingSpatialContext, string.Format(Properties.Resources.MDF_MissingSpatialContextWarning, fs.ResourceID)));
                                 else
                                 {
                                     if (scList.SpatialContext.Count > 1)
-                                        issues.Add(new ValidationIssue(fs, ValidationStatus.Information, ValidationStatusCode.Info_MapDefinition_MultipleSpatialContexts, string.Format(Properties.Resources.MDF_MultipleSpatialContextsInformation, fs.ResourceID)));
+                                        issues.Add(new ValidationIssue(resource, ValidationStatus.Information, ValidationStatusCode.Info_MapDefinition_MultipleSpatialContexts, string.Format(Properties.Resources.MDF_MultipleSpatialContextsInformation, fs.ResourceID)));
 
 
                                     bool skipGeomCheck = false;
@@ -181,9 +181,9 @@
                                     if (scList.SpatialContext[0].CoordinateSystemWkt != mdef.CoordinateSystem)
                                     {
                                         if (layer.SubLayer.LayerType == LayerType.Raster && mdef.CurrentConnection.SiteVersion <= SiteVersions.GetVersion(OSGeo.MapGuide.MaestroAPI.KnownSiteVersions.MapGuideOS2_0_2))
-                                            issues.Add(new ValidationIssue(fs, ValidationStatus.Error, ValidationStatusCode.Error_MapDefinition_RasterReprojection, string.Format(Properties.Resources.MDF_RasterReprojectionError, fs.ResourceID)));
+                                            issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_MapDefinition_RasterReprojection, string.Format(Properties.Resources.MDF_RasterReprojectionError, fs.ResourceID)));
                                         else
-                                            issues.Add(new ValidationIssue(fs, ValidationStatus.Warning, ValidationStatusCode.Warning_MapDefinition_LayerReprojection, string.Format(Properties.Resources.MDF_DataReprojectionWarning, fs.ResourceID)));
+                                            issues.Add(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_MapDefinition_LayerReprojection, string.Format(Properties.Resources.MDF_DataReprojectionWarning, fs.ResourceID)));
 
                                         skipGeomCheck = true;
                                     }
@@ -192,20 +192,20 @@
                                     {
                                         var env = fs.GetSpatialExtent(vl.FeatureName, vl.Geometry);
                                         if (!env.Intersects(mapEnv))
-                                            issues.Add(new ValidationIssue(fs, ValidationStatus.Warning, ValidationStatusCode.Warning_MapDefinition_DataOutsideMapBounds, string.Format(Properties.Resources.MDF_DataOutsideMapWarning, fs.ResourceID)));
+                                            issues.Add(new ValidationIssue(resource, ValidationStatus.Warning, ValidationStatusCode.Warning_MapDefinition_DataOutsideMapBounds, string.Format(Properties.Resources.MDF_DataOutsideMapWarning, fs.ResourceID)));
                                     }
                                 }
                             }
                             catch (Exception ex)
                             {
                                 string msg = NestedExceptionMessageProcessor.GetFullMessage(ex);
-                                issues.Add(new ValidationIssue(layer, ValidationStatus.Error, ValidationStatusCode.Error_MapDefinition_ResourceRead, string.Format(Properties.Resources.MDF_ResourceReadError, fs.ResourceID, msg)));
+                                issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_MapDefinition_ResourceRead, string.Format(Properties.Resources.MDF_ResourceReadError, fs.ResourceID, msg)));
                             }
                         }
                         catch (Exception ex)
                         {
                             string msg = NestedExceptionMessageProcessor.GetFullMessage(ex);
-                            issues.Add(new ValidationIssue(mdef, ValidationStatus.Error, ValidationStatusCode.Error_MapDefinition_FeatureSourceRead, string.Format(Properties.Resources.MDF_FeatureSourceReadError, l.ResourceId, msg)));
+                            issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_MapDefinition_FeatureSourceRead, string.Format(Properties.Resources.MDF_FeatureSourceReadError, l.ResourceId, msg)));
                         }
                     }
 
@@ -213,7 +213,7 @@
                 catch (Exception ex)
                 {
                     string msg = NestedExceptionMessageProcessor.GetFullMessage(ex);
-                    issues.Add(new ValidationIssue(mdef, ValidationStatus.Error, ValidationStatusCode.Error_MapDefinition_LayerRead, string.Format(Properties.Resources.MDF_LayerReadError, l.ResourceId, msg)));
+                    issues.Add(new ValidationIssue(resource, ValidationStatus.Error, ValidationStatusCode.Error_MapDefinition_LayerRead, string.Format(Properties.Resources.MDF_LayerReadError, l.ResourceId, msg)));
                 }
             }
 

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationStatusCode.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationStatusCode.cs	2011-12-31 13:48:10 UTC (rev 6393)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationStatusCode.cs	2011-12-31 15:48:43 UTC (rev 6394)
@@ -64,6 +64,11 @@
         /// One or more scale ranges overlap. Can affect presentation of data. 
         /// </summary>
         Info_LayerDefinition_ScaleRangeOverlap = 1201,
+
+        /// <summary>
+        /// A referenced symbol definition contains irrelevant usage contexts for this particular layer
+        /// </summary>
+        Info_LayerDefinition_IrrelevantUsageContext,
         #endregion
 
         #region warnings
@@ -182,6 +187,11 @@
         Warning_LayerDefinition_CompositeStyleDefinedAlongsideBasicStyle,
 
         /// <summary>
+        /// A parameter override has been specified for a parameter that does not exist
+        /// </summary>
+        Warning_LayerDefinition_SymbolParameterOverrideToNonExistentParameter,
+
+        /// <summary>
         /// The web layout's initial view lies outside the referenced map definition's extents. Usually means you will see nothing when the AJAX viewer loads.
         /// </summary>
         Warning_WebLayout_InitialViewOutsideMapExtents = 3601,
@@ -336,6 +346,11 @@
         Error_LayerDefinition_LayerNull,
 
         /// <summary>
+        /// The Layer Definition contains a composite rule pointing to a non-existent symbol definition
+        /// </summary>
+        Error_LayerDefinition_SymbolDefintionReferenceNotFound,
+
+        /// <summary>
         /// Unclassified validation error
         /// </summary>
         Error_WebLayout_Generic = 5501,



More information about the mapguide-commits mailing list