예제 #1
0
 private void CheckPermissions(DEOperationType opType, DESchemaDefine schemaInfo, string permissionName, params string[] containerIDs)
 {
     if (NeedCheckPermissionAndCurrentUserIsNotSupervisor && DeluxePrincipal.Current.HasPermissions(permissionName, containerIDs) == false)
     {
         throw DEAclPermissionCheckException.CreateException(opType, schemaInfo, permissionName);
     }
 }
예제 #2
0
        public DEObjectExecutor(DEOperationType opType, DEBase data)
            : base(opType)
        {
            data.NullCheck("data");

            data.ClearRelativeData();
            this._Data = data;
        }
예제 #3
0
        public DEMemberCollectionRelativeExecutorBase(DEOperationType opType, DEBase container, DESchemaObjectCollection members)
            : base(opType, container)
        {
            container.NullCheck("container");
            container.ClearRelativeData();

            members.NullCheck("members");
            members.ForEach(p => p.ClearRelativeData());

            this._Container = container;
            this._Members   = members;

            this.SaveMemberData = true;
        }
예제 #4
0
        public DEMemberRelativeExecutorBase(DEOperationType opType, DESchemaObjectBase container, DEBase member)
            : base(opType, member)
        {
            container.NullCheck("container");

            container.ClearRelativeData();

            if (member != null)
            {
                member.ClearRelativeData();
            }

            this._Container = container;
            this._Relation  = PrepareRelationObject(container, member);
        }
        public static DEOperationLog ToOperationLog(this DEBase data, DEOperationType opType)
        {
            data.NullCheck("data");

            DEOperationLog log = DEOperationLog.CreateLogFromEnvironment();

            log.ResourceID    = data.ID;
            log.SchemaType    = data.SchemaType;
            log.OperationType = opType;
            log.Category      = data.Schema.Category;
            log.Subject       = string.Format("{0}: {1}",
                                              EnumItemDescriptionAttribute.GetDescription(opType), data.Name);

            log.SearchContent = data.ToFullTextString();

            return(log);
        }
예제 #6
0
        private void ExecuteWithActions(DEOperationType operationType, Action action)
        {
            DEDataOperationLockContext.Current.DoAddLockAction(this._AddLock, EnumItemDescriptionAttribute.GetDescription(operationType), () =>
            {
                if (this._NeedExecuteActions && action != null)
                {
                    DEObjectOperationActionCollection actions = DEObjectOperationActionSettings.GetConfig().GetActions();

                    actions.BeforeExecute(operationType);

                    action();

                    actions.AfterExecute(operationType);
                }
                else
                {
                    action();
                }
            });
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="opType"></param>
        /// <param name="permissionName"></param>
        public static DEAclPermissionCheckException CreateException(DEOperationType opType, DESchemaDefine schemaInfo, string permissionName)
        {
            string opDesp = EnumItemDescriptionAttribute.GetDescription(opType);

            DEAclPermissionItem permissionInfo = schemaInfo.PermissionSet[permissionName];

            string permissionDesp = string.Empty;

            if (permissionInfo != null)
            {
                permissionDesp = permissionInfo.Description;

                if (permissionDesp.IsNullOrEmpty())
                {
                    permissionDesp = permissionInfo.Name;
                }
            }

            return(new DEAclPermissionCheckException(string.Format("不能执行\"{0}\"操作,您没有\"{0}\"权限", opDesp, permissionDesp)));
        }
예제 #8
0
 public DEInstenceExecutor(DEOperationType opType, DEEntityInstanceBase data, DEInstenceSnapshotAdapter snapshotAdapter)
     : this(opType, data)
 {
     this.SnapshotAdapter = snapshotAdapter;
 }
 public DEMemberRelativeExecutor(DEOperationType opType, DESchemaObjectBase container, DEBase member)
     : base(opType, container, member)
 {
 }
예제 #10
0
 /// <summary>
 /// 根据指定的操作类型和执行器初始化<see cref="DESchemaObjectOperationContext"/>的新实例。
 /// </summary>
 /// <param name="opType"><see cref="DEOperationType"/>值之一,表示操作的类型</param>
 /// <param name="executor"><see cref="DEExecutorBase"/>对象,表示操作</param>
 public DESchemaObjectOperationContext(DEOperationType opType, DEExecutorBase executor)
 {
     this._OperationType = opType;
     this._Executor      = executor;
 }
예제 #11
0
 public DEStatusCheckException(DESchemaObjectBase relativeObject, DEOperationType opType)
     : base(string.Format("对象\"{0}\"的状态不是正常状态,不能执行{1}操作", relativeObject.Properties["Name"], EnumItemDescriptionAttribute.GetDescription(opType)))
 {
     this._RelativeObject = relativeObject;
     this._OperationType  = opType;
 }
 public void BeforeExecute(DEOperationType operationType)
 {
 }
예제 #13
0
 /// <summary>
 /// 执行之后
 /// </summary>
 /// <param name="operationType"></param>
 public void AfterExecute(DEOperationType operationType)
 {
     this.ForEach(action => action.AfterExecute(operationType));
 }
예제 #14
0
 /// <summary>
 /// 执行之前
 /// </summary>
 /// <param name="obj">一个<see cref="DESchemaObjectBase"/>实例</param>
 public void BeforeExecute(DEOperationType operationType)
 {
     this.ForEach(action => action.BeforeExecute(operationType));
 }
 /// <summary>
 /// 根据指定的操作类型和执行器初始化<see cref="DESchemaObjectOperationContext"/>的新实例。
 /// </summary>
 /// <param name="opType"><see cref="DEOperationType"/>值之一,表示操作的类型</param>
 /// <param name="executor"><see cref="DEExecutorBase"/>对象,表示操作</param>
 public DEInstenceOperationContext(DEOperationType opType, DEInstenceExecutorBase executor)
 {
     this._OperationType = opType;
     this._Executor      = executor;
 }
        public void AfterExecute(DEOperationType operationType)
        {
            //DEOperationSnapshot snapshot = new DEOperationSnapshot() { DEOperationType = operationType };

            //DEOperationSnapshotAdapter.Instance.Update(snapshot);
        }
 protected DEInstenceExecutorBase(DEOperationType opType)
 {
     this.OperationType = opType;
 }
예제 #18
0
 public DEInstenceExecutor(DEOperationType opType, DEEntityInstanceBase data)
     : base(opType)
 {
     this.Data = data;
 }
 public DEMemberCollectionRelativeExecutor(DEOperationType opType, DEBase container, DESchemaObjectCollection members, DEStandardObjectSchemaType relationType)
     : base(opType, container, members, relationType)
 {
 }