* Run code cleanup * Start manual cleanup after dotnet format * Finish up manual pass * Fix up missed warnings * Fix after merge * Update src/Umbraco.Core/Cache/ContentTypeCacheRefresher.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Cache/DataTypeCacheRefresher.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Cache/DeepCloneAppCache.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Cache/DomainCacheRefresher.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Cache/FastDictionaryAppCacheBase.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Cache/FastDictionaryAppCacheBase.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Cache/FastDictionaryAppCacheBase.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Cache/FastDictionaryAppCacheBase.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Cache/FastDictionaryAppCacheBase.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Cache/MacroCacheRefresher.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Cache/MediaCacheRefresher.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Cache/MemberCacheRefresher.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Cache/MemberGroupCacheRefresher.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Composing/OrderedCollectionBuilderBase.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Configuration/Models/RequestHandlerSettings.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Composing/SetCollectionBuilderBase.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Composing/WeightedCollectionBuilderBase.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Dashboards/DashboardCollectionBuilder.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/ContentTypeRefreshedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/ContentTypeSavedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/ContentTypeSavingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/DictionaryCacheRefresherNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/DataTypeCacheRefresherNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/ContentUnpublishingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/DictionaryItemDeletingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/DictionaryItemSavedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/DictionaryItemSavingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/DomainCacheRefresherNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/LanguageCacheRefresherNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MacroCacheRefresherNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaCacheRefresherNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaEmptiedRecycleBinNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaEmptyingRecycleBinNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaMovedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaMovedToRecycleBinNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaMovedToRecycleBinNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaMovingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaMovingToRecycleBinNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaTreeChangeNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaTreeChangeNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaTypeChangedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaTypeDeletingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaTypeMovedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaTypeMovingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaTypeMovingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MediaTypeRefreshedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberCacheRefresherNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberGroupCacheRefresherNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberGroupDeletingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberGroupSavedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberGroupSavingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberTypeChangedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberTypeDeletedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberTypeDeletingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberTypeMovedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberTypeMovedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberTypeMovingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberTypeMovingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberTypeRefreshedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MemberTypeSavingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/StringExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/UriExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MovedToRecycleBinNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MovedToRecycleBinNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MovingToRecycleBinNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/MovingToRecycleBinNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/PartialViewDeletingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Extensions/UriExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/IO/PhysicalFileSystem.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/IO/PhysicalFileSystem.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/IO/ShadowWrapper.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Logging/DisposableTimer.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Install/InstallSteps/UpgradeStep.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Mapping/MapDefinitionCollectionBuilder.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Media/EmbedProviders/EmbedProvidersCollectionBuilder.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/PartialViewSavedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Models/ContentEditing/ContentVariationDisplay.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/PartialViewSavingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/PublicAccessCacheRefresherNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/PublicAccessEntryDeletedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/PublicAccessEntryDeletingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/PublicAccessEntryDeletingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/PublicAccessEntrySavedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/PublicAccessEntrySavingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/PublicAccessEntrySavingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/RelationTypeCacheRefresherNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/RelationTypeDeletingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/RelationTypeSavedNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/RelationTypeSavingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/StatefulNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/StylesheetDeletingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Notifications/StylesheetSavingNotification.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Models/DeepCloneHelper.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Models/File.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Models/PropertyGroupExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Update src/Umbraco.Core/Models/PropertyGroupExtensions.cs Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> * Fix based on review * Fix after merge Signed-off-by: Zeegaan <nge@umbraco.dk> Co-authored-by: Nikolaj Geisle <niko737@edu.ucl.dk> Co-authored-by: Mole <nikolajlauridsen@protonmail.ch> Co-authored-by: Zeegaan <nge@umbraco.dk>
483 lines
14 KiB
C#
483 lines
14 KiB
C#
// Copyright (c) Umbraco.
|
|
// See LICENSE for more details.
|
|
|
|
using Umbraco.Cms.Core;
|
|
using Umbraco.Cms.Core.Models;
|
|
using Umbraco.Cms.Core.Models.Entities;
|
|
|
|
namespace Umbraco.Extensions;
|
|
|
|
/// <summary>
|
|
/// Provides extension methods that return udis for Umbraco entities.
|
|
/// </summary>
|
|
public static class UdiGetterExtensions
|
|
{
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this ITemplate entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new GuidUdi(Constants.UdiEntityType.Template, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IContentType entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new GuidUdi(Constants.UdiEntityType.DocumentType, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IMediaType entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new GuidUdi(Constants.UdiEntityType.MediaType, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IMemberType entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new GuidUdi(Constants.UdiEntityType.MemberType, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IMemberGroup entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new GuidUdi(Constants.UdiEntityType.MemberGroup, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IContentTypeComposition entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
string type;
|
|
if (entity is IContentType)
|
|
{
|
|
type = Constants.UdiEntityType.DocumentType;
|
|
}
|
|
else if (entity is IMediaType)
|
|
{
|
|
type = Constants.UdiEntityType.MediaType;
|
|
}
|
|
else if (entity is IMemberType)
|
|
{
|
|
type = Constants.UdiEntityType.MemberType;
|
|
}
|
|
else
|
|
{
|
|
throw new NotSupportedException(string.Format(
|
|
"Composition type {0} is not supported.",
|
|
entity.GetType().FullName));
|
|
}
|
|
|
|
return new GuidUdi(type, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IDataType entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new GuidUdi(Constants.UdiEntityType.DataType, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this EntityContainer entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
string entityType;
|
|
if (entity.ContainedObjectType == Constants.ObjectTypes.DataType)
|
|
{
|
|
entityType = Constants.UdiEntityType.DataTypeContainer;
|
|
}
|
|
else if (entity.ContainedObjectType == Constants.ObjectTypes.DocumentType)
|
|
{
|
|
entityType = Constants.UdiEntityType.DocumentTypeContainer;
|
|
}
|
|
else if (entity.ContainedObjectType == Constants.ObjectTypes.MediaType)
|
|
{
|
|
entityType = Constants.UdiEntityType.MediaTypeContainer;
|
|
}
|
|
else
|
|
{
|
|
throw new NotSupportedException(string.Format(
|
|
"Contained object type {0} is not supported.",
|
|
entity.ContainedObjectType));
|
|
}
|
|
|
|
return new GuidUdi(entityType, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IMedia entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new GuidUdi(Constants.UdiEntityType.Media, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IContent entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new GuidUdi(
|
|
entity.Blueprint ? Constants.UdiEntityType.DocumentBlueprint : Constants.UdiEntityType.Document,
|
|
entity.Key)
|
|
.EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IMember entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new GuidUdi(Constants.UdiEntityType.Member, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static StringUdi GetUdi(this Stylesheet entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new StringUdi(
|
|
Constants.UdiEntityType.Stylesheet,
|
|
entity.Path.TrimStart(Constants.CharArrays.ForwardSlash)).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static StringUdi GetUdi(this Script entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new StringUdi(Constants.UdiEntityType.Script, entity.Path.TrimStart(Constants.CharArrays.ForwardSlash))
|
|
.EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IDictionaryItem entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new GuidUdi(Constants.UdiEntityType.DictionaryItem, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IMacro entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new GuidUdi(Constants.UdiEntityType.Macro, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static StringUdi GetUdi(this IPartialView entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
// we should throw on Unknown but for the time being, assume it means PartialView
|
|
var entityType = entity.ViewType == PartialViewType.PartialViewMacro
|
|
? Constants.UdiEntityType.PartialViewMacro
|
|
: Constants.UdiEntityType.PartialView;
|
|
|
|
return new StringUdi(entityType, entity.Path.TrimStart(Constants.CharArrays.ForwardSlash)).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IContentBase entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
string type;
|
|
if (entity is IContent)
|
|
{
|
|
type = Constants.UdiEntityType.Document;
|
|
}
|
|
else if (entity is IMedia)
|
|
{
|
|
type = Constants.UdiEntityType.Media;
|
|
}
|
|
else if (entity is IMember)
|
|
{
|
|
type = Constants.UdiEntityType.Member;
|
|
}
|
|
else
|
|
{
|
|
throw new NotSupportedException(string.Format(
|
|
"ContentBase type {0} is not supported.",
|
|
entity.GetType().FullName));
|
|
}
|
|
|
|
return new GuidUdi(type, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static GuidUdi GetUdi(this IRelationType entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new GuidUdi(Constants.UdiEntityType.RelationType, entity.Key).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static StringUdi GetUdi(this ILanguage entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
return new StringUdi(Constants.UdiEntityType.Language, entity.IsoCode).EnsureClosed();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the entity identifier of the entity.
|
|
/// </summary>
|
|
/// <param name="entity">The entity.</param>
|
|
/// <returns>The entity identifier of the entity.</returns>
|
|
public static Udi GetUdi(this IEntity entity)
|
|
{
|
|
if (entity == null)
|
|
{
|
|
throw new ArgumentNullException("entity");
|
|
}
|
|
|
|
// entity could eg be anything implementing IThing
|
|
// so we have to go through casts here
|
|
if (entity is ITemplate template)
|
|
{
|
|
return template.GetUdi();
|
|
}
|
|
|
|
if (entity is IContentType contentType)
|
|
{
|
|
return contentType.GetUdi();
|
|
}
|
|
|
|
if (entity is IMediaType mediaType)
|
|
{
|
|
return mediaType.GetUdi();
|
|
}
|
|
|
|
if (entity is IMemberType memberType)
|
|
{
|
|
return memberType.GetUdi();
|
|
}
|
|
|
|
if (entity is IMemberGroup memberGroup)
|
|
{
|
|
return memberGroup.GetUdi();
|
|
}
|
|
|
|
if (entity is IContentTypeComposition contentTypeComposition)
|
|
{
|
|
return contentTypeComposition.GetUdi();
|
|
}
|
|
|
|
if (entity is IDataType dataTypeComposition)
|
|
{
|
|
return dataTypeComposition.GetUdi();
|
|
}
|
|
|
|
if (entity is EntityContainer container)
|
|
{
|
|
return container.GetUdi();
|
|
}
|
|
|
|
if (entity is IMedia media)
|
|
{
|
|
return media.GetUdi();
|
|
}
|
|
|
|
if (entity is IContent content)
|
|
{
|
|
return content.GetUdi();
|
|
}
|
|
|
|
if (entity is IMember member)
|
|
{
|
|
return member.GetUdi();
|
|
}
|
|
|
|
if (entity is Stylesheet stylesheet)
|
|
{
|
|
return stylesheet.GetUdi();
|
|
}
|
|
|
|
if (entity is Script script)
|
|
{
|
|
return script.GetUdi();
|
|
}
|
|
|
|
if (entity is IDictionaryItem dictionaryItem)
|
|
{
|
|
return dictionaryItem.GetUdi();
|
|
}
|
|
|
|
if (entity is IMacro macro)
|
|
{
|
|
return macro.GetUdi();
|
|
}
|
|
|
|
if (entity is IPartialView partialView)
|
|
{
|
|
return partialView.GetUdi();
|
|
}
|
|
|
|
if (entity is IContentBase contentBase)
|
|
{
|
|
return contentBase.GetUdi();
|
|
}
|
|
|
|
if (entity is IRelationType relationType)
|
|
{
|
|
return relationType.GetUdi();
|
|
}
|
|
|
|
if (entity is ILanguage language)
|
|
{
|
|
return language.GetUdi();
|
|
}
|
|
|
|
throw new NotSupportedException(string.Format("Entity type {0} is not supported.", entity.GetType().FullName));
|
|
}
|
|
}
|