Class EntityDescriptorFactory
The main factory for creating and providing EntityDescriptor and ComplexTypeDescriptor for all items in the system including those defined by custom objects and addins
This automatically reloads whenever changes to custom objects or addins are detected within the system
Inheritance
Inherited Members
Namespace: LemonEdge.Core.Descriptors
Assembly: API.dll
Syntax
public class EntityDescriptorFactory
Methods
Create<T>(UserInfo)
Creates a new instance of the specified item, either from the interface or class type
Declaration
public static Task<T> Create<T>(UserInfo createdBy)
where T : IBaseEntity
Parameters
Type | Name | Description |
---|---|---|
UserInfo | createdBy | The user that is creating this new item |
Returns
Type | Description |
---|---|
System.Threading.Tasks.Task<T> | A new instance of the specified item, either from the interface or class type |
Type Parameters
Name | Description |
---|---|
T | The type of entity to create a new instance of. Can be either the interface or class type. |
GetAllDependantEntities(EntityDescriptor)
Returns a list of all entity descriptors that are dependant on the specified entity descriptor, and in turn their child dependancys too
Declaration
public static IEnumerable<EntityDescriptor> GetAllDependantEntities(EntityDescriptor desc)
Parameters
Type | Name | Description |
---|---|---|
EntityDescriptor | desc | The entity descriptor to get all child dependant entity descriptors for |
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<EntityDescriptor> | A list of all entity descriptors that are dependant on the specified entity descriptor, and in turn their child dependancys too |
GetCachedDescriptors()
Returns all descriptors that are part of the standing data cache
Declaration
public static IEnumerable<EntityDescriptor> GetCachedDescriptors()
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<EntityDescriptor> | All descriptors that are part of the standing data cache |
GetComplexTypeDescriptor(Object)
Returns the ComplexTypeDescriptor for the specified instance of a complex type
Declaration
public static ComplexTypeDescriptor GetComplexTypeDescriptor(object forObject)
Parameters
Type | Name | Description |
---|---|---|
System.Object | forObject | An instance of a complex type |
Returns
Type | Description |
---|---|
ComplexTypeDescriptor | The ComplexTypeDescriptor for the specified instance of a complex type |
GetComplexTypes()
Returns a ComplexTypeDescriptor for every complex type found in the system including through custom objects and addins
Declaration
public static IEnumerable<ComplexTypeDescriptor> GetComplexTypes()
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<ComplexTypeDescriptor> | A ComplexTypeDescriptor for every complex type found in the system including through custom objects and addins |
GetDescriptor(IBaseEntity)
Returns the EntityDescriptor for the specified instance of an entity
Declaration
public static EntityDescriptor GetDescriptor(IBaseEntity item)
Parameters
Type | Name | Description |
---|---|---|
IBaseEntity | item | The instance of an entity to return its associated entity descriptor for |
Returns
Type | Description |
---|---|
EntityDescriptor | The EntityDescriptor for the specified instance of an entity |
GetDescriptor(Guid, Guid)
Returns the entitydescriptor for the specified type, and specified sub type (if looking for a replicated entitydescriptor)
Declaration
public static EntityDescriptor GetDescriptor(Guid id, Guid forType = default(Guid))
Parameters
Type | Name | Description |
---|---|---|
System.Guid | id | |
System.Guid | forType | The unique global id of an entity that is the sub type for the entity descriptor - used when looking for a replicated entity descriptor |
Returns
Type | Description |
---|---|
EntityDescriptor |
GetDescriptor(String)
Returns the entitydescriptor for the specified uniqueKey of an entitydescriptor
Declaration
public static EntityDescriptor GetDescriptor(string uniqueKey)
Parameters
Type | Name | Description |
---|---|---|
System.String | uniqueKey | The UniqueKey of an entity descriptor |
Returns
Type | Description |
---|---|
EntityDescriptor | The entitydescriptor for the specified uniqueKey of an entitydescriptor |
GetDescriptor(Type, Guid)
Returns the entitydescriptor for the specified type, and specified sub type (if looking for a replicated entitydescriptor)
Declaration
public static EntityDescriptor GetDescriptor(Type t, Guid forType = default(Guid))
Parameters
Type | Name | Description |
---|---|---|
System.Type | t | The type of an entity (either its interface or class type) |
System.Guid | forType | The unique global id of an entity that is the sub type for the entity descriptor - used when looking for a replicated entity descriptor |
Returns
Type | Description |
---|---|
EntityDescriptor |
GetDescriptorBeingQueried(QueryableExecuter)
Returns the entitydescriptor for the type being queried in an QueryableExecuter
Declaration
public static EntityDescriptor GetDescriptorBeingQueried(QueryableExecuter queryItems)
Parameters
Type | Name | Description |
---|---|---|
QueryableExecuter | queryItems | A query |
Returns
Type | Description |
---|---|
EntityDescriptor | The entitydescriptor for the type being queried in an QueryableExecuter |
GetDescriptors()
Returns an EntityDescriptor for each entity within the system including those defined through custom objects and addins
This also includes replicated entity descriptors - in other words the complete set of all entity descriptors available within the system
Declaration
public static IEnumerable<EntityDescriptor> GetDescriptors()
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<EntityDescriptor> | An EntityDescriptor for each entity within the system including those defined through custom objects and addins |
GetDescriptors(String)
Returns all entitydescriptors restricted to just those for a particular database.
This is required for task services and other processes that connect to multiple lemonedge databases at once
Declaration
public static IEnumerable<EntityDescriptor> GetDescriptors(string forDB)
Parameters
Type | Name | Description |
---|---|---|
System.String | forDB | The alias for the connected database |
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<EntityDescriptor> | All entitydescriptors restricted to just those for a particular database. |
GetDescriptorsInSaveOrder(IEnumerable<EntityDescriptor>)
Returns all the specified entity descriptors in the order that they should be saved in so dependancies are correct
Declaration
public static IEnumerable<EntityDescriptor> GetDescriptorsInSaveOrder(IEnumerable<EntityDescriptor> descriptors)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<EntityDescriptor> | descriptors | A list of entity descriptors that should be sorted into the order in which they should be saved |
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<EntityDescriptor> | All the specified entity descriptors in the order that they should be saved in so dependancies are correct |
GetDirectDependantEntities(EntityDescriptor, Boolean)
Returns a list of all entity descriptors that are directly dependant on the specified descriptor through relationships
Declaration
public static IEnumerable<EntityDescriptor> GetDirectDependantEntities(EntityDescriptor desc, bool includeParentToAnyRelationships)
Parameters
Type | Name | Description |
---|---|---|
EntityDescriptor | desc | The entity descriptor to return all directly dependant entity descriptors for |
System.Boolean | includeParentToAnyRelationships | Indicates if relationships that can have any entity as a parent should be included in the results |
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<EntityDescriptor> | A list of all entity descriptors that are directly dependant on the specified descriptor through relationships |
GetItemsInTypeReverseSaveOrder(IEnumerable<IBaseEntity>)
Returns the specified set of entities in the reverse order they should be saved in
Declaration
public static IEnumerable<IBaseEntity> GetItemsInTypeReverseSaveOrder(IEnumerable<IBaseEntity> items)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<IBaseEntity> | items | A set of entities that should be ordered according to the reverse order in which they should be saved |
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<IBaseEntity> | The specified set of entities in the reverse order they should be saved in |
GetItemsInTypeSaveOrder(IEnumerable<IBaseEntity>)
Returns the specified set of entities in the order they should be saved in
Declaration
public static IEnumerable<IBaseEntity> GetItemsInTypeSaveOrder(IEnumerable<IBaseEntity> items)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<IBaseEntity> | items | A set of entities that should be ordered according to the order in which they should be saved |
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<IBaseEntity> | The specified set of entities in the order they should be saved in |
GetKnownTypes()
Returns all known entity tyes and enum types within all loaded entity descriptors in the system
Used for serialization
Declaration
public static IEnumerable<Type> GetKnownTypes()
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<System.Type> | All known entity tyes and enum types within all loaded entity descriptors in the system |
GetTypeDistinctDescriptors()
Returns an EntityDescriptor for each entity within the system excluding ones that have been replicated from other entity descriptors
For example only one entitydescriptor for IPermission would be returned, and not one for each entity descriptor in the system replicated for each one with permissions
Declaration
public static IEnumerable<EntityDescriptor> GetTypeDistinctDescriptors()
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<EntityDescriptor> | An EntityDescriptor for each entity within the system excluding ones that have been replicated from other entity descriptors |
IsPartOfSpecificAssembly(Guid, IEnumerable<Assembly>)
It's possible using custom objects (which dynamically create dlls) that we have the same object design (using the same typeids -> sharedkey) in two databases we can only have one entity descriptor for that typeid, so we store any other assemblies that reference the same typeid then here we can say that if specific dlls are requested we can return that typeid if it is part of our stored assemblies
Declaration
public static bool IsPartOfSpecificAssembly(Guid typeID, IEnumerable<Assembly> customAssemblies)
Parameters
Type | Name | Description |
---|---|---|
System.Guid | typeID | The unique global type of an entity that needs to be checked if it is defined in the list of assemblies |
System.Collections.Generic.IEnumerable<System.Reflection.Assembly> | customAssemblies | A list of assemblies to check if the specified entity type is defined within it |
Returns
Type | Description |
---|---|
System.Boolean | True if the unique global id of the entity descriptor is defined as an entity in the specified list of assemblies |