[mapguide-commits] r5723 - in trunk/Tools/Maestro/Maestro.Base: .
Commands Commands/SiteExplorer Properties
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Thu Apr 28 06:46:26 EDT 2011
Author: jng
Date: 2011-04-28 03:46:25 -0700 (Thu, 28 Apr 2011)
New Revision: 5723
Added:
trunk/Tools/Maestro/Maestro.Base/Commands/ValidateEditedResourceCommand.cs
Modified:
trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/ValidateCommand.cs
trunk/Tools/Maestro/Maestro.Base/Maestro.Base.addin
trunk/Tools/Maestro/Maestro.Base/Maestro.Base.csproj
trunk/Tools/Maestro/Maestro.Base/Properties/Resources.Designer.cs
trunk/Tools/Maestro/Maestro.Base/Properties/Resources.resx
Log:
#1672: The validate command on the toolbar did not actually function as advertised. This submission fixes this command so that it does its originally intended function: To validate the resource of the active editor.
Modified: trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/ValidateCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/ValidateCommand.cs 2011-04-26 13:59:16 UTC (rev 5722)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/SiteExplorer/ValidateCommand.cs 2011-04-28 10:46:25 UTC (rev 5723)
@@ -33,10 +33,8 @@
namespace Maestro.Base.Commands.SiteExplorer
{
- internal class ValidateCommand : AbstractMenuCommand
+ internal class ValidateCommand : BaseValidateCommand
{
- private IServerConnection _conn;
-
public override void Run()
{
var wb = Workbench.Instance;
@@ -55,96 +53,10 @@
args[i] = items[i].ResourceId;
}
- var issues = (ValidationIssue[])pdlg.RunOperationAsync(wb, new ProgressDialog.DoBackgroundWork(BackgroundValidate), items[0].ResourceId);
+ var issues = (ValidationIssue[])pdlg.RunOperationAsync(wb, new ProgressDialog.DoBackgroundWork(BackgroundValidate), args);
- if (issues != null)
- {
- if (issues.Length > 0)
- {
- //Sigh! LINQ would've made this code so simple...
-
- var sort = new Dictionary<string, List<ValidationIssue>>();
- foreach (var issue in issues)
- {
- string resId = issue.Resource.ResourceID;
- if (!sort.ContainsKey(resId))
- sort[resId] = new List<ValidationIssue>();
-
- sort[resId].Add(issue);
- }
-
- var groupedIssues = new List<KeyValuePair<string, ValidationIssue[]>>();
- foreach (var kvp in sort)
- {
- groupedIssues.Add(
- new KeyValuePair<string, ValidationIssue[]>(
- kvp.Key,
- kvp.Value.ToArray()));
- }
-
- var resDlg = new ValidationResultsDialog(groupedIssues);
- resDlg.Show();
- }
- else
- {
- MessageService.ShowMessage(Properties.Resources.ValidationNoIssues);
- }
- }
+ CollectAndDisplayIssues(issues);
}
}
-
- private object BackgroundValidate(BackgroundWorker worker, DoWorkEventArgs e, params object[] args)
- {
- //Collect all documents to be validated. Some of these selected items
- //may be folders.
- var documents = new List<string>();
- foreach (object a in args)
- {
- string rid = a.ToString();
- if (ResourceIdentifier.Validate(rid))
- {
- var resId = new ResourceIdentifier(rid);
- if (resId.IsFolder)
- {
- foreach (IRepositoryItem o in _conn.ResourceService.GetRepositoryResources((string)args[0]).Children)
- {
- if (!o.IsFolder)
- {
- documents.Add(o.ResourceId);
- }
- }
- }
- else
- {
- documents.Add(rid);
- }
- }
- }
-
- worker.ReportProgress(0);
- var context = new ResourceValidationContext(_conn.ResourceService, _conn.FeatureService);
-
- var set = new ValidationResultSet();
- int i = 0;
- foreach (string s in documents)
- {
- worker.ReportProgress((int)((i / (double)documents.Count) * 100), s);
- IResource item = null;
- try
- {
- item = _conn.ResourceService.GetResource(s);
- set.AddIssues(ResourceValidatorSet.Validate(context, item, true));
- }
- catch (Exception ex)
- {
- string msg = NestedExceptionMessageProcessor.GetFullMessage(ex);
- set.AddIssue(new ValidationIssue(item, ValidationStatus.Error, ValidationStatusCode.Error_General_ValidationError, string.Format(Properties.Resources.ValidationResourceLoadFailed, msg)));
- }
- i++;
- worker.ReportProgress((int)((i / (double)documents.Count) * 100), s);
- }
-
- return set.GetAllIssues();
- }
}
}
Added: trunk/Tools/Maestro/Maestro.Base/Commands/ValidateEditedResourceCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/ValidateEditedResourceCommand.cs (rev 0)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/ValidateEditedResourceCommand.cs 2011-04-28 10:46:25 UTC (rev 5723)
@@ -0,0 +1,153 @@
+#region Disclaimer / License
+// Copyright (C) 2011, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+//
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Text;
+using ICSharpCode.Core;
+using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.ObjectModels.Common;
+using System.ComponentModel;
+using OSGeo.MapGuide.MaestroAPI;
+using OSGeo.MapGuide.MaestroAPI.Exceptions;
+using OSGeo.MapGuide.MaestroAPI.Resource.Validation;
+using Maestro.Shared.UI;
+using Maestro.Base.Services;
+
+namespace Maestro.Base.Commands
+{
+ internal abstract class BaseValidateCommand : AbstractMenuCommand
+ {
+ protected IServerConnection _conn;
+
+ protected object BackgroundValidate(BackgroundWorker worker, DoWorkEventArgs e, params object[] args)
+ {
+ //Collect all documents to be validated. Some of these selected items
+ //may be folders.
+ var documents = new List<string>();
+ foreach (object a in args)
+ {
+ string rid = a.ToString();
+ if (ResourceIdentifier.Validate(rid))
+ {
+ var resId = new ResourceIdentifier(rid);
+ if (resId.IsFolder)
+ {
+ foreach (IRepositoryItem o in _conn.ResourceService.GetRepositoryResources((string)args[0]).Children)
+ {
+ if (!o.IsFolder)
+ {
+ documents.Add(o.ResourceId);
+ }
+ }
+ }
+ else
+ {
+ documents.Add(rid);
+ }
+ }
+ }
+
+ worker.ReportProgress(0);
+ var context = new ResourceValidationContext(_conn.ResourceService, _conn.FeatureService);
+
+ var set = new ValidationResultSet();
+ int i = 0;
+ foreach (string s in documents)
+ {
+ worker.ReportProgress((int)((i / (double)documents.Count) * 100), s);
+ IResource item = null;
+ try
+ {
+ item = _conn.ResourceService.GetResource(s);
+ set.AddIssues(ResourceValidatorSet.Validate(context, item, true));
+ }
+ catch (Exception ex)
+ {
+ string msg = NestedExceptionMessageProcessor.GetFullMessage(ex);
+ set.AddIssue(new ValidationIssue(item, ValidationStatus.Error, ValidationStatusCode.Error_General_ValidationError, string.Format(Properties.Resources.ValidationResourceLoadFailed, msg)));
+ }
+ i++;
+ worker.ReportProgress((int)((i / (double)documents.Count) * 100), s);
+ }
+
+ return set.GetAllIssues();
+ }
+
+ protected static void CollectAndDisplayIssues(ValidationIssue[] issues)
+ {
+ if (issues != null)
+ {
+ if (issues.Length > 0)
+ {
+ //Sigh! LINQ would've made this code so simple...
+
+ var sort = new Dictionary<string, List<ValidationIssue>>();
+ foreach (var issue in issues)
+ {
+ string resId = issue.Resource.ResourceID;
+ if (!sort.ContainsKey(resId))
+ sort[resId] = new List<ValidationIssue>();
+
+ sort[resId].Add(issue);
+ }
+
+ var groupedIssues = new List<KeyValuePair<string, ValidationIssue[]>>();
+ foreach (var kvp in sort)
+ {
+ groupedIssues.Add(
+ new KeyValuePair<string, ValidationIssue[]>(
+ kvp.Key,
+ kvp.Value.ToArray()));
+ }
+
+ var resDlg = new ValidationResultsDialog(groupedIssues);
+ resDlg.Show();
+ }
+ else
+ {
+ MessageService.ShowMessage(Properties.Resources.ValidationNoIssues);
+ }
+ }
+ }
+ }
+
+ internal class ValidateEditedResourceCommand : BaseValidateCommand
+ {
+ public override void Run()
+ {
+ var wb = Workbench.Instance;
+ var ed = wb.ActiveEditor;
+
+ if (ed != null)
+ {
+ _conn = ed.EditorService.GetEditedResource().CurrentConnection;
+
+ ed.EditorService.SyncSessionCopy();
+
+ var pdlg = new ProgressDialog();
+ pdlg.CancelAbortsThread = true;
+
+ var issues = (ValidationIssue[])pdlg.RunOperationAsync(wb, new ProgressDialog.DoBackgroundWork(BackgroundValidate), ed.EditorService.EditedResourceID);
+
+ CollectAndDisplayIssues(issues);
+ }
+ }
+ }
+}
Modified: trunk/Tools/Maestro/Maestro.Base/Maestro.Base.addin
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Maestro.Base.addin 2011-04-26 13:59:16 UTC (rev 5722)
+++ trunk/Tools/Maestro/Maestro.Base/Maestro.Base.addin 2011-04-28 10:46:25 UTC (rev 5723)
@@ -353,8 +353,8 @@
<ToolbarItem id="Validate"
icon="tick"
label="${res:Toolbar_Validate}"
- tooltip="${res:Menu_File_ValidateResource}"
- class="Maestro.Base.Commands.SiteExplorer.ValidateCommand" />
+ tooltip="${res:Menu_File_ValidateEditedResource}"
+ class="Maestro.Base.Commands.ValidateEditedResourceCommand" />
</Condition>
<!--
Only needed if our custom drawn close buttons don't appear on document
Modified: trunk/Tools/Maestro/Maestro.Base/Maestro.Base.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Maestro.Base.csproj 2011-04-26 13:59:16 UTC (rev 5722)
+++ trunk/Tools/Maestro/Maestro.Base/Maestro.Base.csproj 2011-04-28 10:46:25 UTC (rev 5723)
@@ -126,6 +126,7 @@
<Compile Include="Commands\Test\OpenUnmanagedResourceCommand.cs" />
<Compile Include="Commands\Test\SelectFdoProviderCommand.cs" />
<Compile Include="Commands\Test\TestCommands.cs" />
+ <Compile Include="Commands\ValidateEditedResourceCommand.cs" />
<Compile Include="Commands\XmlEditCommand.cs" />
<Compile Include="Editor\DrawingSourceEditor.cs">
<SubType>UserControl</SubType>
Modified: trunk/Tools/Maestro/Maestro.Base/Properties/Resources.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Properties/Resources.Designer.cs 2011-04-26 13:59:16 UTC (rev 5722)
+++ trunk/Tools/Maestro/Maestro.Base/Properties/Resources.Designer.cs 2011-04-28 10:46:25 UTC (rev 5723)
@@ -1011,6 +1011,15 @@
}
/// <summary>
+ /// Looks up a localized string similar to Validate Edited Resource.
+ /// </summary>
+ internal static string Menu_File_ValidateEditedResource {
+ get {
+ return ResourceManager.GetString("Menu_File_ValidateEditedResource", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Validate Resource.
/// </summary>
internal static string Menu_File_ValidateResource {
Modified: trunk/Tools/Maestro/Maestro.Base/Properties/Resources.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Properties/Resources.resx 2011-04-26 13:59:16 UTC (rev 5722)
+++ trunk/Tools/Maestro/Maestro.Base/Properties/Resources.resx 2011-04-28 10:46:25 UTC (rev 5723)
@@ -1004,4 +1004,7 @@
<data name="SiteExplorer_FindReplaceXml" xml:space="preserve">
<value>Find and Replace XML content</value>
</data>
+ <data name="Menu_File_ValidateEditedResource" xml:space="preserve">
+ <value>Validate Edited Resource</value>
+ </data>
</root>
\ No newline at end of file
More information about the mapguide-commits
mailing list