Files
Orchard/src/Orchard.Web/Modules/Orchard.Packaging/Services/ExtensionReferenceRepository.cs
Suha Can c97a8d26cb Cleanup (includes)
--HG--
branch : dev
2010-12-07 15:47:45 -08:00

60 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using NuGet;
using Orchard.Environment.Extensions;
namespace Orchard.Packaging.Services {
/// <summary>
/// This repository implementation informs about what packages are already installed.
/// </summary>
public class ExtensionReferenceRepository : PackageRepositoryBase {
private readonly IExtensionManager _extensionManager;
public ExtensionReferenceRepository(IProjectSystem project, IPackageRepository sourceRepository, IExtensionManager extensionManager) {
if (project == null) {
throw new ArgumentNullException("project");
}
if (sourceRepository == null) {
throw new ArgumentNullException("sourceRepository");
}
if (extensionManager == null) {
throw new ArgumentNullException("extensionManager");
}
Project = project;
SourceRepository = sourceRepository;
_extensionManager = extensionManager;
}
private IProjectSystem Project {
get;
set;
}
private IPackageRepository SourceRepository {
get;
set;
}
public override IQueryable<IPackage> GetPackages() {
IEnumerable<IPackage> packages;
packages = from extension in _extensionManager.AvailableExtensions()
let id = "Orchard." + extension.ExtensionType + "." + extension.Id
let version = Version.Parse(extension.Version)
let package = SourceRepository.FindPackage(id, version)
where package != null
select package;
return packages.AsQueryable();
}
public override void AddPackage(IPackage package) {
}
public override void RemovePackage(IPackage package) {
}
}
}