Exemplo n.º 1
0
        protected IRelationUpdateItem CloneRelation(IRelationUpdateItem original)
        {
            RelationUpdateItem clone = new RelationUpdateItem();

            clone.MemberName  = original.MemberName;
            clone.AddedORIs   = CloneObjRefs(original.AddedORIs);
            clone.RemovedORIs = CloneObjRefs(original.RemovedORIs);
            return(clone);
        }
Exemplo n.º 2
0
        public IRelationUpdateItem BuildRUI()
        {
            RelationUpdateItem rui = new RelationUpdateItem();

            rui.MemberName  = memberName;
            rui.AddedORIs   = AddedORIs;
            rui.RemovedORIs = RemovedORIs;
            return(rui);
        }
Exemplo n.º 3
0
        public IRelationUpdateItem CreateRUI(String memberName, IList <IObjRef> oldOriList, IList <IObjRef> newOriList)
        {
            if (oldOriList.Count == 0 && newOriList.Count == 0)
            {
                return(null);
            }
            IISet <IObjRef> oldSet = oldOriList.Count > 0 ? new CHashSet <IObjRef>(oldOriList) : EmptySet.Empty <IObjRef>();
            IISet <IObjRef> newSet = newOriList.Count > 0 ? new CHashSet <IObjRef>(newOriList) : EmptySet.Empty <IObjRef>();

            IISet <IObjRef> smallerSet = ((ICollection)oldSet).Count > ((ICollection)newSet).Count ? newSet : oldSet;
            IISet <IObjRef> greaterSet = ((ICollection)oldSet).Count > ((ICollection)newSet).Count ? oldSet : newSet;

            // Check unchanged ORIs
            Iterator <IObjRef> smallerIter = smallerSet.Iterator();

            while (smallerIter.MoveNext())
            {
                // Old ORIs, which exist as new ORIs, too, are unchanged
                IObjRef objRef = smallerIter.Current;
                if (greaterSet.Remove(objRef))
                {
                    smallerIter.Remove();
                }
            }
            if (((ICollection)oldSet).Count == 0 && ((ICollection)newSet).Count == 0)
            {
                return(null);
            }
            // Old ORIs are now handled as REMOVE, New ORIs as ADD
            RelationUpdateItem rui = new RelationUpdateItem();

            rui.MemberName = memberName;
            if (((ICollection)oldSet).Count > 0)
            {
                rui.RemovedORIs = oldSet.ToArray();
            }
            if (((ICollection)newSet).Count > 0)
            {
                rui.AddedORIs = newSet.ToArray();
            }
            return(rui);
        }