Refactoring usage of UOW in File-, Localization- and MediaService.

This commit is contained in:
sitereactor
2012-11-05 10:12:17 -01:00
parent 480801e10b
commit fe6bbdf005
4 changed files with 62 additions and 91 deletions

View File

@@ -18,7 +18,9 @@ namespace Umbraco.Core.Models
internal static IDataType DataType(this PropertyType propertyType)
{
Mandate.ParameterNotNull(propertyType, "propertyType");
return DataTypesResolver.Current.GetById(propertyType.DataTypeControlId);
var dataType = DataTypesResolver.Current.GetById(propertyType.DataTypeControlId);
dataType.DataTypeDefinitionId = propertyType.DataTypeId;
return dataType;
}
}
}

View File

@@ -12,6 +12,7 @@ namespace Umbraco.Web.Services
public class FileService : IFileService
{
private readonly IUnitOfWorkProvider _provider;
private readonly IUnitOfWork _unitOfWork;
public FileService() : this(new FileUnitOfWorkProvider())
{
@@ -20,6 +21,7 @@ namespace Umbraco.Web.Services
public FileService(IUnitOfWorkProvider provider)
{
_provider = provider;
_unitOfWork = provider.GetUnitOfWork();
}
/// <summary>
@@ -28,8 +30,7 @@ namespace Umbraco.Web.Services
/// <returns>An enumerable list of <see cref="Stylesheet"/> objects</returns>
public IEnumerable<Stylesheet> GetStylesheets(params string[] names)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IStylesheetRepository, Stylesheet, string>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IStylesheetRepository, Stylesheet, string>(_unitOfWork);
return repository.GetAll(names);
}
@@ -40,8 +41,7 @@ namespace Umbraco.Web.Services
/// <returns>A <see cref="Stylesheet"/> object</returns>
public Stylesheet GetStylesheetByName(string name)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IStylesheetRepository, Stylesheet, string>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IStylesheetRepository, Stylesheet, string>(_unitOfWork);
return repository.Get(name);
}
@@ -51,10 +51,9 @@ namespace Umbraco.Web.Services
/// <param name="stylesheet"><see cref="Stylesheet"/> to save</param>
public void SaveStylesheet(Stylesheet stylesheet)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IStylesheetRepository, Stylesheet, string>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IStylesheetRepository, Stylesheet, string>(_unitOfWork);
repository.AddOrUpdate(stylesheet);
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -63,11 +62,10 @@ namespace Umbraco.Web.Services
/// <param name="name">Name incl. extension of the Stylesheet to delete</param>
public void DeleteStylesheet(string name)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IStylesheetRepository, Stylesheet, string>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IStylesheetRepository, Stylesheet, string>(_unitOfWork);
var stylesheet = repository.Get(name);
repository.Delete(stylesheet);
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -86,8 +84,7 @@ namespace Umbraco.Web.Services
/// <returns>An enumerable list of <see cref="Script"/> objects</returns>
public IEnumerable<Script> GetScripts(params string[] names)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IScriptRepository, Script, string>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IScriptRepository, Script, string>(_unitOfWork);
return repository.GetAll(names);
}
@@ -98,8 +95,7 @@ namespace Umbraco.Web.Services
/// <returns>A <see cref="Script"/> object</returns>
public Script GetScriptByName(string name)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IScriptRepository, Script, string>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IScriptRepository, Script, string>(_unitOfWork);
return repository.Get(name);
}
@@ -109,10 +105,9 @@ namespace Umbraco.Web.Services
/// <param name="script"><see cref="Script"/> to save</param>
public void SaveScript(Script script)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IScriptRepository, Script, string>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IScriptRepository, Script, string>(_unitOfWork);
repository.AddOrUpdate(script);
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -121,11 +116,10 @@ namespace Umbraco.Web.Services
/// <param name="name">Name incl. extension of the Script to delete</param>
public void DeleteScript(string name)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IScriptRepository, Script, string>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IScriptRepository, Script, string>(_unitOfWork);
var script = repository.Get(name);
repository.Delete(script);
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -144,8 +138,7 @@ namespace Umbraco.Web.Services
/// <returns>An enumerable list of <see cref="Template"/> objects</returns>
public IEnumerable<Template> GetTemplates(params string[] aliases)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<ITemplateRepository, Template, string>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<ITemplateRepository, Template, string>(_unitOfWork);
return repository.GetAll(aliases);
}
@@ -156,8 +149,7 @@ namespace Umbraco.Web.Services
/// <returns>A <see cref="Template"/> object</returns>
public Template GetTemplateByAlias(string alias)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<ITemplateRepository, Template, string>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<ITemplateRepository, Template, string>(_unitOfWork);
return repository.Get(alias);
}
@@ -167,10 +159,9 @@ namespace Umbraco.Web.Services
/// <param name="template"><see cref="Template"/> to save</param>
public void SaveTemplate(Template template)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<ITemplateRepository, Template, string>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<ITemplateRepository, Template, string>(_unitOfWork);
repository.AddOrUpdate(template);
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -179,11 +170,10 @@ namespace Umbraco.Web.Services
/// <param name="alias">Alias of the <see cref="Template"/> to delete</param>
public void DeleteTemplate(string alias)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<ITemplateRepository, Template, string>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<ITemplateRepository, Template, string>(_unitOfWork);
var template = repository.Get(alias);
repository.Delete(template);
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>

View File

@@ -16,6 +16,7 @@ namespace Umbraco.Web.Services
{
private static readonly Guid RootParentId = new Guid("41c7638d-f529-4bff-853e-59a0c2fb1bde");
private readonly IUnitOfWorkProvider _provider;
private readonly IUnitOfWork _unitOfWork;
public LocalizationService() : this(new PetaPocoUnitOfWorkProvider())
{
@@ -24,6 +25,7 @@ namespace Umbraco.Web.Services
public LocalizationService(IUnitOfWorkProvider provider)
{
_provider = provider;
_unitOfWork = provider.GetUnitOfWork();
}
/// <summary>
@@ -33,8 +35,7 @@ namespace Umbraco.Web.Services
/// <returns><see cref="IDictionaryItem"/></returns>
public IDictionaryItem GetDictionaryItemById(int id)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(_unitOfWork);
return repository.Get(id);
}
@@ -45,8 +46,7 @@ namespace Umbraco.Web.Services
/// <returns><see cref="DictionaryItem"/></returns>
public IDictionaryItem GetDictionaryItemById(Guid id)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(_unitOfWork);
var query = Query<IDictionaryItem>.Builder.Where(x => x.Key == id);
var items = repository.GetByQuery(query);
@@ -61,8 +61,7 @@ namespace Umbraco.Web.Services
/// <returns><see cref="IDictionaryItem"/></returns>
public IDictionaryItem GetDictionaryItemByKey(string key)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(_unitOfWork);
var query = Query<IDictionaryItem>.Builder.Where(x => x.ItemKey == key);
var items = repository.GetByQuery(query);
@@ -77,8 +76,7 @@ namespace Umbraco.Web.Services
/// <returns>An enumerable list of <see cref="IDictionaryItem"/> objects</returns>
public IEnumerable<IDictionaryItem> GetDictionaryItemChildren(Guid parentId)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(_unitOfWork);
var query = Query<IDictionaryItem>.Builder.Where(x => x.ParentId == parentId);
var items = repository.GetByQuery(query);
@@ -92,8 +90,7 @@ namespace Umbraco.Web.Services
/// <returns>An enumerable list of <see cref="IDictionaryItem"/> objects</returns>
public IEnumerable<IDictionaryItem> GetRootDictionaryItems()
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(_unitOfWork);
var query = Query<IDictionaryItem>.Builder.Where(x => x.ParentId == RootParentId);
var items = repository.GetByQuery(query);
@@ -108,8 +105,7 @@ namespace Umbraco.Web.Services
/// <returns>True if a <see cref="IDictionaryItem"/> exists, otherwise false</returns>
public bool DictionaryItemExists(string key)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(_unitOfWork);
var query = Query<IDictionaryItem>.Builder.Where(x => x.ItemKey == key);
var items = repository.GetByQuery(query);
@@ -123,11 +119,10 @@ namespace Umbraco.Web.Services
/// <param name="dictionaryItem"><see cref="IDictionaryItem"/> to save</param>
public void Save(IDictionaryItem dictionaryItem)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(_unitOfWork);
repository.AddOrUpdate(dictionaryItem);
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -137,12 +132,11 @@ namespace Umbraco.Web.Services
/// <param name="dictionaryItem"><see cref="IDictionaryItem"/> to delete</param>
public void Delete(IDictionaryItem dictionaryItem)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IDictionaryRepository, IDictionaryItem, int>(_unitOfWork);
//NOTE: The recursive delete is done in the repository
repository.Delete(dictionaryItem);
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -152,8 +146,7 @@ namespace Umbraco.Web.Services
/// <returns><see cref="Language"/></returns>
public ILanguage GetLanguageById(int id)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<ILanguageRepository, ILanguage, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<ILanguageRepository, ILanguage, int>(_unitOfWork);
return repository.Get(id);
}
@@ -164,8 +157,7 @@ namespace Umbraco.Web.Services
/// <returns><see cref="Language"/></returns>
public ILanguage GetLanguageByCultureCode(string culture)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<ILanguageRepository, ILanguage, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<ILanguageRepository, ILanguage, int>(_unitOfWork);
var query = Query<ILanguage>.Builder.Where(x => x.CultureName == culture);
var items = repository.GetByQuery(query);
@@ -179,8 +171,7 @@ namespace Umbraco.Web.Services
/// <returns>An enumerable list of <see cref="ILanguage"/> objects</returns>
public IEnumerable<ILanguage> GetAllLanguages()
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<ILanguageRepository, ILanguage, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<ILanguageRepository, ILanguage, int>(_unitOfWork);
var languages = repository.GetAll();
return languages;
}
@@ -191,11 +182,10 @@ namespace Umbraco.Web.Services
/// <param name="language"><see cref="ILanguage"/> to save</param>
public void Save(ILanguage language)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<ILanguageRepository, ILanguage, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<ILanguageRepository, ILanguage, int>(_unitOfWork);
repository.AddOrUpdate(language);
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -204,12 +194,11 @@ namespace Umbraco.Web.Services
/// <param name="language"><see cref="ILanguage"/> to delete</param>
public void Delete(ILanguage language)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<ILanguageRepository, ILanguage, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<ILanguageRepository, ILanguage, int>(_unitOfWork);
//NOTE: There isn't any constraints in the db, so possible references aren't deleted
repository.Delete(language);
unitOfWork.Commit();
_unitOfWork.Commit();
}
}
}

View File

@@ -13,6 +13,7 @@ namespace Umbraco.Web.Services
public class MediaService : IMediaService
{
private readonly IUnitOfWorkProvider _provider;
private readonly IUnitOfWork _unitOfWork;
public MediaService() : this(new PetaPocoUnitOfWorkProvider())
{
@@ -21,6 +22,7 @@ namespace Umbraco.Web.Services
public MediaService(IUnitOfWorkProvider provider)
{
_provider = provider;
_unitOfWork = provider.GetUnitOfWork();
}
/// <summary>
@@ -30,8 +32,7 @@ namespace Umbraco.Web.Services
/// <returns><see cref="IMedia"/></returns>
public IMedia GetById(int id)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(_unitOfWork);
return repository.Get(id);
}
@@ -42,8 +43,7 @@ namespace Umbraco.Web.Services
/// <returns>An Enumerable list of <see cref="IMedia"/> objects</returns>
public IEnumerable<IMedia> GetChildren(int id)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(_unitOfWork);
var query = Query<IMedia>.Builder.Where(x => x.ParentId == id);
var medias = repository.GetByQuery(query);
@@ -58,8 +58,7 @@ namespace Umbraco.Web.Services
/// <returns>An Enumerable flat list of <see cref="IMedia"/> objects</returns>
public IEnumerable<IMedia> GetDescendants(int id)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(_unitOfWork);
var media = repository.Get(id);
@@ -76,8 +75,7 @@ namespace Umbraco.Web.Services
/// <returns>An Enumerable list of <see cref="IMedia"/> objects</returns>
public IEnumerable<IMedia> GetMediaOfMediaType(int id)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(_unitOfWork);
var query = Query<IMedia>.Builder.Where(x => x.ContentTypeId == id);
var medias = repository.GetByQuery(query);
@@ -91,8 +89,7 @@ namespace Umbraco.Web.Services
/// <returns>An Enumerable list of <see cref="IMedia"/> objects</returns>
public IEnumerable<IMedia> GetRootMedia()
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(_unitOfWork);
var query = Query<IMedia>.Builder.Where(x => x.ParentId == -1);
var medias = repository.GetByQuery(query);
@@ -106,8 +103,7 @@ namespace Umbraco.Web.Services
/// <returns>An Enumerable list of <see cref="IMedia"/> objects</returns>
public IEnumerable<IMedia> GetMediaInRecycleBin()
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(_unitOfWork);
var query = Query<IMedia>.Builder.Where(x => x.ParentId == -20);
var medias = repository.GetByQuery(query);
@@ -135,11 +131,10 @@ namespace Umbraco.Web.Services
public void MoveToRecycleBin(IMedia media, int userId)
{
//TODO If media item has children those should also be moved to the recycle bin as well
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(_unitOfWork);
((Core.Models.Media)media).ChangeTrashedState(true);
repository.AddOrUpdate(media);
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -147,8 +142,7 @@ namespace Umbraco.Web.Services
/// </summary>
public void EmptyRecycleBin()
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(_unitOfWork);
var query = Query<IMedia>.Builder.Where(x => x.ParentId == -20);
var contents = repository.GetByQuery(query);
@@ -157,7 +151,7 @@ namespace Umbraco.Web.Services
{
repository.Delete(content);
}
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -167,8 +161,7 @@ namespace Umbraco.Web.Services
/// <param name="mediaTypeId">Id of the <see cref="IMediaType"/></param>
public void DeleteMediaOfType(int mediaTypeId)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(_unitOfWork);
//NOTE What about media that has the contenttype as part of its composition?
//The ContentType has to be removed from the composition somehow as it would otherwise break
@@ -182,7 +175,7 @@ namespace Umbraco.Web.Services
repository.AddOrUpdate(content);
}
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -196,10 +189,9 @@ namespace Umbraco.Web.Services
/// <param name="userId">Id of the User deleting the Media</param>
public void Delete(IMedia media, int userId)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(_unitOfWork);
repository.Delete(media);
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -209,10 +201,9 @@ namespace Umbraco.Web.Services
/// <param name="userId">Id of the User saving the Content</param>
public void Save(IMedia media, int userId)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(_unitOfWork);
repository.AddOrUpdate(media);
unitOfWork.Commit();
_unitOfWork.Commit();
}
/// <summary>
@@ -222,13 +213,12 @@ namespace Umbraco.Web.Services
/// <param name="userId">Id of the User saving the Content</param>
public void Save(IEnumerable<IMedia> medias, int userId)
{
var unitOfWork = _provider.GetUnitOfWork();
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(unitOfWork);
var repository = RepositoryResolver.ResolveByType<IMediaRepository, IMedia, int>(_unitOfWork);
foreach (var media in medias)
{
repository.AddOrUpdate(media);
}
unitOfWork.Commit();
_unitOfWork.Commit();
}
}
}