Esempio n. 1
0
        private int?GetSortedIndex(IView view)
        {
            if (_views.Count == 0)
            {
                return(null);
            }

            if (ViewComparer != null)
            {
                for (var i = 0; i < _views.Count; i++)
                {
                    if (ViewComparer.Compare(view, _views[i]) < 0)
                    {
                        return(i);
                    }
                }

                return(null);
            }

            if (ViewModelComparer != null)
            {
                for (var i = 0; i < _views.Count; i++)
                {
                    if (ViewModelComparer.Compare(view.ViewModel, _views[i].ViewModel) < 0)
                    {
                        return(i);
                    }
                }

                return(null);
            }

            if (ModelComparer != null)
            {
                for (var i = 0; i < _views.Count; i++)
                {
                    if (ModelComparer.Compare(view.ViewModel?.Model, _views[i].ViewModel?.Model) < 0)
                    {
                        return(i);
                    }
                }
            }

            return(null);
        }
Esempio n. 2
0
        void IEntityStoreOptions.UpdateFrom(EntityModel owner, IEntityStoreOptions other)
        {
            var from = (CqlStoreOptions)other;

            if (from != null && from.HasMaterializedView)
            {
                var mvComparer = new ViewComparer();
                var addedViews = from.MaterializedViews.Except(MaterializedViews, mvComparer);
                foreach (var addedView in addedViews)
                {
                    addedView.Import();
                    this.MaterializedViews.Add(addedView);
                }
                var removedViews = MaterializedViews.Except(from.MaterializedViews, mvComparer);
                foreach (var removedView in removedViews)
                {
                    removedView.MarkDelete();
                }
                // 暂不需要更新
                // var otherViews = this.MaterializedViews.Intersect(from.MaterializedViews, mvComparer);
                // foreach (var otherView in otherViews)
                // {
                //     otherView.UpdateFrom(from.MaterializedViews.Single(t => t.Name == otherView.Name));
                // }
            }
            else
            {
                if (HasMaterializedView)
                {
                    for (int i = 0; i < _materializedViews.Count; i++)
                    {
                        _materializedViews[i].MarkDelete();
                    }
                }
            }
        }
Esempio n. 3
0
 public RailView()
 {
     viewComparer  = new ViewComparer();
     latestUpdates = new Dictionary <EntityId, RailViewEntry>();
     sortList      = new List <KeyValuePair <EntityId, RailViewEntry> >();
 }