Implements LanguageRepository U4-961 and LanguageFactory U4-984
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using Umbraco.Core.Models;
|
||||
using System.Collections.Generic;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Rdbms;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Factories
|
||||
@@ -9,14 +10,57 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
|
||||
public DictionaryItem BuildEntity(DictionaryDto dto)
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
return new DictionaryItem(dto.Parent, dto.Key)
|
||||
{
|
||||
Id = dto.PrimaryKey,
|
||||
Key = dto.Id,
|
||||
Translations = BuildTranslations(dto)
|
||||
};
|
||||
}
|
||||
|
||||
public DictionaryDto BuildDto(DictionaryItem entity)
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
return new DictionaryDto
|
||||
{
|
||||
Id = entity.Key,
|
||||
Key = entity.ItemKey,
|
||||
Parent = entity.ParentId,
|
||||
PrimaryKey = entity.Id,
|
||||
LanguageTextDtos = BuildLanguageTextDtos(entity)
|
||||
};
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private List<LanguageTextDto> BuildLanguageTextDtos(DictionaryItem entity)
|
||||
{
|
||||
var list = new List<LanguageTextDto>();
|
||||
foreach (var translation in entity.Translations)
|
||||
{
|
||||
var text = new LanguageTextDto
|
||||
{
|
||||
LanguageId = translation.Language.Id,
|
||||
UniqueId = translation.Key,
|
||||
Value = translation.Value
|
||||
};
|
||||
|
||||
if (translation.HasIdentity)
|
||||
text.PrimaryKey = translation.Id;
|
||||
|
||||
list.Add(text);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
//NOTE Should probably be a callback in the repo, so the Language obj comes from the LanguageRepository
|
||||
private IEnumerable<DictionaryTranslation> BuildTranslations(DictionaryDto dto)
|
||||
{
|
||||
var list = new List<DictionaryTranslation>();
|
||||
foreach (var textDto in dto.LanguageTextDtos)
|
||||
{
|
||||
list.Add(new DictionaryTranslation(null, textDto.Value, dto.Id) {Id = textDto.PrimaryKey});
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using Umbraco.Core.Models;
|
||||
using System.Globalization;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Rdbms;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Factories
|
||||
@@ -9,12 +10,16 @@ namespace Umbraco.Core.Persistence.Factories
|
||||
|
||||
public Language BuildEntity(LanguageDto dto)
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
return new Language(dto.IsoCode){CultureName = dto.CultureName, Id = dto.Id};
|
||||
}
|
||||
|
||||
public LanguageDto BuildDto(Language entity)
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
var dto = new LanguageDto{ CultureName = entity.CultureName, IsoCode = entity.IsoCode};
|
||||
if (entity.HasIdentity)
|
||||
dto.Id = short.Parse(entity.Id.ToString(CultureInfo.InvariantCulture));
|
||||
|
||||
return dto;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -10,12 +10,17 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
internal class DictionaryRepository : PetaPocoRepositoryBase<int, DictionaryItem>, IDictionaryRepository
|
||||
{
|
||||
public DictionaryRepository(IUnitOfWork work) : base(work)
|
||||
private ILanguageRepository _languageRepository;
|
||||
|
||||
public DictionaryRepository(IUnitOfWork work, ILanguageRepository languageRepository) : base(work)
|
||||
{
|
||||
_languageRepository = languageRepository;
|
||||
}
|
||||
|
||||
public DictionaryRepository(IUnitOfWork work, IRepositoryCacheProvider cache) : base(work, cache)
|
||||
public DictionaryRepository(IUnitOfWork work, IRepositoryCacheProvider cache, ILanguageRepository languageRepository)
|
||||
: base(work, cache)
|
||||
{
|
||||
_languageRepository = languageRepository;
|
||||
}
|
||||
|
||||
#region Overrides of RepositoryBase<int,DictionaryItem>
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Rdbms;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.Factories;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
using Umbraco.Core.Persistence.UnitOfWork;
|
||||
|
||||
@@ -21,17 +24,49 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
protected override Language PerformGet(int id)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
var sql = GetBaseQuery(false);
|
||||
sql.Append(GetBaseWhereClause(id));
|
||||
|
||||
var languageDto = Database.First<LanguageDto>(sql);
|
||||
if (languageDto == null)
|
||||
return null;
|
||||
|
||||
var factory = new LanguageFactory();
|
||||
var entity = factory.BuildEntity(languageDto);
|
||||
return entity;
|
||||
}
|
||||
|
||||
protected override IEnumerable<Language> PerformGetAll(params int[] ids)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
if (ids.Any())
|
||||
{
|
||||
foreach (var id in ids)
|
||||
{
|
||||
yield return Get(id);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var dtos = Database.Fetch<LanguageDto>("WHERE id > 0");
|
||||
foreach (var dto in dtos)
|
||||
{
|
||||
yield return Get(dto.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override IEnumerable<Language> PerformGetByQuery(IQuery<Language> query)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
var sqlClause = GetBaseQuery(false);
|
||||
var translator = new SqlTranslator<Language>(sqlClause, query);
|
||||
var sql = translator.Translate();
|
||||
|
||||
var dtos = Database.Fetch<LanguageDto>(sql);
|
||||
|
||||
foreach (var dto in dtos)
|
||||
{
|
||||
yield return Get(dto.Id);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -74,12 +109,27 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
protected override void PersistNewItem(Language entity)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
entity.AddingEntity();
|
||||
|
||||
var factory = new LanguageFactory();
|
||||
var dto = factory.BuildDto(entity);
|
||||
|
||||
var id = Convert.ToInt32(Database.Insert(dto));
|
||||
entity.Id = id;
|
||||
|
||||
entity.ResetDirtyProperties();
|
||||
}
|
||||
|
||||
protected override void PersistUpdatedItem(Language entity)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
entity.UpdatingEntity();
|
||||
|
||||
var factory = new LanguageFactory();
|
||||
var dto = factory.BuildDto(entity);
|
||||
|
||||
Database.Update(dto);
|
||||
|
||||
entity.ResetDirtyProperties();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user