[mapguide-commits] r6892 - in trunk/Tools/Maestro: Maestro.Base/UI OSGeo.MapGuide.MaestroAPI/Properties OSGeo.MapGuide.MaestroAPI/Resource/Validation

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed Jul 11 07:39:58 PDT 2012


Author: jng
Date: 2012-07-11 07:39:57 -0700 (Wed, 11 Jul 2012)
New Revision: 6892

Modified:
   trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.designer.cs
   trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.resx
   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/ValidationStatusCode.cs
Log:
#2070: Add new validation rules relating to Feature Sources with secured credentials. Also tweak the validation results dialog and results output to file, by including the status code

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.cs	2012-07-11 13:48:29 UTC (rev 6891)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.cs	2012-07-11 14:39:57 UTC (rev 6892)
@@ -105,6 +105,7 @@
                             break;
                     }
                     lvi.SubItems.Add(issue.Message);
+                    lvi.SubItems.Add(issue.StatusCode.ToString());
                     listView1.Items.Add(lvi);
                 }
             }
@@ -135,7 +136,7 @@
                                 sw.WriteLine(new string('*', 80));
                                 sw.WriteLine(string.Format(Properties.Resources.ValidationProgressMessage, p.Key));
                                 foreach (ValidationIssue i in p.Value)
-                                    sw.WriteLine(string.Format(Properties.Resources.ValidationResultFormat, i.Status, i.Resource, i.Message));
+                                    sw.WriteLine(string.Format(Properties.Resources.ValidationResultFormat, i.Status, i.StatusCode, i.Message));
 
                                 sw.WriteLine();
                             }

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.designer.cs	2012-07-11 13:48:29 UTC (rev 6891)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.designer.cs	2012-07-11 14:39:57 UTC (rev 6892)
@@ -31,6 +31,9 @@
             this.components = new System.ComponentModel.Container();
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ValidationResultsDialog));
             this.panel1 = new System.Windows.Forms.Panel();
+            this.chkNotices = new System.Windows.Forms.CheckBox();
+            this.chkWarnings = new System.Windows.Forms.CheckBox();
+            this.chkErrors = new System.Windows.Forms.CheckBox();
             this.SaveReportBtn = new System.Windows.Forms.Button();
             this.CancelBtn = new System.Windows.Forms.Button();
             this.listView1 = new System.Windows.Forms.ListView();
@@ -38,9 +41,7 @@
             this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
             this.imageList1 = new System.Windows.Forms.ImageList(this.components);
             this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
-            this.chkErrors = new System.Windows.Forms.CheckBox();
-            this.chkWarnings = new System.Windows.Forms.CheckBox();
-            this.chkNotices = new System.Windows.Forms.CheckBox();
+            this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
             this.panel1.SuspendLayout();
             this.SuspendLayout();
             // 
@@ -54,6 +55,33 @@
             resources.ApplyResources(this.panel1, "panel1");
             this.panel1.Name = "panel1";
             // 
+            // chkNotices
+            // 
+            resources.ApplyResources(this.chkNotices, "chkNotices");
+            this.chkNotices.Checked = true;
+            this.chkNotices.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.chkNotices.Name = "chkNotices";
+            this.chkNotices.UseVisualStyleBackColor = true;
+            this.chkNotices.CheckedChanged += new System.EventHandler(this.OnResultFilterCheckedChanged);
+            // 
+            // chkWarnings
+            // 
+            resources.ApplyResources(this.chkWarnings, "chkWarnings");
+            this.chkWarnings.Checked = true;
+            this.chkWarnings.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.chkWarnings.Name = "chkWarnings";
+            this.chkWarnings.UseVisualStyleBackColor = true;
+            this.chkWarnings.CheckedChanged += new System.EventHandler(this.OnResultFilterCheckedChanged);
+            // 
+            // chkErrors
+            // 
+            resources.ApplyResources(this.chkErrors, "chkErrors");
+            this.chkErrors.Checked = true;
+            this.chkErrors.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.chkErrors.Name = "chkErrors";
+            this.chkErrors.UseVisualStyleBackColor = true;
+            this.chkErrors.CheckedChanged += new System.EventHandler(this.OnResultFilterCheckedChanged);
+            // 
             // SaveReportBtn
             // 
             resources.ApplyResources(this.SaveReportBtn, "SaveReportBtn");
@@ -73,7 +101,8 @@
             // 
             this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
             this.columnHeader1,
-            this.columnHeader2});
+            this.columnHeader2,
+            this.columnHeader3});
             resources.ApplyResources(this.listView1, "listView1");
             this.listView1.GridLines = true;
             this.listView1.Name = "listView1";
@@ -102,33 +131,10 @@
             this.saveFileDialog.DefaultExt = "txt";
             resources.ApplyResources(this.saveFileDialog, "saveFileDialog");
             // 
-            // chkErrors
+            // columnHeader3
             // 
-            resources.ApplyResources(this.chkErrors, "chkErrors");
-            this.chkErrors.Checked = true;
-            this.chkErrors.CheckState = System.Windows.Forms.CheckState.Checked;
-            this.chkErrors.Name = "chkErrors";
-            this.chkErrors.UseVisualStyleBackColor = true;
-            this.chkErrors.CheckedChanged += new System.EventHandler(this.OnResultFilterCheckedChanged);
+            resources.ApplyResources(this.columnHeader3, "columnHeader3");
             // 
-            // chkWarnings
-            // 
-            resources.ApplyResources(this.chkWarnings, "chkWarnings");
-            this.chkWarnings.Checked = true;
-            this.chkWarnings.CheckState = System.Windows.Forms.CheckState.Checked;
-            this.chkWarnings.Name = "chkWarnings";
-            this.chkWarnings.UseVisualStyleBackColor = true;
-            this.chkWarnings.CheckedChanged += new System.EventHandler(this.OnResultFilterCheckedChanged);
-            // 
-            // chkNotices
-            // 
-            resources.ApplyResources(this.chkNotices, "chkNotices");
-            this.chkNotices.Checked = true;
-            this.chkNotices.CheckState = System.Windows.Forms.CheckState.Checked;
-            this.chkNotices.Name = "chkNotices";
-            this.chkNotices.UseVisualStyleBackColor = true;
-            this.chkNotices.CheckedChanged += new System.EventHandler(this.OnResultFilterCheckedChanged);
-            // 
             // ValidationResultsDialog
             // 
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@@ -157,5 +163,6 @@
         private System.Windows.Forms.CheckBox chkNotices;
         private System.Windows.Forms.CheckBox chkWarnings;
         private System.Windows.Forms.CheckBox chkErrors;
+        private System.Windows.Forms.ColumnHeader columnHeader3;
     }
 }
\ No newline at end of file

Modified: trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.resx	2012-07-11 13:48:29 UTC (rev 6891)
+++ trunk/Tools/Maestro/Maestro.Base/UI/ValidationResultsDialog.resx	2012-07-11 14:39:57 UTC (rev 6892)
@@ -294,12 +294,24 @@
   <data name="columnHeader1.Width" type="System.Int32, mscorlib">
     <value>240</value>
   </data>
+  <data name="columnHeader2.DisplayIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
   <data name="columnHeader2.Text" xml:space="preserve">
     <value>Message</value>
   </data>
   <data name="columnHeader2.Width" type="System.Int32, mscorlib">
     <value>324</value>
   </data>
+  <data name="columnHeader3.DisplayIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="columnHeader3.Text" xml:space="preserve">
+    <value>Code</value>
+  </data>
+  <data name="columnHeader3.Width" type="System.Int32, mscorlib">
+    <value>200</value>
+  </data>
   <data name="listView1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
     <value>Fill</value>
   </data>
@@ -316,70 +328,70 @@
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
-        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC8
-        DgAAAk1TRnQBSQFMAgEBAwEAASQBAAEkAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC0
+        DgAAAk1TRnQBSQFMAgEBAwEAASwBAAEsAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
         AwABEAMAAQEBAAEgBgABEC4AAwwBEAMVAR0kAAMQARUDEQEXAxEBFwMRARcDEQEXAxEBFwMRARcDEQEX
-        AxEBFwMRARcDEQEXAxUBHRwAAwkBDAMWAR8DFgEfAxYBHwMWAR8DFgEfZAADEgEYAXoBNQEkAfcBxAFE
-        ASsB/wHNAUgBLgH/Ac4BSAEuAf8BygFHAS0B/wGkATgBIwH/A0gBhhQAAVcCUAHNAQABuwHrAf8BAAG9
+        AxEBFwMRARcDEQEXAxUBHRwAAwkBDAMWAR8DFgEfAxYBHwMWAR8DFgEfZAADEgEYAXcBNgEoAfcBxAFD
+        ASoB/wHNAUcBLQH/Ac4BRwEtAf8BygFGASwB/wGkATcBIgH/A0gBhhQAAVgCVAHNAQABuwHrAf8BAAG9
         AewB/wEAAcEB7gH/AQABxAHwAf8BAAHFAfAB/wEAAcUB8AH/AQABxQHwAf8BAAHFAfAB/wEAAcUB8AH/
-        AQABwwHvAf8BAAG/Ae0B/wEAAbsB6wH/AQMBlwG+Af8UAAFUAlEBqwEnATkBtgH/ASkBPAHAAf8BKgE+
-        AcYB/wEqAT4BxwH/ASkBPQHDAf8BKAE7AbsB/wEgAScBgQH/XAABSgJJAYoBxgFFASwB/wHXAUsBMAH/
-        AeMBTwEzAf8B6QFRATQB/wHqAVEBNAH/AeYBUAEzAf8B3QFNATEB/wHPAUgBLgH/AX4BKwElAfwQAAEF
-        AYIBowH/AQABvAHsAf8BAAHFAfAB/wEAAcsB8wH/AQABzgH1Af8BAAHQAfYB/wEAAdAB9gH/AQAB0AH2
-        Af8BAAHQAfYB/wEAAc8B9gH/AQABzQH0Af8BAAHIAfIB/wEAAcAB7gH/AQABuwHrAf8DEgEYDAABVAJR
-        AasBKQE9AcEB/wEsAUEB0AH/AS4BRAHZAf8BLwFGAd4B/wEvAUYB3wH/AS8BRQHcAf8BLQFDAdUB/wEq
-        AT8ByAH/ASEBKQGEAf9UAAM7AWMBygFGAS0B/wHfAU4BMgH/Ae8BUwE2Af8B+wHxAe8B/wH9AvkB/wHh
-        AWQBTQH/AfwBWAE5Af8B9QFVATcB/wHnAVABNAH/AdMBSgEvAf8BfgErASUB/AwAAz4BawEAAb8B7QH/
-        AQAByQHyAf8BAAHQAfYB/wEAAdQB+QH/AQAB1AH3Af8BhQHcAesB/wGBAdsB6gH/AQAB0AHzAf8BAAHW
-        AfoB/wEAAdIB+AH/AQABzQH0Af8BAAHDAe8B/wEGAYABnQH/DAABVAJRAasBKQE9AcMB/wEuAUMB1gH/
-        ATEBSAHkAf8BMgFKAewB/wEzAUsB7wH/ATMBTAHwAf8BMwFLAe4B/wExAUkB5gH/AS8BRgHdAf8BKwFA
-        AcwB/wEhASkBhAH/UAABtwE/ASgB/wHdAU0BMQH/AfIBVAE2Af8B/gFbAT0J/wHjAYkBdgH/AegBmwGN
-        Av8BXwFBAf8B+QFXATgB/wHnAVABNAH/Ac8BSAEuAf8DSAGGDAABDwGOAa4B/wE6AdYB9QH/AUAB3QH5
-        Af8BNgHgAfsB/wEbAc0B6Qn/ASkBygHjAf8BAAHZAfsB/wEAAdQB+QH/AQABzQH1Af8BAAHDAe8B/wMv
-        AUkIAAFQAk4BnwEoATwBvQH/AS0BQwHVAf8BMQFJAeYB/wGqAbMB6wH/AZwBpgHpAf8BNgFPAfoB/wE2
-        AU8B+wH/AVYBaAHgAf8B5QHoAfgB/wEyAUkB6AH/AS8BRgHdAf8BKgE/AcgB/wEgAScBgQH/SAABRwJG
-        AYEB0QFJAS8B/wHrAVEBNQH/Af4BWQE7Av8BZQFIAf8B7AGxAaUF/wHzAcwBxAH/AeEBbwFYAf8B/AFn
-        AUsC/wFfAUEB/wH1AVUBNwH/Ad0BTQExAf8BpAE4ASMB/wwAAT0CPAFoAUgB1gH1Af8BTwHeAfkB/wFV
-        AeQB+wH/AVwB6AH9Af8BcQHZAekB/wGBAd4B6wH/AQgB2wH7Af8BAAHYAfsB/wEAAdMB+AH/AQABygHz
-        Af8BBgGBAZ4B/wwAASEBKQGDAf8BKwE/AcoB/wEwAUcB4AH/AYgBlAHiCf8BnAGnAewB/wFXAWoB5An/
-        Ad4B4QH3Af8BMQFJAegB/wEtAUMB1QH/ASgBOwG7Af8DFgEfRAABgAEnASEB+wHaAUwBMQH/AfQBVAE2
-        Av8BYwFHAv8BcgFXAf8B7AFtAVQJ/wH4AXMBWAL/AXQBWQL/AWwBUQH/AfwBWAE5Af8B5gFQATMB/wHK
-        AUcBLQH/EAABLQGWAbAB/wFdAd4B+AH/AWQB5QH7Af8BawHpAf0J/wGBAegB+QH/AVUB5AH7Af8BAAHP
-        AfYB/wEAAcUB8AH/Ay4BRwwAASIBKwGJAf8BNQFKAdQB/wFDAVkB6QH/AU8BZAH1Af8B1wHbAfcR/wH3
-        AfgB/QH/ATMBTAHwAf8BMwFLAe4B/wEvAUUB3AH/ASkBPQHDAf8DFgEfRAABngE1ASIB/wHfAU4BMgH/
-        AfcBZAFIAv8BdgFdAf8B+AGAAWQB/wHsAXkBYgH/AfwB8wHxBf8B5gGLAXgC/wGBAWcC/wF6AWIB/wH+
-        AW8BVQH/AeoBUQE0Af8BzgFIAS4B/wMVAR0MAAM8AWYBbAHeAfcB/wFzAeUB+gH/AXoB6gH8Cf8BjwHq
-        AfkB/wGWAe0B/AH/AVoB3QH3Af8BBgGBAZ4B/xAAAS4BNgGPAf8BSQFbAdsB/wFSAWYB7QH/AVsBcAH4
-        Af8BYwF2AfwB/wHfAeIB+Qn/AfwB/QH+Af8BhQGUAfkB/wFwAYMB/AH/ATMBTAHwAf8BLwFGAd8B/wEq
-        AT4BxwH/AxYBH0QAAZcBMwEgAf8B3gFOATIB/wH4AYABZAL/AYUBbgH/Af4BjQF2Af8B9QHYAdIB/wHn
-        AZsBjQX/AfkB5wHkAv8BjgF3Av8BiQFyAf8B/gGBAWcB/wHtAXMBXAH/Ac0BSAEuAf8DDAEQEAABPQGa
-        AbEB/wGDAeYB+QH/AYoB6wH8Cf8BngHsAfkB/wGkAe4B+wH/AaoB7AH6Af8DLQFGEAABMwE6AZAB/wFT
-        AWUB3AH/AV0BcAHtAf8BZgF5AfgB/wGGAZMB6hH/AckBzwH0Af8BmQGmAfwB/wGgAasB9wH/AVUBaAHk
-        Af8BKgE+AcYB/wMWAR9EAAFhAUwBSQHVAdwBZQFOAf8B9QGNAXkC/wGTAYEC/wGbAYgB/wH+AZ4BigH/
-        Ae0BsQGmAf8B/AH2AfQB/wHvAbwBsgL/AZ0BigL/AZcBhAH/AfsBjwF6Af8B7AGKAXYB/wHEAUQBKwH/
-        FAADOwFlAZIB5gH5Af8BmQHsAfsJ/wGsAe4B+QH/AbIB7wH7Af8BQQGOAaIB/xQAATgBPgGPAf8BXQFt
-        AdoB/wFoAXkB6wH/AYkBlQHmCf8B+gH7Af4B/wHkAecB+gn/AdMB1wH1Af8BrAG1AfcB/wGxAbkB8QH/
-        AWABbgHPAf8DFgEfRAADHwEtAdQBaAFTAf8B8QGeAY4B/wH8AaIBkQL/AacBlwL/AasBmwL/Aa0BnQH/
-        Ae8BtgGrAf8B/gH9AfwB/wHxAaUBlwH/Af4BpAGTAf8B9gGfAY8B/wHpAZsBjAH/AXoBNQEkAfcYAAFN
-        AZ0BsgH/AacB7QH7Cf8BuQHvAfkB/wG+AfAB+wH/Ay0BRRQAAS8BMgF3Af8BaAF2AdYB/wFzAYMB5wH/
-        AXsBigHpAf8D/gH/AvsB/gH/AZUBogH5Af8BnQGpAf0B/wHpAesB+gX/AbYBvQHwAf8BtwG/AfUB/wG8
-        AcMB8AH/AcEBxgHqAf8DCQEMSAABgQEzAR8B+QHsAa4BogH/AfUBsQGkAf8B/AG0AaYC/wG2AakC/wG4
-        AasB/wH3Ad0B2QX/AfUB1QHPAf8B+QGyAaUB/wHwAbABowH/Ad4BmAGKAf8DEgEYGAADOwFkAbQB7QH6
-        Cf8BxQHwAfoB/wFGAY8BogH/GAADCAELAVYBXgGqAf8BgQGLAeEB/wGIAZYB7QH/AZABnAHtAf8BmQGk
-        AfQB/wGhAa0B+wH/AagBswH7Af8BrwG5AfoB/wG5AcAB8QH/AbwBwwH3Af8BwQHIAfMB/wHHAcwB7gH/
-        AVQCUQGrTwABAQG+AXYBaAH/AfABwQG3Af8B9gHCAbkB/wH6AcQBugH/AfwBxAG6Af8B+wHEAboB/wHy
-        AcYBvQH/AfYBwgG5Af8B8wHCAbgB/wHsAb4BtQH/AUoCSQGKIAABWgGfAbIB/wHGAfEB+wH/AcsB8gH8
-        Af8B0AHzAfwB/wMsAUQcAAMIAQsBZQFsAbAB/wGTAZ4B5gH/AZwBpwHuAf8BpQGvAfMB/wGsAbYB9gH/
-        AbMBvAH3Af8BugHCAfcB/wHAAccB9QH/AcYBzAHzAf8BywHQAfAB/wFUAlEBq1cAAQEBiQFBATwB+QHy
-        AdAByQH/AfQB0QHKAf8B9gHSAcoB/wH2AdIBygH/AfUB0QHKAf8B8wHQAcoB/wHUAZ4BkwH/AzsBYyQA
-        AzsBZAHRAfIB+wH/AdUB9AH8Af8BTAGQAaMB/yQAAwgBCwFzAXgBswH/AacBrwHnAf8BrwG3Ae0B/wG2
-        Ab4B8AH/Ab0BxAHyAf8BxAHKAfIB/wHKAc8B8QH/Ac8B0wHwAf8BVAJRAatgAAMfAS0BYQFMAUkB1QGp
-        AWoBXwH/AbQBegFvAf8BiQFGATIB+wFHAkYBgTAAAVUBTQFRAdwBTgGRAaQB/wMWAR4oAAMIAQsBRwFI
-        AYEB/wFqAWwBnwH/AW0BcAGiAf8BcQFzAaQB/wF0AXUBpAH/AXIBcwGgAf8BUAJOAZ//AFEAAUIBTQE+
-        BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcAA/8BAAH+AX8BwAEDAfgBHwIAAfABDwGAAQEB8AEP
-        AgAB4AEHAYABAAHgAQcCAAHAAQMBgAEBAcABAwIAAcABAQHAAQEBgAEBAgABgAEBAcABAwGAAwABgAEB
-        AeABAwGAAwABgAEAAeABBwGAAwABgAEAAfABBwGAAwABgAEBAfABDwGAAwABgAEBAfgBDwGAAwABwAEB
-        AfgBHwGAAQECAAHAAQMB/AEfAcABAwIAAeABBwH8AT8B4AEHAgAB+AEfAf4BPwHwAQ8CAAb/AgAL
+        AQABwwHvAf8BAAG/Ae0B/wEAAbsB6wH/AQIBlwG+Af8UAAFUAlIBqwEmATgBtgH/ASgBOwHAAf8BKQE9
+        AcYB/wEpAT0BxwH/ASgBPAHDAf8BJwE6AbsB/wEfASYBgQH/XAADSgGKAcYBRAErAf8B1wFKAS8B/wHj
+        AU4BMgH/AekBUAEzAf8B6gFQATMB/wHmAU8BMgH/Ad0BTAEwAf8BzwFHAS0B/wF9ASsBJgH8EAABBAGC
+        AaMB/wEAAbwB7AH/AQABxQHwAf8BAAHLAfMB/wEAAc4B9QH/AQAB0AH2Af8BAAHQAfYB/wEAAdAB9gH/
+        AQAB0AH2Af8BAAHPAfYB/wEAAc0B9AH/AQAByAHyAf8BAAHAAe4B/wEAAbsB6wH/AxIBGAwAAVQCUgGr
+        ASgBPAHBAf8BKwFAAdAB/wEtAUMB2QH/AS4BRQHeAf8BLgFFAd8B/wEuAUQB3AH/ASwBQgHVAf8BKQE+
+        AcgB/wEgASgBhAH/VAADOwFjAcoBRQEsAf8B3wFNATEB/wHvAVIBNQH/AfsB8QHvAf8B/QL5Af8B4QFj
+        AUwB/wH8AVcBOAH/AfUBVAE2Af8B5wFPATMB/wHTAUkBLgH/AX0BKwEmAfwMAAM+AWsBAAG/Ae0B/wEA
+        AckB8gH/AQAB0AH2Af8BAAHUAfkB/wEAAdQB9wH/AYUB3AHrAf8BgQHbAeoB/wEAAdAB8wH/AQAB1gH6
+        Af8BAAHSAfgB/wEAAc0B9AH/AQABwwHvAf8BBQGAAZ0B/wwAAVQCUgGrASgBPAHDAf8BLQFCAdYB/wEw
+        AUcB5AH/ATEBSQHsAf8BMgFKAe8B/wEyAUsB8AH/ATIBSgHuAf8BMAFIAeYB/wEuAUUB3QH/ASoBPwHM
+        Af8BIAEoAYQB/1AAAbcBPgEnAf8B3QFMATAB/wHyAVMBNQH/Af4BWgE8Cf8B4wGJAXUB/wHoAZsBjQL/
+        AV4BQAH/AfkBVgE3Af8B5wFPATMB/wHPAUcBLQH/A0gBhgwAAQ4BjgGuAf8BOQHWAfUB/wE/Ad0B+QH/
+        ATUB4AH7Af8BGgHNAekJ/wEoAcoB4wH/AQAB2QH7Af8BAAHUAfkB/wEAAc0B9QH/AQABwwHvAf8DLwFJ
+        CAADUAGfAScBOwG9Af8BLAFCAdUB/wEwAUgB5gH/AaoBswHrAf8BnAGmAekB/wE1AU4B+gH/ATUBTgH7
+        Af8BVQFnAeAB/wHlAegB+AH/ATEBSAHoAf8BLgFFAd0B/wEpAT4ByAH/AR8BJgGBAf9IAAFHAkYBgQHR
+        AUgBLgH/AesBUAE0Af8B/gFYAToC/wFkAUcB/wHsAbEBpQX/AfMBzAHEAf8B4QFuAVcB/wH8AWYBSgL/
+        AV4BQAH/AfUBVAE2Af8B3QFMATAB/wGkATcBIgH/DAABPQI8AWgBRwHWAfUB/wFOAd4B+QH/AVQB5AH7
+        Af8BWwHoAf0B/wFwAdkB6QH/AYEB3gHrAf8BBwHbAfsB/wEAAdgB+wH/AQAB0wH4Af8BAAHKAfMB/wEF
+        AYEBngH/DAABIAEoAYMB/wEqAT4BygH/AS8BRgHgAf8BiAGUAeIJ/wGcAacB7AH/AVYBaQHkCf8B3gHh
+        AfcB/wEwAUgB6AH/ASwBQgHVAf8BJwE6AbsB/wMWAR9EAAF/AScBIQH7AdoBSwEwAf8B9AFTATUC/wFi
+        AUYC/wFxAVYB/wHsAWwBUwn/AfgBcgFXAv8BcwFYAv8BawFQAf8B/AFXATgB/wHmAU8BMgH/AcoBRgEs
+        Af8QAAEsAZYBsAH/AVwB3gH4Af8BYwHlAfsB/wFqAekB/Qn/AYEB6AH5Af8BVAHkAfsB/wEAAc8B9gH/
+        AQABxQHwAf8DLgFHDAABIQEqAYkB/wE0AUkB1AH/AUIBWAHpAf8BTgFjAfUB/wHXAdsB9xH/AfcB+AH9
+        Af8BMgFLAfAB/wEyAUoB7gH/AS4BRAHcAf8BKAE8AcMB/wMWAR9EAAGeATQBIQH/Ad8BTQExAf8B9wFj
+        AUcC/wF1AVwB/wH4AYABYwH/AewBeAFhAf8B/AHzAfEF/wHmAYsBdwL/AYEBZgL/AXkBYQH/Af4BbgFU
+        Af8B6gFQATMB/wHOAUcBLQH/AxUBHQwAAzwBZgFrAd4B9wH/AXIB5QH6Af8BeQHqAfwJ/wGPAeoB+QH/
+        AZYB7QH8Af8BWQHdAfcB/wEFAYEBngH/EAABLQE1AY8B/wFIAVoB2wH/AVEBZQHtAf8BWgFvAfgB/wFi
+        AXUB/AH/Ad8B4gH5Cf8B/AH9Af4B/wGFAZQB+QH/AW8BgwH8Af8BMgFLAfAB/wEuAUUB3wH/ASkBPQHH
+        Af8DFgEfRAABlwEyAR8B/wHeAU0BMQH/AfgBgAFjAv8BhQFtAf8B/gGNAXUB/wH1AdgB0gH/AecBmwGN
+        Bf8B+QHnAeQC/wGOAXYC/wGJAXEB/wH+AYEBZgH/Ae0BcgFbAf8BzQFHAS0B/wMMARAQAAE8AZoBsQH/
+        AYMB5gH5Af8BigHrAfwJ/wGeAewB+QH/AaQB7gH7Af8BqgHsAfoB/wMtAUYQAAEyATkBkAH/AVIBZAHc
+        Af8BXAFvAe0B/wFlAXgB+AH/AYYBkwHqEf8ByQHPAfQB/wGZAaYB/AH/AaABqwH3Af8BVAFnAeQB/wEp
+        AT0BxgH/AxYBH0QAAV8BUQFPAdUB3AFkAU0B/wH1AY0BeAL/AZMBgQL/AZsBiAH/Af4BngGKAf8B7QGx
+        AaYB/wH8AfYB9AH/Ae8BvAGyAv8BnQGKAv8BlwGEAf8B+wGPAXkB/wHsAYoBdQH/AcQBQwEqAf8UAAM7
+        AWUBkgHmAfkB/wGZAewB+wn/AawB7gH5Af8BsgHvAfsB/wFAAY4BogH/FAABNwE9AY8B/wFcAWwB2gH/
+        AWcBeAHrAf8BiQGVAeYJ/wH6AfsB/gH/AeQB5wH6Cf8B0wHXAfUB/wGsAbUB9wH/AbEBuQHxAf8BXwFt
+        Ac8B/wMWAR9EAAMfAS0B1AFnAVIB/wHxAZ4BjgH/AfwBogGRAv8BpwGXAv8BqwGbAv8BrQGdAf8B7wG2
+        AasB/wH+Af0B/AH/AfEBpQGXAf8B/gGkAZMB/wH2AZ8BjwH/AekBmwGMAf8BdwE2ASgB9xgAAUwBnQGy
+        Af8BpwHtAfsJ/wG5Ae8B+QH/Ab4B8AH7Af8DLQFFFAABLgExAXYB/wFnAXUB1gH/AXIBgwHnAf8BegGK
+        AekB/wP+Af8C+wH+Af8BlQGiAfkB/wGdAakB/QH/AekB6wH6Bf8BtgG9AfAB/wG3Ab8B9QH/AbwBwwHw
+        Af8BwQHGAeoB/wMJAQxIAAGAATUBIQH5AewBrgGiAf8B9QGxAaQB/wH8AbQBpgL/AbYBqQL/AbgBqwH/
+        AfcB3QHZBf8B9QHVAc8B/wH5AbIBpQH/AfABsAGjAf8B3gGYAYoB/wMSARgYAAM7AWQBtAHtAfoJ/wHF
+        AfAB+gH/AUUBjwGiAf8YAAMIAQsBVQFdAaoB/wGBAYsB4QH/AYgBlgHtAf8BkAGcAe0B/wGZAaQB9AH/
+        AaEBrQH7Af8BqAGzAfsB/wGvAbkB+gH/AbkBwAHxAf8BvAHDAfcB/wHBAcgB8wH/AccBzAHuAf8BVAJS
+        AatPAAEBAb4BdQFnAf8B8AHBAbcB/wH2AcIBuQH/AfoBxAG6Af8B/AHEAboB/wH7AcQBugH/AfIBxgG9
+        Af8B9gHCAbkB/wHzAcIBuAH/AewBvgG1Af8DSgGKIAABWQGfAbIB/wHGAfEB+wH/AcsB8gH8Af8B0AHz
+        AfwB/wMsAUQcAAMIAQsBZAFrAbAB/wGTAZ4B5gH/AZwBpwHuAf8BpQGvAfMB/wGsAbYB9gH/AbMBvAH3
+        Af8BugHCAfcB/wHAAccB9QH/AcYBzAHzAf8BywHQAfAB/wFUAlIBq1cAAQEBiAFBAT4B+QHyAdAByQH/
+        AfQB0QHKAf8B9gHSAcoB/wH2AdIBygH/AfUB0QHKAf8B8wHQAcoB/wHUAZ4BkwH/AzsBYyQAAzsBZAHR
+        AfIB+wH/AdUB9AH8Af8BSwGQAaMB/yQAAwgBCwFyAXcBswH/AacBrwHnAf8BrwG3Ae0B/wG2Ab4B8AH/
+        Ab0BxAHyAf8BxAHKAfIB/wHKAc8B8QH/Ac8B0wHwAf8BVAJSAatgAAMfAS0BXwFRAU8B1QGpAWkBXgH/
+        AbQBeQFuAf8BiAFGATIB+wFHAkYBgTAAAVYBUQFVAdwBTQGRAaQB/wMWAR4oAAMIAQsBRgFHAYEB/wFp
+        AWsBnwH/AWwBbwGiAf8BcAFyAaQB/wFzAXQBpAH/AXEBcgGgAf8DUAGf/wBRAAFCAU0BPgcAAT4DAAEo
+        AwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAB/gF/AcABAwH4AR8CAAHwAQ8BgAEBAfABDwIAAeABBwGA
+        AQAB4AEHAgABwAEDAYABAQHAAQMCAAHAAQEBwAEBAYABAQIAAYABAQHAAQMBgAMAAYABAQHgAQMBgAMA
+        AYABAAHgAQcBgAMAAYABAAHwAQcBgAMAAYABAQHwAQ8BgAMAAYABAQH4AQ8BgAMAAcABAQH4AR8BgAEB
+        AgABwAEDAfwBHwHAAQMCAAHgAQcB/AE/AeABBwIAAfgBHwH+AT8B8AEPAgAG/wIACw==
 </value>
   </data>
   <data name="listView1.TabIndex" type="System.Int32, mscorlib">
@@ -442,6 +454,12 @@
   <data name=">>saveFileDialog.Type" xml:space="preserve">
     <value>System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
+  <data name=">>columnHeader3.Name" xml:space="preserve">
+    <value>columnHeader3</value>
+  </data>
+  <data name=">>columnHeader3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
   <data name=">>$this.Name" xml:space="preserve">
     <value>ValidationResultsDialog</value>
   </data>

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs	2012-07-11 13:48:29 UTC (rev 6891)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.Designer.cs	2012-07-11 14:39:57 UTC (rev 6892)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.225
+//     Runtime Version:4.0.30319.269
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -504,6 +504,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Due to a limitation in the public APIs provided by MapGuide. This Feature Source cannot be packaged by Maestro's packager without discarding the MG_USER_CREDENTIALS element. The workaround is to either re-secure these Feature Sources after loading the Maestro-created package, or to use the official packaging method which will preserve MG_USER_CREDENTIALS in its encrypted state.
+        /// </summary>
+        internal static string FS_CannotPackageSecuredCredentials {
+            get {
+                return ResourceManager.GetString("FS_CannotPackageSecuredCredentials", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Connection test failed: {0}.
         /// </summary>
         internal static string FS_ConnectionTestFailed {
@@ -549,6 +558,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to This Feature Source uses plaintext credentials. This would happen if you are using an old version of Maestro (4.0.2 or older). This is not secure as such Feature Sources can be accessed by the Anonymous MapGuide user account. It is strongly advised that such Feature Sources can be re-secured with MapGuide/Infrastructure Studio or with Maestro 4.0.3 (or newer).
+        /// </summary>
+        internal static string FS_PlaintextCredentials {
+            get {
+                return ResourceManager.GetString("FS_PlaintextCredentials", 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 {
@@ -585,6 +603,15 @@
         }
         
         /// <summary>
+        ///   Looks up a localized string similar to Feature source content has the %MG_USERNAME% and %MG_PASSWORD% tokens, but does not have the MG_USER_CREDENTIALS resource data item.
+        /// </summary>
+        internal static string FS_SecuredCredentialTokensWithoutSecuredCredentialData {
+            get {
+                return ResourceManager.GetString("FS_SecuredCredentialTokensWithoutSecuredCredentialData", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Looks up a localized string similar to Failed to read spatial context: {0}.
         /// </summary>
         internal static string FS_SpatialContextReadError {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx	2012-07-11 13:48:29 UTC (rev 6891)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Properties/Resources.resx	2012-07-11 14:39:57 UTC (rev 6892)
@@ -2766,4 +2766,13 @@
   <data name="ERR_INIT_IDENTITY_PROPS" xml:space="preserve">
     <value>Could fetch and initialize identity properties for {1} This is likely a bug in MapGuide {0}{2}</value>
   </data>
+  <data name="FS_CannotPackageSecuredCredentials" xml:space="preserve">
+    <value>Due to a limitation in the public APIs provided by MapGuide. This Feature Source cannot be packaged by Maestro's packager without discarding the MG_USER_CREDENTIALS element. The workaround is to either re-secure these Feature Sources after loading the Maestro-created package, or to use the official packaging method which will preserve MG_USER_CREDENTIALS in its encrypted state</value>
+  </data>
+  <data name="FS_PlaintextCredentials" xml:space="preserve">
+    <value>This Feature Source uses plaintext credentials. This would happen if you are using an old version of Maestro (4.0.2 or older). This is not secure as such Feature Sources can be accessed by the Anonymous MapGuide user account. It is strongly advised that such Feature Sources can be re-secured with MapGuide/Infrastructure Studio or with Maestro 4.0.3 (or newer)</value>
+  </data>
+  <data name="FS_SecuredCredentialTokensWithoutSecuredCredentialData" xml:space="preserve">
+    <value>Feature source content has the %MG_USERNAME% and %MG_PASSWORD% tokens, but does not have the MG_USER_CREDENTIALS resource data item</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-07-11 13:48:29 UTC (rev 6891)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/FeatureSourceValidator.cs	2012-07-11 14:39:57 UTC (rev 6892)
@@ -58,10 +58,55 @@
 
             IFeatureSource feature = (IFeatureSource)resource;
             IFeatureService featSvc = feature.CurrentConnection.FeatureService;
+
+            //Plaintext credential check
+            string providerNameUpper = feature.Provider.ToUpper();
+            string fsXml = feature.Serialize().ToUpper();
+
+            //You'll get warnings either way
+            if (providerNameUpper == "OSGEO.SQLSERVERSPATIAL" ||
+                providerNameUpper == "OSGEO.MYSQL" ||
+                providerNameUpper == "OSGEO.POSTGRESQL" ||
+                providerNameUpper == "OSGEO.ARCSDE" ||
+                providerNameUpper == "OSGEO.WFS" ||
+                providerNameUpper == "OSGEO.WMS" ||
+                providerNameUpper == "KING.ORACLE" ||
+                providerNameUpper == "AUTODESK.ORACLE")
+            {
+                //Fortunately, all the above providers are universal in the naming choice of credential connection parameters
+                if ((fsXml.Contains("<NAME>USERNAME</NAME>") && !fsXml.Contains("%MG_USERNAME%")) || (fsXml.Contains("<NAME>PASSWORD</NAME>") && !fsXml.Contains("%MG_PASSWORD%")))
+                    issues.Add(new ValidationIssue(feature, ValidationStatus.Warning, ValidationStatusCode.Warning_FeatureSource_Plaintext_Credentials, Properties.Resources.FS_PlaintextCredentials));
+                else
+                    issues.Add(new ValidationIssue(feature, ValidationStatus.Warning, ValidationStatusCode.Warning_FeatureSource_Cannot_Package_Secured_Credentials, Properties.Resources.FS_CannotPackageSecuredCredentials));
+
+                //Has the placeholder token(s)
+                if (fsXml.Contains("%MG_USERNAME%") || fsXml.Contains("%MG_PASSWORD%"))
+                {
+                    //Find the MG_USER_CREDENTIALS resource data item
+                    bool bFound = false;
+                    var resData = feature.EnumerateResourceData();
+                    foreach (var data in resData)
+                    {
+                        if (data.Name == "MG_USER_CREDENTIALS")
+                        {
+                            bFound = true;
+                        }
+                    }
+
+                    if (!bFound)
+                    {
+                        issues.Add(new ValidationIssue(feature, ValidationStatus.Error, ValidationStatusCode.Error_FeatureSource_SecuredCredentialTokensWithoutSecuredCredentialData, Properties.Resources.FS_SecuredCredentialTokensWithoutSecuredCredentialData));
+                    }
+                }
+            }
+            
             //Note: Must be saved!
             string s = featSvc.TestConnection(feature.ResourceID);
             if (s.Trim().ToUpper() != true.ToString().ToUpper())
-                return new ValidationIssue[] { new ValidationIssue(feature, ValidationStatus.Error, ValidationStatusCode.Error_FeatureSource_ConnectionTestFailed, string.Format(Properties.Resources.FS_ConnectionTestFailed, s)) };
+            {
+                issues.Add(new ValidationIssue(feature, ValidationStatus.Error, ValidationStatusCode.Error_FeatureSource_ConnectionTestFailed, string.Format(Properties.Resources.FS_ConnectionTestFailed, s)));
+                return issues.ToArray();
+            }
 
             try
             {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationStatusCode.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationStatusCode.cs	2012-07-11 13:48:29 UTC (rev 6891)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Validation/ValidationStatusCode.cs	2012-07-11 14:39:57 UTC (rev 6892)
@@ -110,6 +110,21 @@
         Warning_FeatureSource_Validation_Timeout,
 
         /// <summary>
+        /// Due to a limitation in the public APIs provided by MapGuide. Feature Sources with encrypted security credentials (MG_USER_CREDENTIALS)
+        /// cannot be packaged by Maestro's packager without discarding the MG_USER_CREDENTIALS element. The workaround is to either re-secure these
+        /// feature sources after loading the Maestro-created package, or to use the official packaging method which will preserve MG_USER_CREDENTIALS
+        /// in its encrypted state
+        /// </summary>
+        Warning_FeatureSource_Cannot_Package_Secured_Credentials,
+        
+        /// <summary>
+        /// A Feature Source whose provider contains username/password connection parameters contains login credentials in plaintext. This is not secure
+        /// as such Feature Sources can be accessed by the Anonymous MapGuide user account. It is strongly advised that such Feature Sources can be 
+        /// re-secured with MapGuide/Infrastructure Studio or with Maestro 4.0.3 (or newer)
+        /// </summary>
+        Warning_FeatureSource_Plaintext_Credentials,
+
+        /// <summary>
         /// DWG Load Procedures not supported. This is a limitation of Maestro
         /// </summary>
         Warning_LoadProcedure_DwgNotSupported = 3201,
@@ -236,6 +251,12 @@
         Error_FeatureSource_SchemaReadError,
 
         /// <summary>
+        /// The validator found the %MG_USERNAME% and %MG_PASSWORD% placeholder tokens in the Feature Source content, but could not find the
+        /// matching MG_USER_CREDENTIALS resource data item that contains the encrypted credentials
+        /// </summary>
+        Error_FeatureSource_SecuredCredentialTokensWithoutSecuredCredentialData,
+
+        /// <summary>
         /// No finite display scales defined for a map definition that contains tiled layers.
         /// </summary>
         Error_MapDefinition_NoFiniteDisplayScales = 5201,



More information about the mapguide-commits mailing list