示例#1
0
        public override AbstractXReportItem UpdateAccordingNewValue(IServerXValue _xValue, AbstractXReportItem _reverseReport)
        {
            var original = ((XReportList) _xValue.GetOriginalValueReportItem(-1, null)).Items.Select(_item => _item.Uid).ToArray();
            var target = original.ToList();
            if (_reverseReport != null)
            {
                foreach (var item in ((XReportList) _reverseReport).Items)
                {
                    switch (item.State)
                    {
                        case EReportListItemState.ADDED:
                            target.Add(item.Uid);
                            break;
                        case EReportListItemState.REMOVED:
                            if (!target.Remove(item.Uid))
                            {
                                throw new ApplicationException();
                            }
                            break;
                        default:
                            throw new ArgumentOutOfRangeException();
                    }
                }
            }

            foreach (var item in Items)
            {
                switch (item.State)
                {
                    case EReportListItemState.ADDED:
                        target.Add(item.Uid);
                        break;
                    case EReportListItemState.REMOVED:
                        if (!target.Remove(item.Uid))
                        {
                            throw new ApplicationException();
                        }
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
            }
            Items.Clear();
            foreach (var uid in target)
            {
                if (!original.Contains(uid)) Items.Add(new XReportListItem(uid, EReportListItemState.ADDED));
            }
            foreach (var uid in original)
            {
                if (!target.Contains(uid)) Items.Add(new XReportListItem(uid, EReportListItemState.REMOVED));
            }
            return this;
        }
示例#2
0
        public override AbstractXReportItem UpdateAccordingNewValue(IServerXValue _xValue, AbstractXReportItem _reverseReport)
        {
            var original = ((XReportList)_xValue.GetOriginalValueReportItem(-1, null)).Items.Select(_item => _item.Uid).ToArray();
            var target   = original.ToList();

            if (_reverseReport != null)
            {
                foreach (var item in ((XReportList)_reverseReport).Items)
                {
                    switch (item.State)
                    {
                    case EReportListItemState.ADDED:
                        target.Add(item.Uid);
                        break;

                    case EReportListItemState.REMOVED:
                        if (!target.Remove(item.Uid))
                        {
                            throw new ApplicationException();
                        }
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
            }

            foreach (var item in Items)
            {
                switch (item.State)
                {
                case EReportListItemState.ADDED:
                    target.Add(item.Uid);
                    break;

                case EReportListItemState.REMOVED:
                    if (!target.Remove(item.Uid))
                    {
                        throw new ApplicationException();
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            Items.Clear();
            foreach (var uid in target)
            {
                if (!original.Contains(uid))
                {
                    Items.Add(new XReportListItem(uid, EReportListItemState.ADDED));
                }
            }
            foreach (var uid in original)
            {
                if (!target.Contains(uid))
                {
                    Items.Add(new XReportListItem(uid, EReportListItemState.REMOVED));
                }
            }
            return(this);
        }
示例#3
0
        public override AbstractXReportItem UpdateAccordingNewValue(IServerXValue _xValue, AbstractXReportItem _reverseReport)
        {
            var item = (XReportItem <T>)_xValue.GetOriginalValueReportItem(-1, null);

            return(item.Value.Equals(Value) ? null : this);
        }
 public abstract AbstractXReportItem UpdateAccordingNewValue(IServerXValue _xValue, AbstractXReportItem _reverseReport);
 public abstract AbstractXReportItem UpdateAccordingNewValue(IServerXValue _xValue, AbstractXReportItem _reverseReport);