private void DragAdjacentFeaturesAlong(LinearNetworkNodeUpdater nodeUpdater)
        {
            var edgeFeatureUpdates = GetEdgeFeatures(_updatedInOperation.Keys).ToList();
            var junctionUpdates    = GetJunctionFeatures(_updatedInOperation.Keys).ToList();

            foreach (IFeature edgeFeature in edgeFeatureUpdates)
            {
                var originalPolyline = (IPolyline)_updatedInOperation[edgeFeature];

                IPolyline newPolyline = (IPolyline)edgeFeature.Shape;

                bool newPolylineChanged = nodeUpdater.UpdateEdgeNodes(edgeFeature, originalPolyline,
                                                                      newPolyline);

                if (newPolylineChanged)
                {
                    GdbObjectUtils.SetFeatureShape(edgeFeature, newPolyline);
                    edgeFeature.Store();
                }
            }

            foreach (IFeature junctionFeature in junctionUpdates)
            {
                var originalPoint = (IPoint)_updatedInOperation[junctionFeature];

                nodeUpdater.JunctionUpdated(junctionFeature, originalPoint,
                                            (IPoint)junctionFeature.Shape);
            }
        }
        private IEnumerable <IFeature> DragAdjacentFeaturesAlong()
        {
            if (_updatedInOperation.Count == 0)
            {
                return(new List <IFeature>(0));
            }

            LinearNetworkNodeUpdater nodeUpdater =
                new LinearNetworkNodeUpdater(NetworkFeatureFinder)
            {
                KnownInserts = _createdInOperation,
                KnownDeletes = _deletedInOperation
            };

            DragAdjacentFeaturesAlong(nodeUpdater);

            if (nodeUpdater.RefreshEnvelope != null)
            {
                RefreshArea?.Union(nodeUpdater.RefreshEnvelope);
            }

            _msg.DebugFormat("Maintained connectivity by dragging end points with {0}",
                             StringUtils.Concatenate(nodeUpdater.UpdatedFeatures,
                                                     f => GdbObjectUtils.ToString(f), ", "));

            return(nodeUpdater.UpdatedFeatures);
        }