Esempio n. 1
0
        public int SaveOriginalValue(Guid _uid, AbstractXReportItem _reportItem, IStorage _storage, int?_lastId,
                                     DateTime _now, AbstractXServer _abstractXServer)
        {
            var items = ((XReportList)_reportItem).Items;

            foreach (var reportListItem in items)
            {
                switch (reportListItem.State)
                {
                case EReportListItemState.ADDED:
                    m_list.Add(reportListItem.Uid);
                    break;

                case EReportListItemState.REMOVED:
                    m_list.Remove(reportListItem.Uid);
                    _abstractXServer.Delete(_storage, reportListItem.Uid, _reportItem.FieldId.GetHashCode(), _now);
                    break;

                case EReportListItemState.ORIGINAL:
                    if (_abstractXServer.IsShrinking)
                    {
                    }
                    else
                    {
                        throw new ArgumentOutOfRangeException();
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            return(-1);
        }
Esempio n. 2
0
        public int SaveOriginalValue(Guid _uid, AbstractXReportItem _reportItem, IStorage _storage,
                                     int?_lastId, DateTime _now, AbstractXServer _abstractXServer)
        {
            var item = (XReportItem <T>)_reportItem;

            Value = item.Value;
            return(_storage.InsertValue(_uid, _reportItem.FieldId.GetHashCode(), item.Value, _lastId, _now));
        }
Esempio n. 3
0
 public AbstractXReportItem CreateReverseReportItem(AbstractXReportItem _reportItem)
 {
     var items = ((XReportList) _reportItem).Items;
     var resultItems = new List<XReportListItem>();
     foreach (var item in items)
     {
         resultItems.Add(new XReportListItem(item.Uid,
                                             item.State == EReportListItemState.ADDED
                                                 ? EReportListItemState.REMOVED
                                                 : EReportListItemState.ADDED));
     }
     var result = new XReportList(_reportItem.FieldId, XReportItemState.CHANGE, resultItems);
     return result;
 }
Esempio n. 4
0
        public AbstractXReportItem CreateReverseReportItem(AbstractXReportItem _reportItem)
        {
            var items       = ((XReportList)_reportItem).Items;
            var resultItems = new List <XReportListItem>();

            foreach (var item in items)
            {
                resultItems.Add(new XReportListItem(item.Uid,
                                                    item.State == EReportListItemState.ADDED
                                                                        ? EReportListItemState.REMOVED
                                                                        : EReportListItemState.ADDED));
            }
            var result = new XReportList(_reportItem.FieldId, XReportItemState.CHANGE, resultItems);

            return(result);
        }
Esempio n. 5
0
        public override void ApplyChanges(AbstractXReportItem _reportItem, bool _firstTime)
        {
            var item = (XReportItem <Guid>)_reportItem;

            switch (_reportItem.State)
            {
            case XReportItemState.ORIGINAL:
                m_original = item.Value;
                if (_firstTime)
                {
                    SetValue(m_original);
                }
                break;

            case XReportItemState.CHANGE:
                SetValue(item.Value);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Esempio n. 6
0
 public AbstractXReportItem CreateReverseReportItem(AbstractXReportItem _item)
 {
     return(new XReportItem <T>(_item.FieldId, Value, XReportItemState.CHANGE));
 }
Esempio n. 7
0
        public override void ApplyChanges(AbstractXReportItem _reportItem, bool _firstTime)
        {
            var rl    = (XReportList)_reportItem;
            var toAdd = new List <Guid>();
            var toDel = new List <Guid>();

            switch (rl.State)
            {
            case XReportItemState.ORIGINAL:
                m_original.Clear();
                foreach (var item in rl.Items.Select(GetChild))
                {
                    m_original.Add(item);
                }
                if (_firstTime)
                {
                    toAdd.AddRange(rl.Items.Select(_item => _item.Uid));
                }
                break;

            case XReportItemState.CHANGE:
                var current = m_dict.Values.ToArray();
                foreach (var item in current)
                {
                    if (!m_original.Contains(item))
                    {
                        toDel.Add(item.Uid);
                        //((IXCollection<TKind>) this).RemoveSilently(item.Uid);
                        //item.Changed -= ItemChanged;
                        //m_client.Release(item);
                    }
                }
                foreach (var item in m_original)
                {
                    if (!current.Contains(item))
                    {
                        toAdd.Add(item.Uid);
                        //((IXCollection<TKind>) this).AddSilently(item);
                    }
                }

                foreach (var item in rl.Items)
                {
                    switch (item.State)
                    {
                    case EReportListItemState.ADDED:
                        toAdd.Add(item.Uid);
                        toDel.Remove(item.Uid);
                        //var add = GetChild(item);
                        //((IXCollection<TKind>) this).AddSilently(add);)
                        break;

                    case EReportListItemState.REMOVED:
                        toDel.Add(item.Uid);
                        toAdd.Remove(item.Uid);
                        //((IXCollection<TKind>) this).RemoveSilently(item.Uid);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            var changed = false;

            foreach (var uid in toAdd)
            {
                changed = true;
                var add = m_client.GetInternal <T>(uid, m_factory, m_ownerUid);
                add.Changed += ItemChanged;
                ((IXCollection <TKind>) this).AddSilently(add);
            }
            foreach (var uid in toDel)
            {
                T del;
                if (m_dict.TryGetValue(uid, out del))
                {
                    changed      = true;
                    del.Changed -= ItemChanged;
                    m_client.Release(del);
                    ((IXCollection <TKind>) this).RemoveSilently(uid);
                }
            }
            if (changed)
            {
                OnChanged();
            }
            UpdateIsDirty();
        }
Esempio n. 8
0
        public int SaveOriginalValue(Guid _uid, AbstractXReportItem _reportItem, IStorage _storage, int? _lastId,
            DateTime _now, AbstractXServer _abstractXServer)
        {
            var items = ((XReportList) _reportItem).Items;
            foreach (var reportListItem in items)
            {
                switch (reportListItem.State)
                {
                    case EReportListItemState.ADDED:
                        m_list.Add(reportListItem.Uid);
                        break;
                    case EReportListItemState.REMOVED:
                        m_list.Remove(reportListItem.Uid);
                        _abstractXServer.Delete(_storage, reportListItem.Uid, _reportItem.FieldId.GetHashCode(), _now);
                        break;
                    case EReportListItemState.ORIGINAL:
                        if(_abstractXServer.IsShrinking)
                        {

                        }
                        else
                        {
                            throw new ArgumentOutOfRangeException();
                        }
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
            }
            return -1;
        }
Esempio n. 9
0
 public abstract void ApplyChanges(AbstractXReportItem _reportItem, bool _firstTime);
Esempio n. 10
0
 public abstract void ApplyChanges(AbstractXReportItem _reportItem, bool _firstTime);