コード例 #1
0
        internal static void RaiseDbEntityUpdated(this IReactiveDbObject entity)
        {
            var s = state.GetValue(entity, key => (IExtensionState) new ExtensionState(entity));

            s.raiseEntityUpdated();
        }
コード例 #2
0
        public static IObservable <IReactiveDbObjectEventArgs> getDeletedObservable(this IReactiveDbObject This)
        {
            var val = state.GetValue(This, key => (IExtensionState) new ExtensionState(This));

            return(val.Deleted.Cast <IReactiveDbObjectEventArgs>());
        }
コード例 #3
0
        internal static bool RaiseDbValidationEntityError(this IReactiveDbObject entity, ValidationException ex)
        {
            var s = state.GetValue(entity, key => (IExtensionState) new ExtensionState(entity));

            return(s.raiseValidationEntityError(ex));
        }
コード例 #4
0
            /// <summary>
            /// Initializes a new instance of the <see cref="ExtensionState{TSender}"/> class.
            /// </summary>
            public ExtensionState(IReactiveDbObject sender)
            {
                this.sender                 = sender;
                this.addingSubject          = new Subject <IReactiveDbObjectEventArgs>();
                this.addedSubject           = new Subject <IReactiveDbObjectEventArgs>();
                this.updatingSubject        = new Subject <IReactiveDbObjectEventArgs>();
                this.updatedSubject         = new Subject <IReactiveDbObjectEventArgs>();
                this.deletingSubject        = new Subject <IReactiveDbObjectEventArgs>();
                this.deletedSubject         = new Subject <IReactiveDbObjectEventArgs>();
                this.errorSubject           = new Subject <IReactiveDbObjectEventArgs>();
                this.validationErrorSubject = new Subject <ValidationEntityEventArg>();

                this.startDelayNotifications = new Subject <Unit>();
                this.thrownExceptions        = new ScheduledSubject <Exception>(Scheduler.Immediate, ExceptionHandler.Default);

                /* this.addedObservable = createObservable(ref addedSubject);
                 * this.addingObservable = createObservable(ref addingSubject);
                 * this.updatedObservable = createObservable(ref updatedSubject);
                 * this.updatingObservable = createObservable(ref updatingSubject);
                 * this.deletedObservable = createObservable(ref deletedSubject);
                 * this.deletingObservable = createObservable(ref deletingSubject);*/

                this.addedObservable = addedSubject
                                       .Buffer(
                    Observable.Merge(
                        addedSubject.Where(_ => !areChangeNotificationsDelayed()).Select(_ => Unit.Default),
                        startDelayNotifications)
                    )
                                       .SelectMany(batch => dedup(batch))
                                       .Publish()
                                       .RefCount();

                this.addingObservable = addingSubject
                                        .Buffer(
                    Observable.Merge(
                        addingSubject.Where(_ => !areChangeNotificationsDelayed()).Select(_ => Unit.Default),
                        startDelayNotifications)
                    )
                                        .SelectMany(batch => dedup(batch))
                                        .Publish()
                                        .RefCount();

                this.updatedObservable = updatedSubject
                                         .Buffer(
                    Observable.Merge(
                        updatedSubject.Where(_ => !areChangeNotificationsDelayed()).Select(_ => Unit.Default),
                        startDelayNotifications)
                    )
                                         .SelectMany(batch => dedup(batch))
                                         .Publish()
                                         .RefCount();

                this.updatingObservable = updatingSubject
                                          .Buffer(
                    Observable.Merge(
                        updatingSubject.Where(_ => !areChangeNotificationsDelayed()).Select(_ => Unit.Default),
                        startDelayNotifications)
                    )
                                          .SelectMany(batch => dedup(batch))
                                          .Publish()
                                          .RefCount();

                this.deletedObservable = deletedSubject
                                         .Buffer(
                    Observable.Merge(
                        deletedSubject.Where(_ => !areChangeNotificationsDelayed()).Select(_ => Unit.Default),
                        startDelayNotifications)
                    )
                                         .SelectMany(batch => dedup(batch))
                                         .Publish()
                                         .RefCount();

                this.deletingObservable = deletingSubject
                                          .Buffer(
                    Observable.Merge(
                        deletingSubject.Where(_ => !areChangeNotificationsDelayed()).Select(_ => Unit.Default),
                        startDelayNotifications)
                    )
                                          .SelectMany(batch => dedup(batch))
                                          .Publish()
                                          .RefCount();

                this.errorObservable = errorSubject
                                       .Buffer(
                    Observable.Merge(
                        errorSubject.Where(_ => !areChangeNotificationsDelayed()).Select(_ => Unit.Default),
                        startDelayNotifications)
                    )
                                       .SelectMany(batch => dedup(batch))
                                       .Publish()
                                       .RefCount();
                this.errorCountable  = new Countable();
                this.errorObservable = this.errorCountable.GetCountable(this.errorObservable);

                this.validationErrorObservable = validationErrorSubject
                                                 .Publish()
                                                 .RefCount();
                this.validationErrorCountable  = new Countable();
                this.validationErrorObservable = this.validationErrorCountable.GetCountable(this.validationErrorObservable);
            }
コード例 #5
0
        public static IObservable <ValidationEntityEventArg> getValidationErrorObservable(this IReactiveDbObject This)
        {
            var val = state.GetValue(This, key => (IExtensionState) new ExtensionState(This));

            return(val.ValidationError.Cast <ValidationEntityEventArg>());
        }
コード例 #6
0
 public ValidationEntityError(IReactiveDbObject entity, ValidationException ex)
 {
     this.Entity    = entity;
     this.Exception = ex;
 }
コード例 #7
0
 public ValidationEntityException(IReactiveDbObject sender, ValidationEntityEventArg args)
 {
     this.Errors = args;
     this.Sender = sender;
 }
コード例 #8
0
 public ReactiveDbObjectEventArgs(IReactiveDbObject sender, Exception ex)
 {
     this.Sender    = sender;
     this.Exception = ex;
 }
コード例 #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ReactivePropertyChangedEventArgs{TSender}"/> class.
 /// </summary>
 /// <param name="sender">The sender.</param>
 public ReactiveDbObjectEventArgs(IReactiveDbObject sender) : this(sender, null)
 {
 }