static void CreateXpandCustomMemberInfo(IModelMemberEx modelMemberEx, XPObjectSpace objectSpace) { try { Type classType = modelMemberEx.ModelClass.TypeInfo.Type; XPClassInfo xpClassInfo = XpandModuleBase.Dictiorary.GetClassInfo(classType); lock (xpClassInfo) { var customMemberInfo = xpClassInfo.FindMember(modelMemberEx.Name) as XPCustomMemberInfo; if (customMemberInfo == null) { customMemberInfo = CreateMemberInfo(modelMemberEx, xpClassInfo); ((IModelTypesInfoProvider)modelMemberEx.Application).TypesInfo.RefreshInfo(classType); AddAttributes(modelMemberEx, customMemberInfo); } var xpandCustomMemberInfo = customMemberInfo as XpandCustomMemberInfo; if (xpandCustomMemberInfo != null) { CreateColumn(modelMemberEx as IModelMemberPersistent, objectSpace, xpandCustomMemberInfo); CreateForeignKey(modelMemberEx as IModelMemberOneToManyCollection, objectSpace, xpandCustomMemberInfo); UpdateMember(modelMemberEx, customMemberInfo); } } } catch (Exception exception) { throw new Exception( ExceptionLocalizerTemplate <SystemExceptionResourceLocalizer, ExceptionId> .GetExceptionMessage( ExceptionId.ErrorOccursWhileAddingTheCustomProperty, modelMemberEx.MemberInfo.MemberType, ((IModelClass)modelMemberEx.Parent).Name, modelMemberEx.Name, exception.Message)); } }
static XpandCustomMemberInfo CreateMemberInfo(IModelMemberEx modelMemberEx, XPClassInfo xpClassInfo) { var calculatedMember = modelMemberEx as IModelMemberCalculated; if (calculatedMember != null) { return(xpClassInfo.CreateCalculabeMember(calculatedMember.Name, calculatedMember.Type, calculatedMember.AliasExpression)); } var modelMemberOrphanedColection = modelMemberEx as IModelMemberOrphanedColection; if (modelMemberOrphanedColection != null) { return(xpClassInfo.CreateCollection(modelMemberOrphanedColection.Name, modelMemberOrphanedColection.CollectionType.TypeInfo.Type, modelMemberOrphanedColection.Criteria)); } var modelMemberOneToManyCollection = modelMemberEx as IModelMemberOneToManyCollection; if (modelMemberOneToManyCollection != null) { var elementType = modelMemberOneToManyCollection.CollectionType.TypeInfo.Type; var associationAttribute = new AssociationAttribute(modelMemberOneToManyCollection.AssociationName, elementType); var xpandCollectionMemberInfo = xpClassInfo.CreateCollection(modelMemberOneToManyCollection.Name, elementType, null, associationAttribute); modelMemberOneToManyCollection.AssociatedMember.ModelClass.TypeInfo.FindMember(modelMemberOneToManyCollection.AssociatedMember.Name).AddAttribute(associationAttribute); return(xpandCollectionMemberInfo); } var modelMemberModelMember = modelMemberEx as IModelMemberModelMember; if (modelMemberModelMember != null) { var memberInfo = ModelMemberModelMemberDomainLogic.Get_MemberInfo(modelMemberModelMember); return((XpandCustomMemberInfo)xpClassInfo.FindMember(memberInfo.Name)); } return(xpClassInfo.CreateCustomMember(modelMemberEx.Name, modelMemberEx.Type, modelMemberEx is IModelMemberNonPersistent)); }
static void CreateXpandCustomMemberInfo(IModelMemberEx modelMemberEx, XPObjectSpace objectSpace) { try { Type classType = modelMemberEx.ModelClass.TypeInfo.Type; XPClassInfo xpClassInfo = XpandModuleBase.Dictiorary.GetClassInfo(classType); lock (xpClassInfo) { var customMemberInfo = xpClassInfo.FindMember(modelMemberEx.Name) as XPCustomMemberInfo; if (customMemberInfo == null) { customMemberInfo= CreateMemberInfo(modelMemberEx, xpClassInfo); ((IModelTypesInfoProvider) modelMemberEx.Application).TypesInfo.RefreshInfo(classType); AddAttributes(modelMemberEx, customMemberInfo); } var xpandCustomMemberInfo = customMemberInfo as XpandCustomMemberInfo; if (xpandCustomMemberInfo != null) { CreateColumn(modelMemberEx as IModelMemberPersistent, objectSpace, xpandCustomMemberInfo); CreateForeignKey(modelMemberEx as IModelMemberOneToManyCollection, objectSpace, xpandCustomMemberInfo); UpdateMember(modelMemberEx, customMemberInfo); } } } catch (Exception exception) { throw new Exception( ExceptionLocalizerTemplate<SystemExceptionResourceLocalizer, ExceptionId>.GetExceptionMessage( ExceptionId.ErrorOccursWhileAddingTheCustomProperty, modelMemberEx.MemberInfo.MemberType, ((IModelClass) modelMemberEx.Parent).Name, modelMemberEx.Name, exception.Message)); } }
static void UpdateMember(IModelMemberEx modelMemberEx, XPMemberInfo xpMemberInfo) { var modelRuntimeCalculatedMember = modelMemberEx as IModelMemberCalculated; if (modelRuntimeCalculatedMember != null) { ((XpandCalcMemberInfo)xpMemberInfo).SetAliasExpression(modelRuntimeCalculatedMember.AliasExpression); } }
static void AddAttributes(IModelMemberEx modelMemberEx, XPCustomMemberInfo memberInfo) { if (modelMemberEx.Size != 0) { memberInfo.AddAttribute(new SizeAttribute(modelMemberEx.Size)); } if (modelMemberEx is IModelMemberNonPersistent && !(modelMemberEx is IModelMemberCalculated)) { memberInfo.AddAttribute(new NonPersistentAttribute()); } }
public static string Get_Caption(IModelMemberEx modelRuntimeMember) { return(modelRuntimeMember.MemberInfo != null?GetMemberCaption(modelRuntimeMember.MemberInfo) : string.Empty); }
public static void Set_IsCalculated(IModelMemberEx modelRuntimeMember, bool value) { }
public CustomCreateMemberArgs(IModelMemberEx modelMemberEx) { _modelMemberEx = modelMemberEx; }
static bool CanCreateDbArtifact(IModelMemberEx modelMemberEx, XPObjectSpace objectSpace) { return(modelMemberEx != null && objectSpace != null && (modelMemberEx.CreatedAtDesignTime.HasValue && !modelMemberEx.CreatedAtDesignTime.Value)); }
static XpandCustomMemberInfo CreateMemberInfo(IModelMemberEx modelMemberEx, XPClassInfo xpClassInfo) { var calculatedMember = modelMemberEx as IModelMemberCalculated; if (calculatedMember != null) return xpClassInfo.CreateCalculabeMember(calculatedMember.Name, calculatedMember.Type, calculatedMember.AliasExpression); var modelMemberOrphanedColection = modelMemberEx as IModelMemberOrphanedColection; if (modelMemberOrphanedColection != null) { return xpClassInfo.CreateCollection(modelMemberOrphanedColection.Name, modelMemberOrphanedColection.CollectionType.TypeInfo.Type, modelMemberOrphanedColection.Criteria); } var modelMemberOneToManyCollection = modelMemberEx as IModelMemberOneToManyCollection; if (modelMemberOneToManyCollection!=null) { var elementType = modelMemberOneToManyCollection.CollectionType.TypeInfo.Type; var associationAttribute = new AssociationAttribute(modelMemberOneToManyCollection.AssociationName, elementType); var xpandCollectionMemberInfo = xpClassInfo.CreateCollection(modelMemberOneToManyCollection.Name, elementType, null, associationAttribute); modelMemberOneToManyCollection.AssociatedMember.ModelClass.TypeInfo.FindMember(modelMemberOneToManyCollection.AssociatedMember.Name).AddAttribute(associationAttribute); return xpandCollectionMemberInfo; } return xpClassInfo.CreateCustomMember(modelMemberEx.Name, modelMemberEx.Type, modelMemberEx is IModelMemberNonPersistent); }
static void AddAttributes(IModelMemberEx modelMemberEx, XPCustomMemberInfo memberInfo) { if (modelMemberEx.Size != 0) memberInfo.AddAttribute(new SizeAttribute(modelMemberEx.Size)); if (modelMemberEx is IModelMemberNonPersistent && !(modelMemberEx is IModelMemberCalculated)) memberInfo.AddAttribute(new NonPersistentAttribute()); }
static bool CanCreateDbArtifact(IModelMemberEx modelMemberEx, XPObjectSpace objectSpace) { return modelMemberEx != null && objectSpace != null && (modelMemberEx.CreatedAtDesignTime.HasValue&&!modelMemberEx.CreatedAtDesignTime.Value); }