Ejemplo n.º 1
0
        private object InternalExecute()
        {
            DESchemaObjectOperationContext context = new DESchemaObjectOperationContext(this.OperationType, this);

            ExecutionWrapper("PrepareData", () => PrepareData(context));
            ExecutionWrapper("PrepareOperationLog", () => PrepareOperationLog(context));

            object result = null;

            if (this.AutoStartTransaction)
            {
                using (TransactionScope scope = TransactionScopeFactory.Create())
                {
                    ExecutionWrapper("DoOperation", () => result = DoOperation(context));
                    ExecutionWrapper("PersistOperationLog", () => PersistOperationLog(context));

                    scope.Complete();
                }
            }
            else
            {
                ExecutionWrapper("DoOperation", () => result = DoOperation(context));
                ExecutionWrapper("PersistOperationLog", () => PersistOperationLog(context));
            }

            return(result);
        }
Ejemplo n.º 2
0
        private void PersistOperationLog(DESchemaObjectOperationContext context)
        {
            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                context.Logs.ForEach(log => DEOperationLogAdapter.Instance.Insert(log));

                scope.Complete();
            }
        }
Ejemplo n.º 3
0
        protected override object DoOperation(DESchemaObjectOperationContext context)
        {
            using (TransactionScope scope = TransactionScopeFactory.Create())
            {
                DESchemaObjectAdapter.Instance.Update(Data);

                DoRelativeDataOperation(context);

                scope.Complete();
            }

            return(this.Data);
        }
Ejemplo n.º 4
0
        protected override object DoOperation(DESchemaObjectOperationContext context)
        {
            if (OverrideExistedRelation || this.RelationExisted == false)
            {
                DEMemberRelationAdapter.Instance.Update(this.Relation);
            }

            if (SaveTargetData)
            {
                DESchemaObjectAdapter.Instance.Update(Data);
            }

            return(this.Relation);
        }
Ejemplo n.º 5
0
        protected override void PrepareOperationLog(DESchemaObjectOperationContext context)
        {
            DEOperationLog log = DEOperationLog.CreateLogFromEnvironment();

            log.ResourceID    = this.Data.ID;
            log.SchemaType    = this.Data.SchemaType;
            log.OperationType = this.OperationType;
            log.Category      = this.Data.Schema.Category;
            log.Subject       = string.Format("{0}: {1} 于 {2}",
                                              EnumItemDescriptionAttribute.GetDescription(this.OperationType), this.Data.Name, ((DEBase)this._Container).Name);

            log.SearchContent = this.Data.ToFullTextString() + " " + this._Container.ToFullTextString();

            context.Logs.Add(log);
        }
Ejemplo n.º 6
0
        protected override void PrepareData(DESchemaObjectOperationContext context)
        {
            if (this.Data.ID.IsNullOrEmpty())
            {
                this.Data.ID = Guid.NewGuid().ToString();
            }


            Members.ForEach(p =>
            {
                if (p.ID.IsNullOrEmpty())
                {
                    p.ID = Guid.NewGuid().ToString();
                }
            });

            this._Relation = this.PrepareRelationObject(this.Data, this.Members);

            base.PrepareData(context);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 处理相关数据
        /// </summary>
        /// <param name="context"></param>
        protected void DoRelativeDataOperation(DESchemaObjectOperationContext context)
        {
            //if (this._ObjectNameChanged)
            //{
            //    if (context.ContainsKey("parentRelations"))
            //        UpdateRelations((IEnumerable<DERelationObject>)context["parentRelations"]);
            //}

            //if (this._NeedDeleteRelations)
            //{
            //    if (context.ContainsKey("childrenRelations"))
            //        UpdateRelationsStatus((IEnumerable<DERelationObject>)context["childrenRelations"]);

            //    if (context.ContainsKey("parentRelations"))
            //        UpdateRelationsStatus((IEnumerable<DERelationObject>)context["parentRelations"]);
            //}

            if (context.ContainsKey("containersRelations"))
            {
                UpdateMembersRelationsStatus((IEnumerable <DESimpleRelationBase>)context["containersRelations"]);
            }

            if (context.ContainsKey("membersRelations"))
            {
                UpdateMembersRelationsStatus((IEnumerable <DESimpleRelationBase>)context["membersRelations"]);
            }

            if (context.ContainsKey("aclMembers"))
            {
                DEAclAdapter.Instance.UpdateStatus(((DEAclContainerOrMemberCollectionBase)context["aclMembers"]), SchemaObjectStatus.Deleted);
            }

            if (context.ContainsKey("aclContainers"))
            {
                DEAclAdapter.Instance.UpdateStatus(((DEAclContainerOrMemberCollectionBase)context["aclContainers"]), SchemaObjectStatus.Deleted);
            }
        }
Ejemplo n.º 8
0
        protected override object DoOperation(DESchemaObjectOperationContext context)
        {
            DEMemberRelationAdapter.Instance.RelationAction(this.Data, this.Members, this.Relation, this.SaveContainerData, this.SaveMemberData, this._RelationType);

            return(this.Relation);
        }
Ejemplo n.º 9
0
 protected override void PrepareOperationLog(DESchemaObjectOperationContext context)
 {
     context.Logs.Add(this.Data.ToOperationLog(this.OperationType));
 }
Ejemplo n.º 10
0
        protected override void PrepareData(DESchemaObjectOperationContext context)
        {
            this.Validate();
            base.PrepareData(context);

            //SCActionContext.Current.OriginalObject = DESchemaObjectAdapter.Instance.Load(this.Data.ID);
            //SCActionContext.Current.CurrentObject = this.Data;

            //string originalName = SCActionContext.Current.OriginalObject != null ? SCActionContext.Current.OriginalObject.Properties.GetValue("Name", string.Empty) : string.Empty;
            //string currentName = SCActionContext.Current.OriginalObject != null ? SCActionContext.Current.CurrentObject.Properties.GetValue("Name", string.Empty) : string.Empty;

            //this._ObjectNameChanged = originalName != currentName;

            ////是否是关系容器
            //IDERelationContainer rContainer = this.Data as IDERelationContainer;

            //if (this._ObjectNameChanged)
            //{
            //    this._NeedGenerateFullPaths = (rContainer != null && rContainer.CurrentChildren.Count > 0);

            //    this.Data.CurrentParentRelations.ForEach(relation =>
            //    {
            //        if (relation.FullPath.IsNotEmpty())
            //        {
            //            int index = relation.FullPath.LastIndexOf(originalName);

            //            if (index >= 0)
            //                relation.FullPath = relation.FullPath.Substring(0, index) + currentName;
            //        }
            //    });

            //    context["parentRelations"] = this.Data.CurrentParentRelations;
            //}

            //this.Validate();

            //if (this._NeedDeleteRelations)
            //{
            //    //加载关系对象,然后为了统一删除和打标志。
            //    if (rContainer != null)
            //        context["childrenRelations"] = rContainer.CurrentChildrenRelations;

            //    context["parentRelations"] = this.Data.CurrentParentRelations;
            //}

            //if (this._NeedDeleteMemberRelations)
            //{
            //    if (this.Data is IDEMemberObject)
            //        context["containersRelations"] = ((IDEMemberObject)this.Data).GetCurrentMemberOfRelations();

            //    if (this.Data is IDEContainerObject)
            //        context["membersRelations"] = ((IDEContainerObject)this.Data).GetCurrentMembersRelations();
            //}

            //if (this.Data.Status != SchemaObjectStatus.Normal)
            //{
            //    if (this.Data is IDEAclContainer)
            //        context["aclMembers"] = ((IDEAclContainer)this.Data).GetAclMembers();

            //    if (this.Data is IDEAclMember)
            //        context["aclContainers"] = ((IDEAclMember)this.Data).GetAclContainers();
            //}
        }
Ejemplo n.º 11
0
 /// <summary>
 /// 准备操作日志
 /// </summary>
 /// <param name="context"></param>
 protected virtual void PrepareOperationLog(DESchemaObjectOperationContext context)
 {
 }
Ejemplo n.º 12
0
 /// <summary>
 /// 操作
 /// </summary>
 /// <param name="context"></param>
 /// <returns></returns>
 protected abstract object DoOperation(DESchemaObjectOperationContext context);