Merge branch 'convert-model-factories-to-static-classes' of https://github.com/ismailmayat/Umbraco-CMS into ismailmayat-convert-model-factories-to-static-classes

This commit is contained in:
Stephan
2018-06-29 16:54:09 +02:00
31 changed files with 2575 additions and 2698 deletions
@@ -1,163 +1,162 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Entities;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
// factory for
// IContentType (document types)
// IMediaType (media types)
// IMemberType (member types)
//
internal class ContentTypeFactory
{
#region IContentType
public IContentType BuildContentTypeEntity(ContentTypeDto dto)
{
var contentType = new ContentType(dto.NodeDto.ParentId);
try
{
contentType.DisableChangeTracking();
BuildCommonEntity(contentType, dto);
// reset dirty initial properties (U4-1946)
contentType.ResetDirtyProperties(false);
return contentType;
}
finally
{
contentType.EnableChangeTracking();
}
}
#endregion
#region IMediaType
public IMediaType BuildMediaTypeEntity(ContentTypeDto dto)
{
var contentType = new MediaType(dto.NodeDto.ParentId);
try
{
contentType.DisableChangeTracking();
BuildCommonEntity(contentType, dto);
// reset dirty initial properties (U4-1946)
contentType.ResetDirtyProperties(false);
}
finally
{
contentType.EnableChangeTracking();
}
return contentType;
}
#endregion
#region IMemberType
public IMemberType BuildMemberTypeEntity(ContentTypeDto dto)
{
throw new NotImplementedException();
}
public IEnumerable<MemberTypeDto> BuildMemberTypeDtos(IMemberType entity)
{
var memberType = entity as MemberType;
if (memberType == null || memberType.PropertyTypes.Any() == false)
return Enumerable.Empty<MemberTypeDto>();
var dtos = memberType.PropertyTypes.Select(x => new MemberTypeDto
{
NodeId = entity.Id,
PropertyTypeId = x.Id,
CanEdit = memberType.MemberCanEditProperty(x.Alias),
ViewOnProfile = memberType.MemberCanViewProperty(x.Alias),
IsSensitive = memberType.IsSensitiveProperty(x.Alias)
}).ToList();
return dtos;
}
#endregion
#region Common
private static void BuildCommonEntity(ContentTypeBase entity, ContentTypeDto dto)
{
entity.Id = dto.NodeDto.NodeId;
entity.Key = dto.NodeDto.UniqueId;
entity.Alias = dto.Alias;
entity.Name = dto.NodeDto.Text;
entity.Icon = dto.Icon;
entity.Thumbnail = dto.Thumbnail;
entity.SortOrder = dto.NodeDto.SortOrder;
entity.Description = dto.Description;
entity.CreateDate = dto.NodeDto.CreateDate;
entity.Path = dto.NodeDto.Path;
entity.Level = dto.NodeDto.Level;
entity.CreatorId = dto.NodeDto.UserId ?? Constants.Security.UnknownUserId;
entity.AllowedAsRoot = dto.AllowAtRoot;
entity.IsContainer = dto.IsContainer;
entity.Trashed = dto.NodeDto.Trashed;
entity.Variations = (ContentVariation) dto.Variations;
}
public ContentTypeDto BuildContentTypeDto(IContentTypeBase entity)
{
Guid nodeObjectType;
if (entity is IContentType)
nodeObjectType = Constants.ObjectTypes.DocumentType;
else if (entity is IMediaType)
nodeObjectType = Constants.ObjectTypes.MediaType;
else if (entity is IMemberType)
nodeObjectType = Constants.ObjectTypes.MemberType;
else
throw new Exception("Invalid entity.");
var contentTypeDto = new ContentTypeDto
{
Alias = entity.Alias,
Description = entity.Description,
Icon = entity.Icon,
Thumbnail = entity.Thumbnail,
NodeId = entity.Id,
AllowAtRoot = entity.AllowedAsRoot,
IsContainer = entity.IsContainer,
Variations = (byte) entity.Variations,
NodeDto = BuildNodeDto(entity, nodeObjectType)
};
return contentTypeDto;
}
private static NodeDto BuildNodeDto(IUmbracoEntity entity, Guid nodeObjectType)
{
var nodeDto = new NodeDto
{
CreateDate = entity.CreateDate,
NodeId = entity.Id,
Level = short.Parse(entity.Level.ToString(CultureInfo.InvariantCulture)),
NodeObjectType = nodeObjectType,
ParentId = entity.ParentId,
Path = entity.Path,
SortOrder = entity.SortOrder,
Text = entity.Name,
Trashed = false,
UniqueId = entity.Key,
UserId = entity.CreatorId
};
return nodeDto;
}
#endregion
}
}
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Entities;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
// factory for
// IContentType (document types)
// IMediaType (media types)
// IMemberType (member types)
//
internal static class ContentTypeFactory
{
#region IContentType
public static IContentType BuildContentTypeEntity(ContentTypeDto dto)
{
var contentType = new ContentType(dto.NodeDto.ParentId);
try
{
contentType.DisableChangeTracking();
BuildCommonEntity(contentType, dto);
// reset dirty initial properties (U4-1946)
contentType.ResetDirtyProperties(false);
return contentType;
}
finally
{
contentType.EnableChangeTracking();
}
}
#endregion
#region IMediaType
public static IMediaType BuildMediaTypeEntity(ContentTypeDto dto)
{
var contentType = new MediaType(dto.NodeDto.ParentId);
try
{
contentType.DisableChangeTracking();
BuildCommonEntity(contentType, dto);
// reset dirty initial properties (U4-1946)
contentType.ResetDirtyProperties(false);
}
finally
{
contentType.EnableChangeTracking();
}
return contentType;
}
#endregion
#region IMemberType
public static IMemberType BuildMemberTypeEntity(ContentTypeDto dto)
{
throw new NotImplementedException();
}
public static IEnumerable<MemberTypeDto> BuildMemberTypeDtos(IMemberType entity)
{
var memberType = entity as MemberType;
if (memberType == null || memberType.PropertyTypes.Any() == false)
return Enumerable.Empty<MemberTypeDto>();
var dtos = memberType.PropertyTypes.Select(x => new MemberTypeDto
{
NodeId = entity.Id,
PropertyTypeId = x.Id,
CanEdit = memberType.MemberCanEditProperty(x.Alias),
ViewOnProfile = memberType.MemberCanViewProperty(x.Alias),
IsSensitive = memberType.IsSensitiveProperty(x.Alias)
}).ToList();
return dtos;
}
#endregion
#region Common
private static void BuildCommonEntity(ContentTypeBase entity, ContentTypeDto dto)
{
entity.Id = dto.NodeDto.NodeId;
entity.Key = dto.NodeDto.UniqueId;
entity.Alias = dto.Alias;
entity.Name = dto.NodeDto.Text;
entity.Icon = dto.Icon;
entity.Thumbnail = dto.Thumbnail;
entity.SortOrder = dto.NodeDto.SortOrder;
entity.Description = dto.Description;
entity.CreateDate = dto.NodeDto.CreateDate;
entity.Path = dto.NodeDto.Path;
entity.Level = dto.NodeDto.Level;
entity.CreatorId = dto.NodeDto.UserId ?? Constants.Security.UnknownUserId;
entity.AllowedAsRoot = dto.AllowAtRoot;
entity.IsContainer = dto.IsContainer;
entity.Trashed = dto.NodeDto.Trashed;
entity.Variations = (ContentVariation) dto.Variations;
}
public static ContentTypeDto BuildContentTypeDto(IContentTypeBase entity)
{
Guid nodeObjectType;
if (entity is IContentType)
nodeObjectType = Constants.ObjectTypes.DocumentType;
else if (entity is IMediaType)
nodeObjectType = Constants.ObjectTypes.MediaType;
else if (entity is IMemberType)
nodeObjectType = Constants.ObjectTypes.MemberType;
else
throw new Exception("Invalid entity.");
var contentTypeDto = new ContentTypeDto
{
Alias = entity.Alias,
Description = entity.Description,
Icon = entity.Icon,
Thumbnail = entity.Thumbnail,
NodeId = entity.Id,
AllowAtRoot = entity.AllowedAsRoot,
IsContainer = entity.IsContainer,
Variations = (byte) entity.Variations,
NodeDto = BuildNodeDto(entity, nodeObjectType)
};
return contentTypeDto;
}
private static NodeDto BuildNodeDto(IUmbracoEntity entity, Guid nodeObjectType)
{
var nodeDto = new NodeDto
{
CreateDate = entity.CreateDate,
NodeId = entity.Id,
Level = short.Parse(entity.Level.ToString(CultureInfo.InvariantCulture)),
NodeObjectType = nodeObjectType,
ParentId = entity.ParentId,
Path = entity.Path,
SortOrder = entity.SortOrder,
Text = entity.Name,
Trashed = false,
UniqueId = entity.Key,
UserId = entity.CreatorId
};
return nodeDto;
}
#endregion
}
}
@@ -4,11 +4,11 @@ using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal class DictionaryItemFactory
internal static class DictionaryItemFactory
{
#region Implementation of IEntityFactory<DictionaryItem,DictionaryDto>
public IDictionaryItem BuildEntity(DictionaryDto dto)
public static IDictionaryItem BuildEntity(DictionaryDto dto)
{
var item = new DictionaryItem(dto.Parent, dto.Key);
@@ -29,7 +29,7 @@ namespace Umbraco.Core.Persistence.Factories
}
}
public DictionaryDto BuildDto(IDictionaryItem entity)
public static DictionaryDto BuildDto(IDictionaryItem entity)
{
return new DictionaryDto
{
@@ -43,7 +43,7 @@ namespace Umbraco.Core.Persistence.Factories
#endregion
private List<LanguageTextDto> BuildLanguageTextDtos(IDictionaryItem entity)
private static List<LanguageTextDto> BuildLanguageTextDtos(IDictionaryItem entity)
{
var list = new List<LanguageTextDto>();
foreach (var translation in entity.Translations)
@@ -1,55 +1,48 @@
using System;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal class DictionaryTranslationFactory
{
private readonly Guid _uniqueId;
public DictionaryTranslationFactory(Guid uniqueId)
{
_uniqueId = uniqueId;
}
#region Implementation of IEntityFactory<DictionaryTranslation,LanguageTextDto>
public IDictionaryTranslation BuildEntity(LanguageTextDto dto)
{
var item = new DictionaryTranslation(dto.LanguageId, dto.Value, _uniqueId);
try
{
item.DisableChangeTracking();
item.Id = dto.PrimaryKey;
// reset dirty initial properties (U4-1946)
item.ResetDirtyProperties(false);
return item;
}
finally
{
item.EnableChangeTracking();
}
}
public LanguageTextDto BuildDto(IDictionaryTranslation entity)
{
var text = new LanguageTextDto
{
LanguageId = entity.LanguageId,
UniqueId = _uniqueId,
Value = entity.Value
};
if (entity.HasIdentity)
text.PrimaryKey = entity.Id;
return text;
}
#endregion
}
}
using System;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal static class DictionaryTranslationFactory
{
#region Implementation of IEntityFactory<DictionaryTranslation,LanguageTextDto>
public static IDictionaryTranslation BuildEntity(LanguageTextDto dto, Guid uniqueId)
{
var item = new DictionaryTranslation(dto.LanguageId, dto.Value, uniqueId);
try
{
item.DisableChangeTracking();
item.Id = dto.PrimaryKey;
// reset dirty initial properties (U4-1946)
item.ResetDirtyProperties(false);
return item;
}
finally
{
item.EnableChangeTracking();
}
}
public static LanguageTextDto BuildDto(IDictionaryTranslation entity, Guid uniqueId)
{
var text = new LanguageTextDto
{
LanguageId = entity.LanguageId,
UniqueId = uniqueId,
Value = entity.Value
};
if (entity.HasIdentity)
text.PrimaryKey = entity.Id;
return text;
}
#endregion
}
}
@@ -3,9 +3,9 @@ using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal class ExternalLoginFactory
internal static class ExternalLoginFactory
{
public IIdentityUserLogin BuildEntity(ExternalLoginDto dto)
public static IIdentityUserLogin BuildEntity(ExternalLoginDto dto)
{
var entity = new IdentityUserLogin(dto.Id, dto.LoginProvider, dto.ProviderKey, dto.UserId, dto.CreateDate);
@@ -14,7 +14,7 @@ namespace Umbraco.Core.Persistence.Factories
return entity;
}
public ExternalLoginDto BuildDto(IIdentityUserLogin entity)
public static ExternalLoginDto BuildDto(IIdentityUserLogin entity)
{
var dto = new ExternalLoginDto
{
@@ -1,26 +1,26 @@
using System.Globalization;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal class LanguageFactory
{
public ILanguage BuildEntity(LanguageDto dto)
{
var lang = new Language(dto.IsoCode) { CultureName = dto.CultureName, Id = dto.Id, IsDefaultVariantLanguage = dto.IsDefaultVariantLanguage, Mandatory = dto.Mandatory };
// reset dirty initial properties (U4-1946)
lang.ResetDirtyProperties(false);
return lang;
}
public LanguageDto BuildDto(ILanguage entity)
{
var dto = new LanguageDto { CultureName = entity.CultureName, IsoCode = entity.IsoCode, IsDefaultVariantLanguage = entity.IsDefaultVariantLanguage, Mandatory = entity.Mandatory };
if (entity.HasIdentity)
dto.Id = short.Parse(entity.Id.ToString(CultureInfo.InvariantCulture));
return dto;
}
}
}
using System.Globalization;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal static class LanguageFactory
{
public static ILanguage BuildEntity(LanguageDto dto)
{
var lang = new Language(dto.IsoCode) { CultureName = dto.CultureName, Id = dto.Id, IsDefaultVariantLanguage = dto.IsDefaultVariantLanguage, Mandatory = dto.Mandatory };
// reset dirty initial properties (U4-1946)
lang.ResetDirtyProperties(false);
return lang;
}
public static LanguageDto BuildDto(ILanguage entity)
{
var dto = new LanguageDto { CultureName = entity.CultureName, IsoCode = entity.IsoCode, IsDefaultVariantLanguage = entity.IsDefaultVariantLanguage, Mandatory = entity.Mandatory };
if (entity.HasIdentity)
dto.Id = short.Parse(entity.Id.ToString(CultureInfo.InvariantCulture));
return dto;
}
}
}
@@ -1,77 +1,77 @@
using System.Collections.Generic;
using System.Globalization;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal class MacroFactory
{
public IMacro BuildEntity(MacroDto dto)
{
var model = new Macro(dto.Id, dto.UniqueId, dto.UseInEditor, dto.RefreshRate, dto.Alias, dto.Name, dto.CacheByPage, dto.CachePersonalized, dto.DontRender, dto.MacroSource, (MacroTypes)dto.MacroType);
try
{
model.DisableChangeTracking();
foreach (var p in dto.MacroPropertyDtos.EmptyNull())
{
model.Properties.Add(new MacroProperty(p.Id, p.UniqueId, p.Alias, p.Name, p.SortOrder, p.EditorAlias));
}
// reset dirty initial properties (U4-1946)
model.ResetDirtyProperties(false);
return model;
}
finally
{
model.EnableChangeTracking();
}
}
public MacroDto BuildDto(IMacro entity)
{
var dto = new MacroDto
{
UniqueId = entity.Key,
Alias = entity.Alias,
CacheByPage = entity.CacheByPage,
CachePersonalized = entity.CacheByMember,
DontRender = entity.DontRender,
Name = entity.Name,
MacroSource = entity.MacroSource,
RefreshRate = entity.CacheDuration,
UseInEditor = entity.UseInEditor,
using System.Collections.Generic;
using System.Globalization;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal static class MacroFactory
{
public static IMacro BuildEntity(MacroDto dto)
{
var model = new Macro(dto.Id, dto.UniqueId, dto.UseInEditor, dto.RefreshRate, dto.Alias, dto.Name, dto.CacheByPage, dto.CachePersonalized, dto.DontRender, dto.MacroSource, (MacroTypes)dto.MacroType);
try
{
model.DisableChangeTracking();
foreach (var p in dto.MacroPropertyDtos.EmptyNull())
{
model.Properties.Add(new MacroProperty(p.Id, p.UniqueId, p.Alias, p.Name, p.SortOrder, p.EditorAlias));
}
// reset dirty initial properties (U4-1946)
model.ResetDirtyProperties(false);
return model;
}
finally
{
model.EnableChangeTracking();
}
}
public static MacroDto BuildDto(IMacro entity)
{
var dto = new MacroDto
{
UniqueId = entity.Key,
Alias = entity.Alias,
CacheByPage = entity.CacheByPage,
CachePersonalized = entity.CacheByMember,
DontRender = entity.DontRender,
Name = entity.Name,
MacroSource = entity.MacroSource,
RefreshRate = entity.CacheDuration,
UseInEditor = entity.UseInEditor,
MacroPropertyDtos = BuildPropertyDtos(entity),
MacroType = (int)entity.MacroType
};
if (entity.HasIdentity)
dto.Id = int.Parse(entity.Id.ToString(CultureInfo.InvariantCulture));
return dto;
}
private List<MacroPropertyDto> BuildPropertyDtos(IMacro entity)
{
var list = new List<MacroPropertyDto>();
foreach (var p in entity.Properties)
{
var text = new MacroPropertyDto
{
UniqueId = p.Key,
Alias = p.Alias,
Name = p.Name,
Macro = entity.Id,
SortOrder = (byte)p.SortOrder,
EditorAlias = p.EditorAlias,
Id = p.Id
};
list.Add(text);
}
return list;
}
}
}
MacroType = (int)entity.MacroType
};
if (entity.HasIdentity)
dto.Id = int.Parse(entity.Id.ToString(CultureInfo.InvariantCulture));
return dto;
}
private static List<MacroPropertyDto> BuildPropertyDtos(IMacro entity)
{
var list = new List<MacroPropertyDto>();
foreach (var p in entity.Properties)
{
var text = new MacroPropertyDto
{
UniqueId = p.Key,
Alias = p.Alias,
Name = p.Name,
Macro = entity.Id,
SortOrder = (byte)p.SortOrder,
EditorAlias = p.EditorAlias,
Id = p.Id
};
list.Add(text);
}
return list;
}
}
}
@@ -4,19 +4,19 @@ using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal class MemberGroupFactory
internal static class MemberGroupFactory
{
private readonly Guid _nodeObjectTypeId;
private static readonly Guid _nodeObjectTypeId;
public MemberGroupFactory()
static MemberGroupFactory()
{
_nodeObjectTypeId = Constants.ObjectTypes.MemberGroup;
}
#region Implementation of IEntityFactory<ITemplate,TemplateDto>
public IMemberGroup BuildEntity(NodeDto dto)
public static IMemberGroup BuildEntity(NodeDto dto)
{
var group = new MemberGroup();
@@ -39,7 +39,7 @@ namespace Umbraco.Core.Persistence.Factories
}
}
public NodeDto BuildDto(IMemberGroup entity)
public static NodeDto BuildDto(IMemberGroup entity)
{
var dto = new NodeDto
{
@@ -1,202 +1,194 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
using Umbraco.Core.Persistence.Repositories;
using Umbraco.Core.Persistence.Repositories.Implement;
namespace Umbraco.Core.Persistence.Factories
{
internal class MemberTypeReadOnlyFactory
{
public IMemberType BuildEntity(MemberTypeReadOnlyDto dto, out bool needsSaving)
{
var standardPropertyTypes = Constants.Conventions.Member.GetStandardPropertyTypeStubs();
needsSaving = false;
var memberType = new MemberType(dto.ParentId);
try
{
memberType.DisableChangeTracking();
memberType.Alias = dto.Alias;
memberType.AllowedAsRoot = dto.AllowAtRoot;
memberType.CreateDate = dto.CreateDate;
memberType.CreatorId = dto.UserId.HasValue ? dto.UserId.Value : 0;
memberType.Description = dto.Description;
memberType.Icon = dto.Icon;
memberType.Id = dto.NodeId;
memberType.IsContainer = dto.IsContainer;
memberType.Key = dto.UniqueId.Value;
memberType.Level = dto.Level;
memberType.Name = dto.Text;
memberType.Path = dto.Path;
memberType.SortOrder = dto.SortOrder;
memberType.Thumbnail = dto.Thumbnail;
memberType.Trashed = dto.Trashed;
memberType.UpdateDate = dto.CreateDate;
memberType.AllowedContentTypes = Enumerable.Empty<ContentTypeSort>();
var propertyTypeGroupCollection = GetPropertyTypeGroupCollection(dto, memberType, standardPropertyTypes);
memberType.PropertyGroups = propertyTypeGroupCollection;
var propertyTypes = GetPropertyTypes(dto, memberType, standardPropertyTypes);
//By Convention we add 9 stnd PropertyTypes - This is only here to support loading of types that didn't have these conventions before.
foreach (var standardPropertyType in standardPropertyTypes)
{
if (dto.PropertyTypes.Any(x => x.Alias.Equals(standardPropertyType.Key))) continue;
// beware!
// means that we can return a memberType "from database" that has some property types
// that do *not* come from the database and therefore are incomplete eg have no key,
// no id, no dataTypeDefinitionId - ouch! - better notify caller of the situation
needsSaving = true;
//Add the standard PropertyType to the current list
propertyTypes.Add(standardPropertyType.Value);
//Internal dictionary for adding "MemberCanEdit", "VisibleOnProfile", "IsSensitive" properties to each PropertyType
memberType.MemberTypePropertyTypes.Add(standardPropertyType.Key,
new MemberTypePropertyProfileAccess(false, false, false));
}
memberType.NoGroupPropertyTypes = propertyTypes;
return memberType;
}
finally
{
memberType.EnableChangeTracking();
}
}
private PropertyGroupCollection GetPropertyTypeGroupCollection(MemberTypeReadOnlyDto dto, MemberType memberType, Dictionary<string, PropertyType> standardProps)
{
// see PropertyGroupFactory, repeating code here...
var propertyGroups = new PropertyGroupCollection();
foreach (var groupDto in dto.PropertyTypeGroups.Where(x => x.Id.HasValue))
{
var group = new PropertyGroup(MemberType.IsPublishingConst);
// if the group is defined on the current member type,
// assign its identifier, else it will be zero
if (groupDto.ContentTypeNodeId == memberType.Id)
{
// note: no idea why Id is nullable here, but better check
if (groupDto.Id.HasValue == false)
throw new Exception("GroupDto.Id has no value.");
group.Id = groupDto.Id.Value;
}
group.Key = groupDto.UniqueId;
group.Name = groupDto.Text;
group.SortOrder = groupDto.SortOrder;
group.PropertyTypes = new PropertyTypeCollection(MemberType.IsPublishingConst);
//Because we are likely to have a group with no PropertyTypes we need to ensure that these are excluded
var localGroupDto = groupDto;
var typeDtos = dto.PropertyTypes.Where(x => x.Id.HasValue && x.Id > 0 && x.PropertyTypeGroupId.HasValue && x.PropertyTypeGroupId.Value == localGroupDto.Id.Value);
foreach (var typeDto in typeDtos)
{
//Internal dictionary for adding "MemberCanEdit" and "VisibleOnProfile" properties to each PropertyType
memberType.MemberTypePropertyTypes.Add(typeDto.Alias,
new MemberTypePropertyProfileAccess(typeDto.ViewOnProfile, typeDto.CanEdit, typeDto.IsSensitive));
var tempGroupDto = groupDto;
//ensures that any built-in membership properties have their correct dbtype assigned no matter
//what the underlying data type is
var propDbType = MemberTypeRepository.GetDbTypeForBuiltInProperty(
typeDto.Alias,
typeDto.DbType.EnumParse<ValueStorageType>(true),
standardProps);
var propertyType = new PropertyType(
typeDto.PropertyEditorAlias,
propDbType.Result,
//This flag tells the property type that it has an explicit dbtype and that it cannot be changed
// which is what we want for the built-in properties.
propDbType.Success,
typeDto.Alias)
{
DataTypeId = typeDto.DataTypeId,
Description = typeDto.Description,
Id = typeDto.Id.Value,
Name = typeDto.Name,
Mandatory = typeDto.Mandatory,
SortOrder = typeDto.SortOrder,
ValidationRegExp = typeDto.ValidationRegExp,
PropertyGroupId = new Lazy<int>(() => tempGroupDto.Id.Value),
CreateDate = memberType.CreateDate,
UpdateDate = memberType.UpdateDate,
Key = typeDto.UniqueId
};
// reset dirty initial properties (U4-1946)
propertyType.ResetDirtyProperties(false);
group.PropertyTypes.Add(propertyType);
}
// reset dirty initial properties (U4-1946)
group.ResetDirtyProperties(false);
propertyGroups.Add(group);
}
return propertyGroups;
}
private List<PropertyType> GetPropertyTypes(MemberTypeReadOnlyDto dto, MemberType memberType, Dictionary<string, PropertyType> standardProps)
{
//Find PropertyTypes that does not belong to a PropertyTypeGroup
var propertyTypes = new List<PropertyType>();
foreach (var typeDto in dto.PropertyTypes.Where(x => (x.PropertyTypeGroupId.HasValue == false || x.PropertyTypeGroupId.Value == 0) && x.Id.HasValue))
{
//Internal dictionary for adding "MemberCanEdit" and "VisibleOnProfile" properties to each PropertyType
memberType.MemberTypePropertyTypes.Add(typeDto.Alias,
new MemberTypePropertyProfileAccess(typeDto.ViewOnProfile, typeDto.CanEdit, typeDto.IsSensitive));
//ensures that any built-in membership properties have their correct dbtype assigned no matter
//what the underlying data type is
var propDbType = MemberTypeRepository.GetDbTypeForBuiltInProperty(
typeDto.Alias,
typeDto.DbType.EnumParse<ValueStorageType>(true),
standardProps);
var propertyType = new PropertyType(
typeDto.PropertyEditorAlias,
propDbType.Result,
//This flag tells the property type that it has an explicit dbtype and that it cannot be changed
// which is what we want for the built-in properties.
propDbType.Success,
typeDto.Alias)
{
DataTypeId = typeDto.DataTypeId,
Description = typeDto.Description,
Id = typeDto.Id.Value,
Mandatory = typeDto.Mandatory,
Name = typeDto.Name,
SortOrder = typeDto.SortOrder,
ValidationRegExp = typeDto.ValidationRegExp,
PropertyGroupId = null,
CreateDate = dto.CreateDate,
UpdateDate = dto.CreateDate,
Key = typeDto.UniqueId
};
propertyTypes.Add(propertyType);
}
return propertyTypes;
}
public MemberTypeReadOnlyDto BuildDto(IMemberType entity)
{
throw new System.NotImplementedException();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
using Umbraco.Core.Persistence.Repositories.Implement;
namespace Umbraco.Core.Persistence.Factories
{
internal static class MemberTypeReadOnlyFactory
{
public static IMemberType BuildEntity(MemberTypeReadOnlyDto dto, out bool needsSaving)
{
var standardPropertyTypes = Constants.Conventions.Member.GetStandardPropertyTypeStubs();
needsSaving = false;
var memberType = new MemberType(dto.ParentId);
try
{
memberType.DisableChangeTracking();
memberType.Alias = dto.Alias;
memberType.AllowedAsRoot = dto.AllowAtRoot;
memberType.CreateDate = dto.CreateDate;
memberType.CreatorId = dto.UserId.HasValue ? dto.UserId.Value : 0;
memberType.Description = dto.Description;
memberType.Icon = dto.Icon;
memberType.Id = dto.NodeId;
memberType.IsContainer = dto.IsContainer;
memberType.Key = dto.UniqueId.Value;
memberType.Level = dto.Level;
memberType.Name = dto.Text;
memberType.Path = dto.Path;
memberType.SortOrder = dto.SortOrder;
memberType.Thumbnail = dto.Thumbnail;
memberType.Trashed = dto.Trashed;
memberType.UpdateDate = dto.CreateDate;
memberType.AllowedContentTypes = Enumerable.Empty<ContentTypeSort>();
var propertyTypeGroupCollection = GetPropertyTypeGroupCollection(dto, memberType, standardPropertyTypes);
memberType.PropertyGroups = propertyTypeGroupCollection;
var propertyTypes = GetPropertyTypes(dto, memberType, standardPropertyTypes);
//By Convention we add 9 stnd PropertyTypes - This is only here to support loading of types that didn't have these conventions before.
foreach (var standardPropertyType in standardPropertyTypes)
{
if (dto.PropertyTypes.Any(x => x.Alias.Equals(standardPropertyType.Key))) continue;
// beware!
// means that we can return a memberType "from database" that has some property types
// that do *not* come from the database and therefore are incomplete eg have no key,
// no id, no dataTypeDefinitionId - ouch! - better notify caller of the situation
needsSaving = true;
//Add the standard PropertyType to the current list
propertyTypes.Add(standardPropertyType.Value);
//Internal dictionary for adding "MemberCanEdit", "VisibleOnProfile", "IsSensitive" properties to each PropertyType
memberType.MemberTypePropertyTypes.Add(standardPropertyType.Key,
new MemberTypePropertyProfileAccess(false, false, false));
}
memberType.NoGroupPropertyTypes = propertyTypes;
return memberType;
}
finally
{
memberType.EnableChangeTracking();
}
}
private static PropertyGroupCollection GetPropertyTypeGroupCollection(MemberTypeReadOnlyDto dto, MemberType memberType, Dictionary<string, PropertyType> standardProps)
{
// see PropertyGroupFactory, repeating code here...
var propertyGroups = new PropertyGroupCollection();
foreach (var groupDto in dto.PropertyTypeGroups.Where(x => x.Id.HasValue))
{
var group = new PropertyGroup(MemberType.IsPublishingConst);
// if the group is defined on the current member type,
// assign its identifier, else it will be zero
if (groupDto.ContentTypeNodeId == memberType.Id)
{
// note: no idea why Id is nullable here, but better check
if (groupDto.Id.HasValue == false)
throw new Exception("GroupDto.Id has no value.");
group.Id = groupDto.Id.Value;
}
group.Key = groupDto.UniqueId;
group.Name = groupDto.Text;
group.SortOrder = groupDto.SortOrder;
group.PropertyTypes = new PropertyTypeCollection(MemberType.IsPublishingConst);
//Because we are likely to have a group with no PropertyTypes we need to ensure that these are excluded
var localGroupDto = groupDto;
var typeDtos = dto.PropertyTypes.Where(x => x.Id.HasValue && x.Id > 0 && x.PropertyTypeGroupId.HasValue && x.PropertyTypeGroupId.Value == localGroupDto.Id.Value);
foreach (var typeDto in typeDtos)
{
//Internal dictionary for adding "MemberCanEdit" and "VisibleOnProfile" properties to each PropertyType
memberType.MemberTypePropertyTypes.Add(typeDto.Alias,
new MemberTypePropertyProfileAccess(typeDto.ViewOnProfile, typeDto.CanEdit, typeDto.IsSensitive));
var tempGroupDto = groupDto;
//ensures that any built-in membership properties have their correct dbtype assigned no matter
//what the underlying data type is
var propDbType = MemberTypeRepository.GetDbTypeForBuiltInProperty(
typeDto.Alias,
typeDto.DbType.EnumParse<ValueStorageType>(true),
standardProps);
var propertyType = new PropertyType(
typeDto.PropertyEditorAlias,
propDbType.Result,
//This flag tells the property type that it has an explicit dbtype and that it cannot be changed
// which is what we want for the built-in properties.
propDbType.Success,
typeDto.Alias)
{
DataTypeId = typeDto.DataTypeId,
Description = typeDto.Description,
Id = typeDto.Id.Value,
Name = typeDto.Name,
Mandatory = typeDto.Mandatory,
SortOrder = typeDto.SortOrder,
ValidationRegExp = typeDto.ValidationRegExp,
PropertyGroupId = new Lazy<int>(() => tempGroupDto.Id.Value),
CreateDate = memberType.CreateDate,
UpdateDate = memberType.UpdateDate,
Key = typeDto.UniqueId
};
// reset dirty initial properties (U4-1946)
propertyType.ResetDirtyProperties(false);
group.PropertyTypes.Add(propertyType);
}
// reset dirty initial properties (U4-1946)
group.ResetDirtyProperties(false);
propertyGroups.Add(group);
}
return propertyGroups;
}
private static List<PropertyType> GetPropertyTypes(MemberTypeReadOnlyDto dto, MemberType memberType, Dictionary<string, PropertyType> standardProps)
{
//Find PropertyTypes that does not belong to a PropertyTypeGroup
var propertyTypes = new List<PropertyType>();
foreach (var typeDto in dto.PropertyTypes.Where(x => (x.PropertyTypeGroupId.HasValue == false || x.PropertyTypeGroupId.Value == 0) && x.Id.HasValue))
{
//Internal dictionary for adding "MemberCanEdit" and "VisibleOnProfile" properties to each PropertyType
memberType.MemberTypePropertyTypes.Add(typeDto.Alias,
new MemberTypePropertyProfileAccess(typeDto.ViewOnProfile, typeDto.CanEdit, typeDto.IsSensitive));
//ensures that any built-in membership properties have their correct dbtype assigned no matter
//what the underlying data type is
var propDbType = MemberTypeRepository.GetDbTypeForBuiltInProperty(
typeDto.Alias,
typeDto.DbType.EnumParse<ValueStorageType>(true),
standardProps);
var propertyType = new PropertyType(
typeDto.PropertyEditorAlias,
propDbType.Result,
//This flag tells the property type that it has an explicit dbtype and that it cannot be changed
// which is what we want for the built-in properties.
propDbType.Success,
typeDto.Alias)
{
DataTypeId = typeDto.DataTypeId,
Description = typeDto.Description,
Id = typeDto.Id.Value,
Mandatory = typeDto.Mandatory,
Name = typeDto.Name,
SortOrder = typeDto.SortOrder,
ValidationRegExp = typeDto.ValidationRegExp,
PropertyGroupId = null,
CreateDate = dto.CreateDate,
UpdateDate = dto.CreateDate,
Key = typeDto.UniqueId
};
propertyTypes.Add(propertyType);
}
return propertyTypes;
}
}
}
@@ -1,20 +0,0 @@
using AutoMapper;
// fixme what is this?!
namespace Umbraco.Core.Persistence.Factories
{
////TODO: Implement AutoMapper for the other factories!
///// <summary>
///// This configures all of the AutoMapper supported mapping factories
///// </summary>
//internal class ModelFactoryConfiguration : MapperConfiguration
//{
// public override void ConfigureMappings(IConfiguration config)
// {
// UserSectionFactory.ConfigureMappings(config);
// }
//}
}
@@ -1,162 +1,148 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal class PropertyGroupFactory
{
private readonly int _contentTypeId;
private readonly DateTime _createDate;
private readonly DateTime _updateDate;
//a callback to create a property type which can be injected via a contructor
private readonly Func<string, ValueStorageType, string, PropertyType> _propertyTypeCtor;
public PropertyGroupFactory(int contentTypeId)
{
_contentTypeId = contentTypeId;
_propertyTypeCtor = (propertyEditorAlias, dbType, alias) => new PropertyType(propertyEditorAlias, dbType);
}
public PropertyGroupFactory(int contentTypeId, DateTime createDate, DateTime updateDate, Func<string, ValueStorageType, string, PropertyType> propertyTypeCtor)
{
_contentTypeId = contentTypeId;
_createDate = createDate;
_updateDate = updateDate;
_propertyTypeCtor = propertyTypeCtor;
}
#region Implementation of IEntityFactory<IEnumerable<PropertyGroup>,IEnumerable<TabDto>>
public IEnumerable<PropertyGroup> BuildEntity(IEnumerable<PropertyTypeGroupDto> groupDtos, bool isPublishing)
{
// groupDtos contains all the groups, those that are defined on the current
// content type, and those that are inherited from composition content types
var propertyGroups = new PropertyGroupCollection();
foreach (var groupDto in groupDtos)
{
var group = new PropertyGroup(isPublishing);
try
{
group.DisableChangeTracking();
// if the group is defined on the current content type,
// assign its identifier, else it will be zero
if (groupDto.ContentTypeNodeId == _contentTypeId)
group.Id = groupDto.Id;
group.Name = groupDto.Text;
group.SortOrder = groupDto.SortOrder;
group.PropertyTypes = new PropertyTypeCollection(isPublishing);
group.Key = groupDto.UniqueId;
//Because we are likely to have a group with no PropertyTypes we need to ensure that these are excluded
var typeDtos = groupDto.PropertyTypeDtos.Where(x => x.Id > 0);
foreach (var typeDto in typeDtos)
{
var tempGroupDto = groupDto;
var propertyType = _propertyTypeCtor(typeDto.DataTypeDto.EditorAlias,
typeDto.DataTypeDto.DbType.EnumParse<ValueStorageType>(true),
typeDto.Alias);
try
{
propertyType.DisableChangeTracking();
propertyType.Alias = typeDto.Alias;
propertyType.DataTypeId = typeDto.DataTypeId;
propertyType.Description = typeDto.Description;
propertyType.Id = typeDto.Id;
propertyType.Key = typeDto.UniqueId;
propertyType.Name = typeDto.Name;
propertyType.Mandatory = typeDto.Mandatory;
propertyType.SortOrder = typeDto.SortOrder;
propertyType.ValidationRegExp = typeDto.ValidationRegExp;
propertyType.PropertyGroupId = new Lazy<int>(() => tempGroupDto.Id);
propertyType.CreateDate = _createDate;
propertyType.UpdateDate = _updateDate;
propertyType.Variations = (ContentVariation) typeDto.Variations;
// reset dirty initial properties (U4-1946)
propertyType.ResetDirtyProperties(false);
group.PropertyTypes.Add(propertyType);
}
finally
{
propertyType.EnableChangeTracking();
}
}
// reset dirty initial properties (U4-1946)
group.ResetDirtyProperties(false);
propertyGroups.Add(group);
}
finally
{
group.EnableChangeTracking();
}
}
return propertyGroups;
}
public IEnumerable<PropertyTypeGroupDto> BuildDto(IEnumerable<PropertyGroup> entity)
{
return entity.Select(BuildGroupDto).ToList();
}
#endregion
internal PropertyTypeGroupDto BuildGroupDto(PropertyGroup propertyGroup)
{
var dto = new PropertyTypeGroupDto
{
ContentTypeNodeId = _contentTypeId,
SortOrder = propertyGroup.SortOrder,
Text = propertyGroup.Name,
UniqueId = propertyGroup.Key
};
if (propertyGroup.HasIdentity)
dto.Id = propertyGroup.Id;
dto.PropertyTypeDtos = propertyGroup.PropertyTypes.Select(propertyType => BuildPropertyTypeDto(propertyGroup.Id, propertyType)).ToList();
return dto;
}
internal PropertyTypeDto BuildPropertyTypeDto(int tabId, PropertyType propertyType)
{
var propertyTypeDto = new PropertyTypeDto
{
Alias = propertyType.Alias,
ContentTypeId = _contentTypeId,
DataTypeId = propertyType.DataTypeId,
Description = propertyType.Description,
Mandatory = propertyType.Mandatory,
Name = propertyType.Name,
SortOrder = propertyType.SortOrder,
ValidationRegExp = propertyType.ValidationRegExp,
UniqueId = propertyType.Key,
Variations = (byte) propertyType.Variations
};
if (tabId != default)
{
propertyTypeDto.PropertyTypeGroupId = tabId;
}
else
{
propertyTypeDto.PropertyTypeGroupId = null;
}
if (propertyType.HasIdentity)
propertyTypeDto.Id = propertyType.Id;
return propertyTypeDto;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal static class PropertyGroupFactory
{
#region Implementation of IEntityFactory<IEnumerable<PropertyGroup>,IEnumerable<TabDto>>
public static IEnumerable<PropertyGroup> BuildEntity(IEnumerable<PropertyTypeGroupDto> groupDtos,
bool isPublishing,
int contentTypeId,
DateTime createDate,
DateTime updateDate,
Func<string, ValueStorageType, string, PropertyType> propertyTypeCtor)
{
// groupDtos contains all the groups, those that are defined on the current
// content type, and those that are inherited from composition content types
var propertyGroups = new PropertyGroupCollection();
foreach (var groupDto in groupDtos)
{
var group = new PropertyGroup(isPublishing);
try
{
group.DisableChangeTracking();
// if the group is defined on the current content type,
// assign its identifier, else it will be zero
if (groupDto.ContentTypeNodeId == contentTypeId)
group.Id = groupDto.Id;
group.Name = groupDto.Text;
group.SortOrder = groupDto.SortOrder;
group.PropertyTypes = new PropertyTypeCollection(isPublishing);
group.Key = groupDto.UniqueId;
//Because we are likely to have a group with no PropertyTypes we need to ensure that these are excluded
var typeDtos = groupDto.PropertyTypeDtos.Where(x => x.Id > 0);
foreach (var typeDto in typeDtos)
{
var tempGroupDto = groupDto;
var propertyType = propertyTypeCtor(typeDto.DataTypeDto.EditorAlias,
typeDto.DataTypeDto.DbType.EnumParse<ValueStorageType>(true),
typeDto.Alias);
try
{
propertyType.DisableChangeTracking();
propertyType.Alias = typeDto.Alias;
propertyType.DataTypeId = typeDto.DataTypeId;
propertyType.Description = typeDto.Description;
propertyType.Id = typeDto.Id;
propertyType.Key = typeDto.UniqueId;
propertyType.Name = typeDto.Name;
propertyType.Mandatory = typeDto.Mandatory;
propertyType.SortOrder = typeDto.SortOrder;
propertyType.ValidationRegExp = typeDto.ValidationRegExp;
propertyType.PropertyGroupId = new Lazy<int>(() => tempGroupDto.Id);
propertyType.CreateDate = createDate;
propertyType.UpdateDate = updateDate;
propertyType.Variations = (ContentVariation)typeDto.Variations;
// reset dirty initial properties (U4-1946)
propertyType.ResetDirtyProperties(false);
group.PropertyTypes.Add(propertyType);
}
finally
{
propertyType.EnableChangeTracking();
}
}
// reset dirty initial properties (U4-1946)
group.ResetDirtyProperties(false);
propertyGroups.Add(group);
}
finally
{
group.EnableChangeTracking();
}
}
return propertyGroups;
}
public static IEnumerable<PropertyTypeGroupDto> BuildDto(IEnumerable<PropertyGroup> entity)
{
return entity.Select(BuildGroupDto).ToList();
}
#endregion
internal static PropertyTypeGroupDto BuildGroupDto(PropertyGroup propertyGroup, int contentTypeId)
{
var dto = new PropertyTypeGroupDto
{
ContentTypeNodeId = contentTypeId,
SortOrder = propertyGroup.SortOrder,
Text = propertyGroup.Name,
UniqueId = propertyGroup.Key
};
if (propertyGroup.HasIdentity)
dto.Id = propertyGroup.Id;
dto.PropertyTypeDtos = propertyGroup.PropertyTypes.Select(propertyType => BuildPropertyTypeDto(propertyGroup.Id, propertyType, contentTypeId)).ToList();
return dto;
}
internal static PropertyTypeDto BuildPropertyTypeDto(int tabId, PropertyType propertyType, int contentTypeId)
{
var propertyTypeDto = new PropertyTypeDto
{
Alias = propertyType.Alias,
ContentTypeId = contentTypeId,
DataTypeId = propertyType.DataTypeId,
Description = propertyType.Description,
Mandatory = propertyType.Mandatory,
Name = propertyType.Name,
SortOrder = propertyType.SortOrder,
ValidationRegExp = propertyType.ValidationRegExp,
UniqueId = propertyType.Key,
Variations = (byte)propertyType.Variations
};
if (tabId != default)
{
propertyTypeDto.PropertyTypeGroupId = tabId;
}
else
{
propertyTypeDto.PropertyTypeGroupId = null;
}
if (propertyType.HasIdentity)
propertyTypeDto.Id = propertyType.Id;
return propertyTypeDto;
}
}
}
@@ -1,13 +1,12 @@
using System.Collections.Generic;
using System.Linq;
using System.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal class PublicAccessEntryFactory
internal static class PublicAccessEntryFactory
{
public PublicAccessEntry BuildEntity(AccessDto dto)
public static PublicAccessEntry BuildEntity(AccessDto dto)
{
var entity = new PublicAccessEntry(dto.Id, dto.NodeId, dto.LoginNodeId, dto.NoAccessNodeId,
dto.Rules.Select(x => new PublicAccessRule(x.Id, x.AccessId)
@@ -27,7 +26,7 @@ namespace Umbraco.Core.Persistence.Factories
return entity;
}
public AccessDto BuildDto(PublicAccessEntry entity)
public static AccessDto BuildDto(PublicAccessEntry entity)
{
var dto = new AccessDto
{
@@ -1,54 +1,54 @@
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal class RelationTypeFactory
{
#region Implementation of IEntityFactory<RelationType,RelationTypeDto>
public IRelationType BuildEntity(RelationTypeDto dto)
{
var entity = new RelationType(dto.ChildObjectType, dto.ParentObjectType, dto.Alias);
try
{
entity.DisableChangeTracking();
entity.Id = dto.Id;
entity.Key = dto.UniqueId;
entity.IsBidirectional = dto.Dual;
entity.Name = dto.Name;
// reset dirty initial properties (U4-1946)
entity.ResetDirtyProperties(false);
return entity;
}
finally
{
entity.EnableChangeTracking();
}
}
public RelationTypeDto BuildDto(IRelationType entity)
{
var dto = new RelationTypeDto
{
Alias = entity.Alias,
ChildObjectType = entity.ChildObjectType,
Dual = entity.IsBidirectional,
Name = entity.Name,
ParentObjectType = entity.ParentObjectType,
UniqueId = entity.Key
};
if (entity.HasIdentity)
{
dto.Id = entity.Id;
}
return dto;
}
#endregion
}
}
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal static class RelationTypeFactory
{
#region Implementation of IEntityFactory<RelationType,RelationTypeDto>
public static IRelationType BuildEntity(RelationTypeDto dto)
{
var entity = new RelationType(dto.ChildObjectType, dto.ParentObjectType, dto.Alias);
try
{
entity.DisableChangeTracking();
entity.Id = dto.Id;
entity.Key = dto.UniqueId;
entity.IsBidirectional = dto.Dual;
entity.Name = dto.Name;
// reset dirty initial properties (U4-1946)
entity.ResetDirtyProperties(false);
return entity;
}
finally
{
entity.EnableChangeTracking();
}
}
public static RelationTypeDto BuildDto(IRelationType entity)
{
var dto = new RelationTypeDto
{
Alias = entity.Alias,
ChildObjectType = entity.ChildObjectType,
Dual = entity.IsBidirectional,
Name = entity.Name,
ParentObjectType = entity.ParentObjectType,
UniqueId = entity.Key
};
if (entity.HasIdentity)
{
dto.Id = entity.Id;
}
return dto;
}
#endregion
}
}
@@ -1,34 +1,34 @@
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal class ServerRegistrationFactory
{
public ServerRegistration BuildEntity(ServerRegistrationDto dto)
{
var model = new ServerRegistration(dto.Id, dto.ServerAddress, dto.ServerIdentity, dto.DateRegistered, dto.DateAccessed, dto.IsActive, dto.IsMaster);
// reset dirty initial properties (U4-1946)
model.ResetDirtyProperties(false);
return model;
}
public ServerRegistrationDto BuildDto(IServerRegistration entity)
{
var dto = new ServerRegistrationDto
{
ServerAddress = entity.ServerAddress,
DateRegistered = entity.CreateDate,
IsActive = entity.IsActive,
IsMaster = ((ServerRegistration) entity).IsMaster,
DateAccessed = entity.UpdateDate,
ServerIdentity = entity.ServerIdentity
};
if (entity.HasIdentity)
dto.Id = entity.Id;
return dto;
}
}
}
using Umbraco.Core.Models;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal static class ServerRegistrationFactory
{
public static ServerRegistration BuildEntity(ServerRegistrationDto dto)
{
var model = new ServerRegistration(dto.Id, dto.ServerAddress, dto.ServerIdentity, dto.DateRegistered, dto.DateAccessed, dto.IsActive, dto.IsMaster);
// reset dirty initial properties (U4-1946)
model.ResetDirtyProperties(false);
return model;
}
public static ServerRegistrationDto BuildDto(IServerRegistration entity)
{
var dto = new ServerRegistrationDto
{
ServerAddress = entity.ServerAddress,
DateRegistered = entity.CreateDate,
IsActive = entity.IsActive,
IsMaster = ((ServerRegistration) entity).IsMaster,
DateAccessed = entity.UpdateDate,
ServerIdentity = entity.ServerIdentity
};
if (entity.HasIdentity)
dto.Id = entity.Id;
return dto;
}
}
}
@@ -6,9 +6,9 @@ namespace Umbraco.Core.Persistence.Factories
/// <summary>
/// Creates the model mappings for Tasks
/// </summary>
internal class TaskFactory
internal static class TaskFactory
{
public Task BuildEntity(TaskDto dto)
public static Task BuildEntity(TaskDto dto)
{
var entity = new Task(new TaskType(dto.TaskTypeDto.Alias) { Id = dto.TaskTypeDto.Id });
@@ -34,7 +34,7 @@ namespace Umbraco.Core.Persistence.Factories
}
}
public TaskDto BuildDto(Task entity)
public static TaskDto BuildDto(Task entity)
{
var dto = new TaskDto
{
@@ -3,9 +3,9 @@ using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal class TaskTypeFactory
internal static class TaskTypeFactory
{
public TaskType BuildEntity(TaskTypeDto dto)
public static TaskType BuildEntity(TaskTypeDto dto)
{
var entity = new TaskType(dto.Alias) {Id = dto.Id};
// reset dirty initial properties (U4-1946)
@@ -13,7 +13,7 @@ namespace Umbraco.Core.Persistence.Factories
return entity;
}
public TaskTypeDto BuildDto(TaskType entity)
public static TaskTypeDto BuildDto(TaskType entity)
{
var dto = new TaskTypeDto
{
@@ -1,107 +1,86 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Umbraco.Core.Configuration.UmbracoSettings;
using Umbraco.Core.IO;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Entities;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal class TemplateFactory
{
private readonly int _primaryKey;
private readonly Guid _nodeObjectTypeId;
public TemplateFactory()
{
}
public TemplateFactory(Guid nodeObjectTypeId)
{
_nodeObjectTypeId = nodeObjectTypeId;
}
public TemplateFactory(int primaryKey, Guid nodeObjectTypeId)
{
_primaryKey = primaryKey;
_nodeObjectTypeId = nodeObjectTypeId;
}
#region Implementation of IEntityFactory<ITemplate,TemplateDto>
public Template BuildEntity(TemplateDto dto, IEnumerable<IUmbracoEntity> childDefinitions, Func<File, string> getFileContent)
{
var template = new Template(dto.NodeDto.Text, dto.Alias, getFileContent);
try
{
template.DisableChangeTracking();
template.CreateDate = dto.NodeDto.CreateDate;
template.Id = dto.NodeId;
template.Key = dto.NodeDto.UniqueId;
template.Path = dto.NodeDto.Path;
template.IsMasterTemplate = childDefinitions.Any(x => x.ParentId == dto.NodeId);
if (dto.NodeDto.ParentId > 0)
template.MasterTemplateId = new Lazy<int>(() => dto.NodeDto.ParentId);
// reset dirty initial properties (U4-1946)
template.ResetDirtyProperties(false);
return template;
}
finally
{
template.EnableChangeTracking();
}
}
public TemplateDto BuildDto(Template entity)
{
var dto = new TemplateDto
{
Alias = entity.Alias,
Design = entity.Content ?? string.Empty,
NodeDto = BuildNodeDto(entity)
};
if (entity.MasterTemplateId != null && entity.MasterTemplateId.Value > 0)
{
dto.NodeDto.ParentId = entity.MasterTemplateId.Value;
}
if (entity.HasIdentity)
{
dto.NodeId = entity.Id;
dto.PrimaryKey = _primaryKey;
}
return dto;
}
#endregion
private NodeDto BuildNodeDto(Template entity)
{
var nodeDto = new NodeDto
{
CreateDate = entity.CreateDate,
NodeId = entity.Id,
Level = 1,
NodeObjectType = _nodeObjectTypeId,
ParentId = entity.MasterTemplateId.Value,
Path = entity.Path,
Text = entity.Name,
Trashed = false,
UniqueId = entity.Key
};
return nodeDto;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Entities;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal static class TemplateFactory
{
#region Implementation of IEntityFactory<ITemplate,TemplateDto>
public static Template BuildEntity(TemplateDto dto, IEnumerable<IUmbracoEntity> childDefinitions, Func<File, string> getFileContent)
{
var template = new Template(dto.NodeDto.Text, dto.Alias, getFileContent);
try
{
template.DisableChangeTracking();
template.CreateDate = dto.NodeDto.CreateDate;
template.Id = dto.NodeId;
template.Key = dto.NodeDto.UniqueId;
template.Path = dto.NodeDto.Path;
template.IsMasterTemplate = childDefinitions.Any(x => x.ParentId == dto.NodeId);
if (dto.NodeDto.ParentId > 0)
template.MasterTemplateId = new Lazy<int>(() => dto.NodeDto.ParentId);
// reset dirty initial properties (U4-1946)
template.ResetDirtyProperties(false);
return template;
}
finally
{
template.EnableChangeTracking();
}
}
public static TemplateDto BuildDto(Template entity, Guid? nodeObjectTypeId,int primaryKey)
{
var dto = new TemplateDto
{
Alias = entity.Alias,
Design = entity.Content ?? string.Empty,
NodeDto = BuildNodeDto(entity, nodeObjectTypeId)
};
if (entity.MasterTemplateId != null && entity.MasterTemplateId.Value > 0)
{
dto.NodeDto.ParentId = entity.MasterTemplateId.Value;
}
if (entity.HasIdentity)
{
dto.NodeId = entity.Id;
dto.PrimaryKey = primaryKey;
}
return dto;
}
#endregion
private static NodeDto BuildNodeDto(Template entity,Guid? nodeObjectTypeId)
{
var nodeDto = new NodeDto
{
CreateDate = entity.CreateDate,
NodeId = entity.Id,
Level = 1,
NodeObjectType = nodeObjectTypeId,
ParentId = entity.MasterTemplateId.Value,
Path = entity.Path,
Text = entity.Name,
Trashed = false,
UniqueId = entity.Key
};
return nodeDto;
}
}
}
@@ -1,104 +1,102 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal static class UserFactory
{
public static IUser BuildEntity(UserDto dto)
{
var guidId = dto.Id.ToGuid();
var user = new User(dto.Id, dto.UserName, dto.Email, dto.Login,dto.Password,
dto.UserGroupDtos.Select(x => x.ToReadOnlyGroup()).ToArray(),
dto.UserStartNodeDtos.Where(x => x.StartNodeType == (int)UserStartNodeDto.StartNodeTypeValue.Content).Select(x => x.StartNode).ToArray(),
dto.UserStartNodeDtos.Where(x => x.StartNodeType == (int)UserStartNodeDto.StartNodeTypeValue.Media).Select(x => x.StartNode).ToArray());
try
{
user.DisableChangeTracking();
user.Key = guidId;
user.IsLockedOut = dto.NoConsole;
user.IsApproved = dto.Disabled == false;
user.Language = dto.UserLanguage;
user.SecurityStamp = dto.SecurityStampToken;
user.FailedPasswordAttempts = dto.FailedLoginAttempts ?? 0;
user.LastLockoutDate = dto.LastLockoutDate ?? DateTime.MinValue;
user.LastLoginDate = dto.LastLoginDate ?? DateTime.MinValue;
user.LastPasswordChangeDate = dto.LastPasswordChangeDate ?? DateTime.MinValue;
user.CreateDate = dto.CreateDate;
user.UpdateDate = dto.UpdateDate;
user.Avatar = dto.Avatar;
user.EmailConfirmedDate = dto.EmailConfirmedDate;
user.InvitedDate = dto.InvitedDate;
user.TourData = dto.TourData;
// reset dirty initial properties (U4-1946)
user.ResetDirtyProperties(false);
return user;
}
finally
{
user.EnableChangeTracking();
}
}
public static UserDto BuildDto(IUser entity)
{
var dto = new UserDto
{
Disabled = entity.IsApproved == false,
Email = entity.Email,
Login = entity.Username,
NoConsole = entity.IsLockedOut,
Password = entity.RawPasswordValue,
UserLanguage = entity.Language,
UserName = entity.Name,
SecurityStampToken = entity.SecurityStamp,
FailedLoginAttempts = entity.FailedPasswordAttempts,
LastLockoutDate = entity.LastLockoutDate == DateTime.MinValue ? (DateTime?)null : entity.LastLockoutDate,
LastLoginDate = entity.LastLoginDate == DateTime.MinValue ? (DateTime?)null : entity.LastLoginDate,
LastPasswordChangeDate = entity.LastPasswordChangeDate == DateTime.MinValue ? (DateTime?)null : entity.LastPasswordChangeDate,
CreateDate = entity.CreateDate,
UpdateDate = entity.UpdateDate,
Avatar = entity.Avatar,
EmailConfirmedDate = entity.EmailConfirmedDate,
using System;
using System.Linq;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.Persistence.Dtos;
namespace Umbraco.Core.Persistence.Factories
{
internal static class UserFactory
{
public static IUser BuildEntity(UserDto dto)
{
var guidId = dto.Id.ToGuid();
var user = new User(dto.Id, dto.UserName, dto.Email, dto.Login,dto.Password,
dto.UserGroupDtos.Select(x => x.ToReadOnlyGroup()).ToArray(),
dto.UserStartNodeDtos.Where(x => x.StartNodeType == (int)UserStartNodeDto.StartNodeTypeValue.Content).Select(x => x.StartNode).ToArray(),
dto.UserStartNodeDtos.Where(x => x.StartNodeType == (int)UserStartNodeDto.StartNodeTypeValue.Media).Select(x => x.StartNode).ToArray());
try
{
user.DisableChangeTracking();
user.Key = guidId;
user.IsLockedOut = dto.NoConsole;
user.IsApproved = dto.Disabled == false;
user.Language = dto.UserLanguage;
user.SecurityStamp = dto.SecurityStampToken;
user.FailedPasswordAttempts = dto.FailedLoginAttempts ?? 0;
user.LastLockoutDate = dto.LastLockoutDate ?? DateTime.MinValue;
user.LastLoginDate = dto.LastLoginDate ?? DateTime.MinValue;
user.LastPasswordChangeDate = dto.LastPasswordChangeDate ?? DateTime.MinValue;
user.CreateDate = dto.CreateDate;
user.UpdateDate = dto.UpdateDate;
user.Avatar = dto.Avatar;
user.EmailConfirmedDate = dto.EmailConfirmedDate;
user.InvitedDate = dto.InvitedDate;
user.TourData = dto.TourData;
// reset dirty initial properties (U4-1946)
user.ResetDirtyProperties(false);
return user;
}
finally
{
user.EnableChangeTracking();
}
}
public static UserDto BuildDto(IUser entity)
{
var dto = new UserDto
{
Disabled = entity.IsApproved == false,
Email = entity.Email,
Login = entity.Username,
NoConsole = entity.IsLockedOut,
Password = entity.RawPasswordValue,
UserLanguage = entity.Language,
UserName = entity.Name,
SecurityStampToken = entity.SecurityStamp,
FailedLoginAttempts = entity.FailedPasswordAttempts,
LastLockoutDate = entity.LastLockoutDate == DateTime.MinValue ? (DateTime?)null : entity.LastLockoutDate,
LastLoginDate = entity.LastLoginDate == DateTime.MinValue ? (DateTime?)null : entity.LastLoginDate,
LastPasswordChangeDate = entity.LastPasswordChangeDate == DateTime.MinValue ? (DateTime?)null : entity.LastPasswordChangeDate,
CreateDate = entity.CreateDate,
UpdateDate = entity.UpdateDate,
Avatar = entity.Avatar,
EmailConfirmedDate = entity.EmailConfirmedDate,
InvitedDate = entity.InvitedDate,
TourData = entity.TourData
};
foreach (var startNodeId in entity.StartContentIds)
{
dto.UserStartNodeDtos.Add(new UserStartNodeDto
{
StartNode = startNodeId,
StartNodeType = (int)UserStartNodeDto.StartNodeTypeValue.Content,
UserId = entity.Id
});
}
foreach (var startNodeId in entity.StartMediaIds)
{
dto.UserStartNodeDtos.Add(new UserStartNodeDto
{
StartNode = startNodeId,
StartNodeType = (int)UserStartNodeDto.StartNodeTypeValue.Media,
UserId = entity.Id
});
}
if (entity.HasIdentity)
{
dto.Id = entity.Id.SafeCast<int>();
}
return dto;
}
}
}
TourData = entity.TourData
};
foreach (var startNodeId in entity.StartContentIds)
{
dto.UserStartNodeDtos.Add(new UserStartNodeDto
{
StartNode = startNodeId,
StartNodeType = (int)UserStartNodeDto.StartNodeTypeValue.Content,
UserId = entity.Id
});
}
foreach (var startNodeId in entity.StartMediaIds)
{
dto.UserStartNodeDtos.Add(new UserStartNodeDto
{
StartNode = startNodeId,
StartNodeType = (int)UserStartNodeDto.StartNodeTypeValue.Media,
UserId = entity.Id
});
}
if (entity.HasIdentity)
{
dto.Id = entity.Id.SafeCast<int>();
}
return dto;
}
}
}
@@ -119,8 +119,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected void PersistNewBaseContentType(IContentTypeComposition entity)
{
var factory = new ContentTypeFactory();
var dto = factory.BuildContentTypeDto(entity);
var dto = ContentTypeFactory.BuildContentTypeDto(entity);
//Cannot add a duplicate content type type
var exists = Database.ExecuteScalar<int>(@"SELECT COUNT(*) FROM cmsContentType
@@ -191,13 +191,12 @@ AND umbracoNode.nodeObjectType = @objectType",
SortOrder = allowedContentType.SortOrder
});
}
var propertyFactory = new PropertyGroupFactory(nodeDto.NodeId);
//Insert Tabs
foreach (var propertyGroup in entity.PropertyGroups)
{
var tabDto = propertyFactory.BuildGroupDto(propertyGroup);
var tabDto = PropertyGroupFactory.BuildGroupDto(propertyGroup, nodeDto.NodeId);
var primaryKey = Convert.ToInt32(Database.Insert(tabDto));
propertyGroup.Id = primaryKey;//Set Id on PropertyGroup
@@ -222,7 +221,7 @@ AND umbracoNode.nodeObjectType = @objectType",
{
AssignDataTypeFromPropertyEditor(propertyType);
}
var propertyTypeDto = propertyFactory.BuildPropertyTypeDto(tabId, propertyType);
var propertyTypeDto = PropertyGroupFactory.BuildPropertyTypeDto(tabId, propertyType, nodeDto.NodeId);
int typePrimaryKey = Convert.ToInt32(Database.Insert(propertyTypeDto));
propertyType.Id = typePrimaryKey; //Set Id on new PropertyType
@@ -235,8 +234,8 @@ AND umbracoNode.nodeObjectType = @objectType",
protected void PersistUpdatedBaseContentType(IContentTypeComposition entity)
{
var factory = new ContentTypeFactory();
var dto = factory.BuildContentTypeDto(entity);
var dto = ContentTypeFactory.BuildContentTypeDto(entity);
// ensure the alias is not used already
var exists = Database.ExecuteScalar<int>(@"SELECT COUNT(*) FROM cmsContentType
@@ -384,13 +383,12 @@ AND umbracoNode.id <> @id",
Database.Delete<PropertyTypeGroupDto>("WHERE id IN (@ids)", new { ids = groupsToDelete });
}
}
var propertyGroupFactory = new PropertyGroupFactory(entity.Id);
// insert or update groups, assign properties
foreach (var propertyGroup in entity.PropertyGroups)
{
// insert or update group
var groupDto = propertyGroupFactory.BuildGroupDto(propertyGroup);
var groupDto = PropertyGroupFactory.BuildGroupDto(propertyGroup,entity.Id);
var groupId = propertyGroup.HasIdentity
? Database.Update(groupDto)
: Convert.ToInt32(Database.Insert(groupDto));
@@ -419,7 +417,7 @@ AND umbracoNode.id <> @id",
ValidateAlias(propertyType);
// insert or update property
var propertyTypeDto = propertyGroupFactory.BuildPropertyTypeDto(groupId, propertyType);
var propertyTypeDto = PropertyGroupFactory.BuildPropertyTypeDto(groupId, propertyType, entity.Id);
var typeId = propertyType.HasIdentity
? Database.Update(propertyTypeDto)
: Convert.ToInt32(Database.Insert(propertyTypeDto));
@@ -480,8 +478,8 @@ AND umbracoNode.id <> @id",
var dtos = Database
.Fetch<PropertyTypeGroupDto>(sql);
var propertyGroupFactory = new PropertyGroupFactory(id, createDate, updateDate, CreatePropertyType);
var propertyGroups = propertyGroupFactory.BuildEntity(dtos, IsPublishing);
var propertyGroups = PropertyGroupFactory.BuildEntity(dtos, IsPublishing, id, createDate, updateDate,CreatePropertyType);
return new PropertyGroupCollection(propertyGroups);
}
@@ -870,10 +868,8 @@ AND umbracoNode.id <> @id",
}
};
//now create the content type object
var factory = new ContentTypeFactory();
var mediaType = factory.BuildMediaTypeEntity(contentTypeDto);
//now create the content type object;
var mediaType = ContentTypeFactory.BuildMediaTypeEntity(contentTypeDto);
//map the allowed content types
mediaType.AllowedContentTypes = currAllowedContentTypes;
@@ -1052,9 +1048,7 @@ AND umbracoNode.id <> @id",
};
//now create the content type object
var factory = new ContentTypeFactory();
var contentType = factory.BuildContentTypeEntity(dtDto.ContentTypeDto);
var contentType = ContentTypeFactory.BuildContentTypeEntity(dtDto.ContentTypeDto);
// NOTE
// that was done by the factory but makes little sense, moved here, so
@@ -130,17 +130,15 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
foreach (var translation in dictionaryItem.Translations)
translation.Value = translation.Value.ToValidXmlString();
var factory = new DictionaryItemFactory();
var dto = factory.BuildDto(dictionaryItem);
var dto = DictionaryItemFactory.BuildDto(dictionaryItem);
var id = Convert.ToInt32(Database.Insert(dto));
dictionaryItem.Id = id;
var translationFactory = new DictionaryTranslationFactory(dictionaryItem.Key);
foreach (var translation in dictionaryItem.Translations)
{
var textDto = translationFactory.BuildDto(translation);
var textDto = DictionaryTranslationFactory.BuildDto(translation, dictionaryItem.Key);
translation.Id = Convert.ToInt32(Database.Insert(textDto));
translation.Key = dictionaryItem.Key;
}
@@ -154,16 +152,14 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
foreach (var translation in entity.Translations)
translation.Value = translation.Value.ToValidXmlString();
var factory = new DictionaryItemFactory();
var dto = factory.BuildDto(entity);
var dto = DictionaryItemFactory.BuildDto(entity);
Database.Update(dto);
var translationFactory = new DictionaryTranslationFactory(entity.Key);
foreach (var translation in entity.Translations)
{
var textDto = translationFactory.BuildDto(translation);
var textDto = DictionaryTranslationFactory.BuildDto(translation, entity.Key);
if (translation.HasIdentity)
{
Database.Update(textDto);
@@ -216,13 +212,11 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected IDictionaryItem ConvertFromDto(DictionaryDto dto)
{
var factory = new DictionaryItemFactory();
var entity = factory.BuildEntity(dto);
var entity = DictionaryItemFactory.BuildEntity(dto);
var f = new DictionaryTranslationFactory(dto.UniqueId);
entity.Translations = dto.LanguageTextDtos.EmptyNull()
.Where(x => x.LanguageId > 0)
.Select(x => f.BuildEntity(x))
.Select(x => DictionaryTranslationFactory.BuildEntity(x, dto.UniqueId))
.ToList();
return entity;
@@ -52,8 +52,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
if (dto == null)
return null;
var factory = new ExternalLoginFactory();
var entity = factory.BuildEntity(dto);
var entity = ExternalLoginFactory.BuildEntity(dto);
// reset dirty initial properties (U4-1946)
entity.ResetDirtyProperties(false);
@@ -85,8 +84,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
private IEnumerable<IIdentityUserLogin> ConvertFromDtos(IEnumerable<ExternalLoginDto> dtos)
{
var factory = new ExternalLoginFactory();
foreach (var entity in dtos.Select(factory.BuildEntity))
foreach (var entity in dtos.Select(ExternalLoginFactory.BuildEntity))
{
// reset dirty initial properties (U4-1946)
((BeingDirtyBase)entity).ResetDirtyProperties(false);
@@ -143,8 +141,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
((EntityBase)entity).AddingEntity();
var factory = new ExternalLoginFactory();
var dto = factory.BuildDto(entity);
var dto = ExternalLoginFactory.BuildDto(entity);
var id = Convert.ToInt32(Database.Insert(dto));
entity.Id = id;
@@ -155,9 +152,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override void PersistUpdatedItem(IIdentityUserLogin entity)
{
((EntityBase)entity).UpdatingEntity();
var factory = new ExternalLoginFactory();
var dto = factory.BuildDto(entity);
var dto = ExternalLoginFactory.BuildDto(entity);
Database.Update(dto);
@@ -139,8 +139,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
IsolatedCache.ClearAllCache();
}
var factory = new LanguageFactory();
var dto = factory.BuildDto(entity);
;
var dto = LanguageFactory.BuildDto(entity);
var id = Convert.ToInt32(Database.Insert(dto));
entity.Id = id;
@@ -163,9 +163,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
//We need to clear the whole cache since all languages will be updated
IsolatedCache.ClearAllCache();
}
var factory = new LanguageFactory();
var dto = factory.BuildDto(entity);
var dto = LanguageFactory.BuildDto(entity);
Database.Update(dto);
@@ -197,8 +196,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected ILanguage ConvertFromDto(LanguageDto dto)
{
var factory = new LanguageFactory();
var entity = factory.BuildEntity(dto);
var entity = LanguageFactory.BuildEntity(dto);
return entity;
}
@@ -40,9 +40,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
if (macroDto == null)
return null;
var factory = new MacroFactory();
var entity = factory.BuildEntity(macroDto);
var entity = MacroFactory.BuildEntity(macroDto);
// reset dirty initial properties (U4-1946)
((BeingDirtyBase)entity).ResetDirtyProperties(false);
@@ -79,8 +78,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
private IEnumerable<IMacro> ConvertFromDtos(IEnumerable<MacroDto> dtos)
{
var factory = new MacroFactory();
foreach (var entity in dtos.Select(factory.BuildEntity))
foreach (var entity in dtos.Select(MacroFactory.BuildEntity))
{
// reset dirty initial properties (U4-1946)
((BeingDirtyBase)entity).ResetDirtyProperties(false);
@@ -135,8 +134,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
((EntityBase)entity).AddingEntity();
var factory = new MacroFactory();
var dto = factory.BuildDto(entity);
var dto = MacroFactory.BuildDto(entity);
var id = Convert.ToInt32(Database.Insert(dto));
entity.Id = id;
@@ -155,9 +153,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override void PersistUpdatedItem(IMacro entity)
{
((EntityBase)entity).UpdatingEntity();
var factory = new MacroFactory();
var dto = factory.BuildDto(entity);
;
var dto = MacroFactory.BuildDto(entity);
Database.Update(dto);
@@ -19,8 +19,6 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
: base(scopeAccessor, cache, logger)
{ }
private readonly MemberGroupFactory _modelFactory = new MemberGroupFactory();
protected override IMemberGroup PerformGet(int id)
{
var sql = GetBaseQuery(false);
@@ -28,7 +26,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var dto = Database.Fetch<NodeDto>(SqlSyntax.SelectTop(sql, 1)).FirstOrDefault();
return dto == null ? null : _modelFactory.BuildEntity(dto);
return dto == null ? null : MemberGroupFactory.BuildEntity(dto);
}
protected override IEnumerable<IMemberGroup> PerformGetAll(params int[] ids)
@@ -41,7 +39,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
if (ids.Any())
sql.Where("umbracoNode.id in (@ids)", new { /*ids =*/ ids });
return Database.Fetch<NodeDto>(sql).Select(x => _modelFactory.BuildEntity(x));
return Database.Fetch<NodeDto>(sql).Select(x => MemberGroupFactory.BuildEntity(x));
}
protected override IEnumerable<IMemberGroup> PerformGetByQuery(IQuery<IMemberGroup> query)
@@ -50,7 +48,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var translator = new SqlTranslator<IMemberGroup>(sqlClause, query);
var sql = translator.Translate();
return Database.Fetch<NodeDto>(sql).Select(x => _modelFactory.BuildEntity(x));
return Database.Fetch<NodeDto>(sql).Select(x => MemberGroupFactory.BuildEntity(x));
}
protected override Sql<ISqlContext> GetBaseQuery(bool isCount)
@@ -95,7 +93,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
//Save to db
var group = (MemberGroup)entity;
group.AddingEntity();
var dto = _modelFactory.BuildDto(group);
var dto = MemberGroupFactory.BuildDto(group);
var o = Database.IsNew(dto) ? Convert.ToInt32(Database.Insert(dto)) : Database.Update(dto);
group.Id = dto.NodeId; //Set Id on entity to ensure an Id is set
@@ -109,7 +107,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override void PersistUpdatedItem(IMemberGroup entity)
{
var dto = _modelFactory.BuildDto(entity);
var dto = MemberGroupFactory.BuildDto(entity);
Database.Update(dto);
@@ -164,7 +162,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
return Database.Fetch<NodeDto>(sql)
.DistinctBy(dto => dto.NodeId)
.Select(x => _modelFactory.BuildEntity(x));
.Select(x => MemberGroupFactory.BuildEntity(x));
}
public IEnumerable<IMemberGroup> GetMemberGroupsForMember(string username)
@@ -181,7 +179,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
return Database.Fetch<NodeDto>(sql)
.DistinctBy(dto => dto.NodeId)
.Select(x => _modelFactory.BuildEntity(x));
.Select(x => MemberGroupFactory.BuildEntity(x));
}
public int[] GetMemberIds(string[] usernames)
@@ -212,14 +212,12 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
entity.AddPropertyType(standardPropertyType.Value, Constants.Conventions.Member.StandardPropertiesGroupName);
}
var factory = new ContentTypeFactory();
EnsureExplicitDataTypeForBuiltInProperties(entity);
PersistNewBaseContentType(entity);
//Handles the MemberTypeDto (cmsMemberType table)
var memberTypeDtos = factory.BuildMemberTypeDtos(entity);
var memberTypeDtos = ContentTypeFactory.BuildMemberTypeDtos(entity);
foreach (var memberTypeDto in memberTypeDtos)
{
Database.Insert(memberTypeDto);
@@ -247,15 +245,13 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
new { ParentId = entity.ParentId, NodeObjectType = NodeObjectTypeId });
entity.SortOrder = maxSortOrder + 1;
}
var factory = new ContentTypeFactory();
EnsureExplicitDataTypeForBuiltInProperties(entity);
PersistUpdatedBaseContentType(entity);
// remove and insert - handle cmsMemberType table
Database.Delete<MemberTypeDto>("WHERE NodeId = @Id", new { Id = entity.Id });
var memberTypeDtos = factory.BuildMemberTypeDtos(entity);
var memberTypeDtos = ContentTypeFactory.BuildMemberTypeDtos(entity);
foreach (var memberTypeDto in memberTypeDtos)
{
Database.Insert(memberTypeDto);
@@ -311,12 +307,11 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
if (dtos == null || dtos.Any() == false)
return Enumerable.Empty<IMemberType>();
var factory = new MemberTypeReadOnlyFactory();
return dtos.Select(x =>
{
bool needsSaving;
var memberType = factory.BuildEntity(x, out needsSaving);
var memberType = MemberTypeReadOnlyFactory.BuildEntity(x, out needsSaving);
if (needsSaving) PersistUpdatedItem(memberType);
return memberType;
}).ToList();
@@ -39,10 +39,9 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
}
sql.OrderBy<AccessDto>(x => x.NodeId);
var factory = new PublicAccessEntryFactory();
var dtos = Database.FetchOneToMany<AccessDto>(x => x.Rules, sql);
return dtos.Select(factory.BuildEntity);
return dtos.Select(PublicAccessEntryFactory.BuildEntity);
}
protected override IEnumerable<PublicAccessEntry> PerformGetByQuery(IQuery<PublicAccessEntry> query)
@@ -50,10 +49,9 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var sqlClause = GetBaseQuery(false);
var translator = new SqlTranslator<PublicAccessEntry>(sqlClause, query);
var sql = translator.Translate();
var factory = new PublicAccessEntryFactory();
var dtos = Database.FetchOneToMany<AccessDto>(x => x.Rules, sql);
return dtos.Select(factory.BuildEntity);
return dtos.Select(PublicAccessEntryFactory.BuildEntity);
}
protected override Sql<ISqlContext> GetBaseQuery(bool isCount)
@@ -87,9 +85,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
entity.AddingEntity();
foreach (var rule in entity.Rules)
rule.AddingEntity();
var factory = new PublicAccessEntryFactory();
var dto = factory.BuildDto(entity);
var dto = PublicAccessEntryFactory.BuildDto(entity);
Database.Insert(dto);
//update the id so HasEntity is correct
@@ -118,9 +115,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
else
rule.AddingEntity();
}
var factory = new PublicAccessEntryFactory();
var dto = factory.BuildDto(entity);
var dto = PublicAccessEntryFactory.BuildDto(entity);
Database.Update(dto);
@@ -55,8 +55,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
throw new NotImplementedException();
var dtos = Database.Fetch<RelationTypeDto>(sql);
var factory = new RelationTypeFactory();
return dtos.Select(x => DtoToEntity(x, factory));
return dtos.Select(x => DtoToEntity(x));
}
public IEnumerable<IRelationType> GetMany(params Guid[] ids)
@@ -75,13 +75,13 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var sql = translator.Translate();
var dtos = Database.Fetch<RelationTypeDto>(sql);
var factory = new RelationTypeFactory();
return dtos.Select(x => DtoToEntity(x, factory));
return dtos.Select(x => DtoToEntity(x));
}
private static IRelationType DtoToEntity(RelationTypeDto dto, RelationTypeFactory factory)
private static IRelationType DtoToEntity(RelationTypeDto dto)
{
var entity = factory.BuildEntity(dto);
var entity = RelationTypeFactory.BuildEntity(dto);
// reset dirty initial properties (U4-1946)
((BeingDirtyBase) entity).ResetDirtyProperties(false);
@@ -134,9 +134,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override void PersistNewItem(IRelationType entity)
{
((EntityBase)entity).AddingEntity();
var factory = new RelationTypeFactory();
var dto = factory.BuildDto(entity);
var dto = RelationTypeFactory.BuildDto(entity);
var id = Convert.ToInt32(Database.Insert(dto));
entity.Id = id;
@@ -147,9 +146,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override void PersistUpdatedItem(IRelationType entity)
{
((EntityBase)entity).UpdatingEntity();
var factory = new RelationTypeFactory();
var dto = factory.BuildDto(entity);
var dto = RelationTypeFactory.BuildDto(entity);
Database.Update(dto);
entity.ResetDirtyProperties();
@@ -56,9 +56,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override IEnumerable<IServerRegistration> PerformGetAll(params int[] ids)
{
var factory = new ServerRegistrationFactory();
return Database.Fetch<ServerRegistrationDto>("WHERE id > 0")
.Select(x => factory.BuildEntity(x));
.Select(x => ServerRegistrationFactory.BuildEntity(x));
}
protected override IEnumerable<IServerRegistration> PerformGetByQuery(IQuery<IServerRegistration> query)
@@ -100,8 +99,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
((ServerRegistration)entity).AddingEntity();
var factory = new ServerRegistrationFactory();
var dto = factory.BuildDto(entity);
var dto = ServerRegistrationFactory.BuildDto(entity);
var id = Convert.ToInt32(Database.Insert(dto));
entity.Id = id;
@@ -112,9 +110,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override void PersistUpdatedItem(IServerRegistration entity)
{
((ServerRegistration)entity).UpdatingEntity();
var factory = new ServerRegistrationFactory();
var dto = factory.BuildDto(entity);
var dto = ServerRegistrationFactory.BuildDto(entity);
Database.Update(dto);
@@ -29,9 +29,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var taskDto = Database.Fetch<TaskDto>(SqlContext.SqlSyntax.SelectTop(sql, 1)).FirstOrDefault();
if (taskDto == null)
return null;
var factory = new TaskFactory();
var entity = factory.BuildEntity(taskDto);
var entity = TaskFactory.BuildEntity(taskDto);
return entity;
}
@@ -43,10 +42,9 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
sql.Where("cmsTask.id IN (@ids)", new { ids = ids });
}
var factory = new TaskFactory();
var dtos = Database.Fetch<TaskDto>(sql);
return dtos.Select(factory.BuildEntity);
return dtos.Select(TaskFactory.BuildEntity);
}
protected override IEnumerable<Task> PerformGetByQuery(IQuery<Task> query)
@@ -55,9 +53,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var translator = new SqlTranslator<Task>(sqlClause, query);
var sql = translator.Translate();
var factory = new TaskFactory();
var dtos = Database.Fetch<TaskDto>(sql);
return dtos.Select(factory.BuildEntity);
return dtos.Select(TaskFactory.BuildEntity);
}
protected override Sql<ISqlContext> GetBaseQuery(bool isCount)
@@ -107,9 +104,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
entity.TaskType.Id = taskType.Id;
}
var factory = new TaskFactory();
var dto = factory.BuildDto(entity);
var dto = TaskFactory.BuildDto(entity);
var id = Convert.ToInt32(Database.Insert(dto));
entity.Id = id;
@@ -120,9 +116,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override void PersistUpdatedItem(Task entity)
{
entity.UpdatingEntity();
var factory = new TaskFactory();
var dto = factory.BuildDto(entity);
var dto = TaskFactory.BuildDto(entity);
Database.Update(dto);
@@ -138,8 +133,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
}
var dtos = Database.Fetch<TaskDto>(sql);
var factory = new TaskFactory();
return dtos.Select(factory.BuildEntity);
return dtos.Select(TaskFactory.BuildEntity);
}
private Sql<ISqlContext> GetGetTasksQuery(int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false)
@@ -28,9 +28,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var taskDto = Database.Fetch<TaskTypeDto>(SqlContext.SqlSyntax.SelectTop(sql, 1)).FirstOrDefault();
if (taskDto == null)
return null;
var factory = new TaskTypeFactory();
var entity = factory.BuildEntity(taskDto);
var entity = TaskTypeFactory.BuildEntity(taskDto);
return entity;
}
@@ -42,10 +41,9 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
sql.Where("cmsTaskType.id IN (@ids)", new { ids });
}
var factory = new TaskTypeFactory();
var dtos = Database.Fetch<TaskTypeDto>(sql);
return dtos.Select(factory.BuildEntity);
return dtos.Select(TaskTypeFactory.BuildEntity);
}
protected override IEnumerable<TaskType> PerformGetByQuery(IQuery<TaskType> query)
@@ -53,10 +51,9 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var sqlClause = GetBaseQuery(false);
var translator = new SqlTranslator<TaskType>(sqlClause, query);
var sql = translator.Translate();
var factory = new TaskTypeFactory();
var dtos = Database.Fetch<TaskTypeDto>(sql);
return dtos.Select(factory.BuildEntity);
return dtos.Select(TaskTypeFactory.BuildEntity);
}
protected override Sql<ISqlContext> GetBaseQuery(bool isCount)
@@ -93,9 +90,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
throw new InvalidOperationException("A task type already exists with the given alias " + entity.Alias);
}
var factory = new TaskTypeFactory();
var dto = factory.BuildDto(entity);
var dto = TaskTypeFactory.BuildDto(entity);
var id = Convert.ToInt32(Database.Insert(dto));
entity.Id = id;
@@ -106,9 +102,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override void PersistUpdatedItem(TaskType entity)
{
entity.UpdatingEntity();
var factory = new TaskTypeFactory();
var dto = factory.BuildDto(entity);
var dto = TaskTypeFactory.BuildDto(entity);
Database.Update(dto);
@@ -152,9 +152,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
//Save to db
var template = (Template)entity;
template.AddingEntity();
var factory = new TemplateFactory(NodeObjectTypeId);
var dto = factory.BuildDto(template);
var dto = TemplateFactory.BuildDto(template, NodeObjectTypeId, template.Id);
//Create the (base) node data - umbracoNode
var nodeDto = dto.NodeDto;
@@ -226,8 +225,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
//Save updated entity to db
template.UpdateDate = DateTime.Now;
var factory = new TemplateFactory(templateDto.PrimaryKey, NodeObjectTypeId);
var dto = factory.BuildDto(template);
;
var dto = TemplateFactory.BuildDto(template, NodeObjectTypeId, templateDto.PrimaryKey);
Database.Update(dto.NodeDto);
Database.Update(dto);
@@ -355,8 +354,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
/// <returns></returns>
private ITemplate MapFromDto(TemplateDto dto, IUmbracoEntity[] axisDefinitions)
{
var factory = new TemplateFactory();
var template = factory.BuildEntity(dto, axisDefinitions, file => GetFileContent((Template) file, false));
var template = TemplateFactory.BuildEntity(dto, axisDefinitions, file => GetFileContent((Template) file, false));
if (dto.NodeDto.ParentId > 0)
{
File diff suppressed because it is too large Load Diff