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); }
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)); }
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; }
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); }
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(); } }
public AbstractXReportItem CreateReverseReportItem(AbstractXReportItem _item) { return(new XReportItem <T>(_item.FieldId, Value, XReportItemState.CHANGE)); }
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(); }
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; }
public abstract void ApplyChanges(AbstractXReportItem _reportItem, bool _firstTime);