Browse Source

Refactor UpdatedPackagesViewModel.

pull/44/head
Matt Ward 13 years ago
parent
commit
e8a97e3455
  1. 2
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 18
      src/AddIns/Misc/PackageManagement/Project/Src/IUpdatePackagesAction.cs
  3. 5
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackagesAction.cs
  4. 70
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackagesActionFactory.cs
  5. 2
      src/AddIns/Misc/PackageManagement/Project/Src/UpdateSolutionPackagesAction.cs
  6. 32
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs
  7. 6
      src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs

2
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -155,6 +155,7 @@ @@ -155,6 +155,7 @@
<Compile Include="Src\FileConflictViewModel.cs" />
<Compile Include="Src\IClassKindUpdater.cs" />
<Compile Include="Src\IDocumentNamespaceCreator.cs" />
<Compile Include="Src\IUpdatePackagesAction.cs" />
<Compile Include="Src\IPackageExtensions.cs" />
<Compile Include="Src\IPackageAction.cs" />
<Compile Include="Src\IProjectBuilder.cs" />
@ -237,6 +238,7 @@ @@ -237,6 +238,7 @@
<Compile Include="Src\Scripting\RunAllProjectPackageScriptsAction.cs" />
<Compile Include="Src\ServiceWithWorkbenchOwner.cs" />
<Compile Include="Src\UpdatePackagesAction.cs" />
<Compile Include="Src\UpdatePackagesActionFactory.cs" />
<Compile Include="Src\UpdateSolutionPackagesAction.cs" />
<Compile Include="Src\VirtualMethodUpdater.cs" />
<Compile Include="Src\NewProjectsCreated.cs" />

18
src/AddIns/Misc/PackageManagement/Project/Src/IUpdatePackagesAction.cs

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
// 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 System.Collections.Generic;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public interface IUpdatePackagesAction : IPackageAction, IUpdatePackageSettings
{
IEnumerable<PackageOperation> Operations { get; }
ILogger Logger { get; set; }
void AddPackages(IEnumerable<IPackageFromRepository> packages);
void AddOperations(IEnumerable<PackageOperation> operations);
}
}

5
src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackagesAction.cs

@ -8,7 +8,7 @@ using NuGet; @@ -8,7 +8,7 @@ using NuGet;
namespace ICSharpCode.PackageManagement
{
public class UpdatePackagesAction : IPackageAction, IUpdatePackageSettings
public class UpdatePackagesAction : IUpdatePackagesAction
{
List<IPackage> packages = new List<IPackage>();
List<PackageOperation> operations = new List<PackageOperation>();
@ -32,6 +32,7 @@ namespace ICSharpCode.PackageManagement @@ -32,6 +32,7 @@ namespace ICSharpCode.PackageManagement
public bool UpdateDependencies { get; set; }
public bool AllowPrereleaseVersions { get; set; }
public ILogger Logger { get; set; }
public bool HasPackageScriptsToRun()
{
@ -44,7 +45,7 @@ namespace ICSharpCode.PackageManagement @@ -44,7 +45,7 @@ namespace ICSharpCode.PackageManagement
this.operations.AddRange(operations);
}
public void AddPackages(IEnumerable<IPackage> packages)
public void AddPackages(IEnumerable<IPackageFromRepository> packages)
{
this.packages.AddRange(packages);
}

70
src/AddIns/Misc/PackageManagement/Project/Src/UpdatePackagesActionFactory.cs

@ -0,0 +1,70 @@ @@ -0,0 +1,70 @@
// 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 System.Collections.Generic;
using System.Linq;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class UpdatePackagesActionFactory
{
ILogger logger;
bool singleProjectSelected;
IPackageManagementProject project;
PackageManagementSelectedProjects selectedProjects;
IEnumerable<IPackageFromRepository> packages;
public UpdatePackagesActionFactory(ILogger logger)
{
this.logger = logger;
}
public IUpdatePackagesAction CreateAction(
PackageManagementSelectedProjects selectedProjects,
IEnumerable<IPackageFromRepository> packages)
{
this.selectedProjects = selectedProjects;
this.packages = packages;
singleProjectSelected = selectedProjects.HasSingleProjectSelected();
CreateProjectForDetermingPackageOperations();
IUpdatePackagesAction action = CreateActionInternal();
action.AddPackages(packages);
action.Logger = logger;
IEnumerable<PackageOperation> operations = GetPackageOperations(action);
action.AddOperations(operations);
return action;
}
IEnumerable<PackageOperation> GetPackageOperations(IUpdatePackagesAction action)
{
return project.GetUpdatePackagesOperations(packages, action);
}
IUpdatePackagesAction CreateActionInternal()
{
if (singleProjectSelected) {
return project.CreateUpdatePackagesAction();
} else {
return new UpdateSolutionPackagesAction(selectedProjects.Solution);
}
}
void CreateProjectForDetermingPackageOperations()
{
IPackageRepository repository = packages.First().Repository;
if (singleProjectSelected) {
project = selectedProjects.GetSingleProjectSelected(repository);
} else {
project = selectedProjects.Solution.GetProjects(repository).First();
}
project.Logger = logger;
}
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/UpdateSolutionPackagesAction.cs

@ -9,7 +9,7 @@ using NuGet; @@ -9,7 +9,7 @@ using NuGet;
namespace ICSharpCode.PackageManagement
{
public class UpdateSolutionPackagesAction : IPackageAction, IUpdatePackageSettings
public class UpdateSolutionPackagesAction : IUpdatePackagesAction
{
List<IPackageFromRepository> packages = new List<IPackageFromRepository>();
List<PackageOperation> operations = new List<PackageOperation>();

32
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs

@ -68,35 +68,9 @@ namespace ICSharpCode.PackageManagement @@ -68,35 +68,9 @@ namespace ICSharpCode.PackageManagement
protected override void TryUpdatingAllPackages()
{
if (selectedProjects.HasSingleProjectSelected()) {
IEnumerable<IPackageFromRepository> packages = GetPackagesFromViewModels();
IPackageRepository repository = packages.First().Repository;
IPackageManagementProject project = selectedProjects.GetSingleProjectSelected(repository);
project.Logger = logger;
UpdatePackagesAction action = project.CreateUpdatePackagesAction();
action.AddPackages(packages);
IEnumerable<PackageOperation> operations = project.GetUpdatePackagesOperations(packages, action);
action.AddOperations(operations);
ActionRunner.Run(action);
} else {
IEnumerable<IPackageFromRepository> packages = GetPackagesFromViewModels();
IPackageRepository repository = packages.First().Repository;
var action = new UpdateSolutionPackagesAction(selectedProjects.Solution);
action.Logger = logger;
action.AddPackages(packages);
IPackageManagementProject project = selectedProjects.Solution.GetProjects(repository).First();
project.Logger = logger;
IEnumerable<PackageOperation> operations = project.GetUpdatePackagesOperations(packages, action);
action.AddOperations(operations);
ActionRunner.Run(action);
}
var factory = new UpdatePackagesActionFactory(logger);
IUpdatePackagesAction action = factory.CreateAction(selectedProjects, GetPackagesFromViewModels());
ActionRunner.Run(action);
}
IEnumerable<IPackageFromRepository> GetPackagesFromViewModels()

6
src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopPackageManagerTests.cs

@ -276,7 +276,7 @@ namespace PackageManagement.Tests @@ -276,7 +276,7 @@ namespace PackageManagement.Tests
return new UpdatePackagesAction(new FakePackageManagementProject());
}
UpdatePackagesAction CreateUpdatePackagesActionWithPackages(params IPackage[] packages)
UpdatePackagesAction CreateUpdatePackagesActionWithPackages(params IPackageFromRepository[] packages)
{
UpdatePackagesAction action = CreateUpdatePackagesAction();
action.AddPackages(packages);
@ -938,8 +938,8 @@ namespace PackageManagement.Tests @@ -938,8 +938,8 @@ namespace PackageManagement.Tests
{
CreatePackageManager();
CreateFakePackageResolverForUpdatePackageOperations();
IPackage package1 = CreateFakePackage("Test", "1.0");
IPackage package2 = CreateFakePackage("Test2", "1.0");
IPackageFromRepository package1 = CreateFakePackage("Test", "1.0");
IPackageFromRepository package2 = CreateFakePackage("Test2", "1.0");
PackageOperation operation1 = AddInstallOperationForPackage(package1);
PackageOperation operation2 = AddInstallOperationForPackage(package2);
UpdatePackagesAction updateAction = CreateUpdatePackagesActionWithPackages(package1, package2);

Loading…
Cancel
Save