From aecbb026b4faf770fa21144a6132a6aebd95d390 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sat, 16 Apr 2011 19:46:45 +0100 Subject: [PATCH] Move package view model logging to separate class. --- .../Project/PackageManagement.csproj | 1 + .../Project/Src/PackageViewModel.cs | 71 +++------------ .../Src/PackageViewModelOperationLogger.cs | 86 +++++++++++++++++++ .../Src/Helpers/TestablePackageViewModel.cs | 15 ++-- .../TestableUpdatedPackageViewModel.cs | 10 --- .../Test/Src/PackageViewModelTests.cs | 12 ++- 6 files changed, 114 insertions(+), 81 deletions(-) create mode 100644 src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelOperationLogger.cs diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj index 64e1a8b76a..7f1f87979f 100644 --- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj +++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj @@ -74,6 +74,7 @@ + diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs index 92f6833a93..4e04315d50 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs @@ -20,7 +20,7 @@ namespace ICSharpCode.PackageManagement IEnumerable packageOperations = new PackageOperation[0]; IPackageRepository sourceRepository; bool? hasDependencies; - ILogger logger; + PackageViewModelOperationLogger logger; public PackageViewModel( IPackage package, @@ -33,11 +33,16 @@ namespace ICSharpCode.PackageManagement this.sourceRepository = sourceRepository; this.packageManagementService = packageManagementService; this.packageManagementEvents = packageManagementEvents; - this.logger = logger; + this.logger = CreateLogger(logger); CreateCommands(); } + protected virtual PackageViewModelOperationLogger CreateLogger(ILogger logger) + { + return new PackageViewModelOperationLogger(logger, package); + } + void CreateCommands() { addPackageCommand = new DelegateCommand(param => AddPackage()); @@ -152,9 +157,9 @@ namespace ICSharpCode.PackageManagement public void AddPackage() { ClearReportedMessages(); - LogAddingPackage(); + logger.LogAddingPackage(); TryInstallingPackage(); - LogAfterPackageOperationCompletes(); + logger.LogAfterPackageOperationCompletes(); } void ClearReportedMessages() @@ -162,49 +167,6 @@ namespace ICSharpCode.PackageManagement packageManagementEvents.OnPackageOperationsStarting(); } - void LogAddingPackage() - { - string message = GetFormattedStartPackageOperationMessage(AddingPackageMessageFormat); - Log(message); - } - - void Log(string message) - { - logger.Log(MessageLevel.Info, message); - } - - string GetFormattedStartPackageOperationMessage(string format) - { - string message = String.Format(format, package.ToString()); - return GetStartPackageOperationMessage(message); - } - - string GetStartPackageOperationMessage(string message) - { - return String.Format("------- {0} -------", message); - } - - protected virtual string AddingPackageMessageFormat { - get { return "Installing...{0}"; } - } - - void LogAfterPackageOperationCompletes() - { - LogEndMarkerLine(); - LogEmptyLine(); - } - - void LogEndMarkerLine() - { - string message = new String('=', 30); - Log(message); - } - - void LogEmptyLine() - { - Log(String.Empty); - } - void GetPackageOperations() { ISharpDevelopPackageManager packageManager = CreatePackageManagerForActiveProject(); @@ -263,7 +225,7 @@ namespace ICSharpCode.PackageManagement } } catch (Exception ex) { ReportError(ex); - Log(ex.ToString()); + logger.LogError(ex); } } @@ -293,21 +255,16 @@ namespace ICSharpCode.PackageManagement public void RemovePackage() { ClearReportedMessages(); - LogRemovingPackage(); + logger.LogRemovingPackage(); TryUninstallingPackage(); - LogAfterPackageOperationCompletes(); + logger.LogAfterPackageOperationCompletes(); OnPropertyChanged(model => model.IsAdded); } void LogRemovingPackage() { - string message = GetFormattedStartPackageOperationMessage(RemovingPackageMessageFormat); - Log(message); - } - - protected virtual string RemovingPackageMessageFormat { - get { return "Uninstalling...{0}"; } + logger.LogRemovingPackage(); } void TryUninstallingPackage() @@ -319,7 +276,7 @@ namespace ICSharpCode.PackageManagement action.Execute(); } catch (Exception ex) { ReportError(ex); - Log(ex.ToString()); + logger.LogError(ex); } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelOperationLogger.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelOperationLogger.cs new file mode 100644 index 0000000000..9717d49ba2 --- /dev/null +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModelOperationLogger.cs @@ -0,0 +1,86 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using NuGet; + +namespace ICSharpCode.PackageManagement +{ + public class PackageViewModelOperationLogger : ILogger + { + ILogger logger; + IPackage package; + + public PackageViewModelOperationLogger(ILogger logger, IPackage package) + { + this.logger = logger; + this.package = package; + + GetMessageFormats(); + } + + void GetMessageFormats() + { + AddingPackageMessageFormat = "Installing...{0}"; + RemovingPackageMessageFormat = "Uninstalling...{0}"; + } + + public string AddingPackageMessageFormat { get; set; } + public string RemovingPackageMessageFormat { get; set; } + + public void Log(MessageLevel level, string message, params object[] args) + { + logger.Log(level, message, args); + } + + public void LogInformation(string message) + { + Log(MessageLevel.Info, message); + } + + public void LogAfterPackageOperationCompletes() + { + LogEndMarkerLine(); + LogEmptyLine(); + } + + void LogEndMarkerLine() + { + string message = new String('=', 30); + LogInformation(message); + } + + void LogEmptyLine() + { + LogInformation(String.Empty); + } + + public void LogAddingPackage() + { + string message = GetFormattedStartPackageOperationMessage(AddingPackageMessageFormat); + LogInformation(message); + } + + string GetFormattedStartPackageOperationMessage(string format) + { + string message = String.Format(format, package.ToString()); + return GetStartPackageOperationMessage(message); + } + + string GetStartPackageOperationMessage(string message) + { + return String.Format("------- {0} -------", message); + } + + public void LogRemovingPackage() + { + string message = GetFormattedStartPackageOperationMessage(RemovingPackageMessageFormat); + LogInformation(message); + } + + public void LogError(Exception ex) + { + LogInformation(ex.ToString()); + } + } +} diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs index 394ff1e4fa..9d867b96a8 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestablePackageViewModel.cs @@ -15,8 +15,6 @@ namespace PackageManagement.Tests.Helpers public FakePackageManagementEvents FakePackageManagementEvents; public FakePackage FakePackage; public FakeLogger FakeLogger; - public string PackageViewModelAddingPackageMessageFormat = String.Empty; - public string PackageViewModelRemovingPackageMessageFormat = String.Empty; public TestablePackageViewModel(FakePackageManagementService packageManagementService) : this( @@ -48,13 +46,16 @@ namespace PackageManagement.Tests.Helpers this.FakeLogger = logger; } - protected override string AddingPackageMessageFormat { - get { return PackageViewModelAddingPackageMessageFormat; } + protected override PackageViewModelOperationLogger CreateLogger(ILogger logger) + { + PackageViewModelOperationLogger operationLogger = base.CreateLogger(logger); + operationLogger.AddingPackageMessageFormat = "Installing...{0}"; + operationLogger.RemovingPackageMessageFormat = "Uninstalling...{0}"; + OperationLoggerCreated = operationLogger; + return operationLogger; } - protected override string RemovingPackageMessageFormat { - get { return PackageViewModelRemovingPackageMessageFormat; } - } + public PackageViewModelOperationLogger OperationLoggerCreated; public PackageOperation AddOneFakeInstallPackageOperationForViewModelPackage() { diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs index 05d02b35cb..c699b47399 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableUpdatedPackageViewModel.cs @@ -17,8 +17,6 @@ namespace PackageManagement.Tests.Helpers public FakePackage FakePackage; public FakeLogger FakeLogger; public ILogger LoggerUsedWhenCreatingPackageResolver; - public string PackageViewModelAddingPackageMessageFormat = String.Empty; - public string PackageViewModelRemovingPackageMessageFormat = String.Empty; public TestableUpdatedPackageViewModel() : this(new FakePackageManagementService()) @@ -53,13 +51,5 @@ namespace PackageManagement.Tests.Helpers this.FakeSourcePackageRepository = sourceRepository; this.FakeLogger = logger; } - - protected override string AddingPackageMessageFormat { - get { return PackageViewModelAddingPackageMessageFormat; } - } - - protected override string RemovingPackageMessageFormat { - get { return PackageViewModelRemovingPackageMessageFormat; } - } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs index 6578010f3b..e3f347faff 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs @@ -359,13 +359,13 @@ namespace PackageManagement.Tests } [Test] - public void AddPackage_CheckLoggerUsed_OutputMessagesLoggerUsedWhenResolvingPackageOperations() + public void AddPackage_CheckLoggerUsed_PackageViewModelLoggerUsedWhenResolvingPackageOperations() { CreateViewModel(); viewModel.AddOneFakeInstallPackageOperationForViewModelPackage(); viewModel.AddPackage(); - ILogger expectedLogger = fakeLogger; + ILogger expectedLogger = viewModel.OperationLoggerCreated; ILogger actualLogger = packageManagementService .FakePackageManagerToReturnFromCreatePackageManager .Logger; @@ -379,12 +379,11 @@ namespace PackageManagement.Tests viewModel.AddOneFakeInstallPackageOperationForViewModelPackage(); package.Id = "Test.Package"; package.Version = new Version(1, 2, 0, 55); - viewModel.PackageViewModelAddingPackageMessageFormat = "Updating...{0}"; viewModel.AddPackage(); - string expectedMessage = "------- Updating...Test.Package 1.2.0.55 -------"; + string expectedMessage = "------- Installing...Test.Package 1.2.0.55 -------"; string actualMessage = fakeLogger.FirstFormattedMessageLogged; - + Assert.AreEqual(expectedMessage, actualMessage); } @@ -421,10 +420,9 @@ namespace PackageManagement.Tests viewModel.AddOneFakeInstallPackageOperationForViewModelPackage(); package.Id = "Test.Package"; package.Version = new Version(1, 2, 0, 55); - viewModel.PackageViewModelRemovingPackageMessageFormat = "Removing...{0}"; viewModel.RemovePackage(); - string expectedMessage = "------- Removing...Test.Package 1.2.0.55 -------"; + string expectedMessage = "------- Uninstalling...Test.Package 1.2.0.55 -------"; string actualMessage = fakeLogger.FirstFormattedMessageLogged; Assert.AreEqual(expectedMessage, actualMessage);