Esempio n. 1
0
        protected virtual bool Remove(TSinkItem item, bool inSource)
        {
            if (item == null)
            {
                return(false);
            }

            var sourceItem = Get(item);

            RemoveEdgeInMapping(Sink.DepthFirstTwig(item));
            var result    = false;
            var sinkGraph = Sink as ISinkGraph <TSinkItem, TSinkEdge>;

            if (inSource || sinkGraph == null)
            {
                result = Sink.Remove(item);
            }
            else
            {
                result = sinkGraph.RemoveSinkItem(item);
            }

            if (sourceItem != null)
            {
                RemoveEdgeInMapping(Source.DepthFirstTwig(sourceItem));
                if (inSource)
                {
                    Source.Remove(sourceItem);
                }
                Mapper.Source2Sink.Remove(sourceItem);
            }

            Mapper.Sink2Source.Remove(item);

            return(result);
        }