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); }
public IRelationUpdateItem BuildRUI() { RelationUpdateItem rui = new RelationUpdateItem(); rui.MemberName = memberName; rui.AddedORIs = AddedORIs; rui.RemovedORIs = RemovedORIs; return(rui); }
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); }