private void UpdateSegmentEndIndex(FiberInfo oldConduitInfo, FiberInfo newConduitInfo) { if (oldConduitInfo != null) { // Remove all old references foreach (var segment in oldConduitInfo.Segments) { _fiberSegmentEndsByPointOfInterestId[segment.FromRouteNodeId].Remove(segment); _fiberSegmentEndsByPointOfInterestId[segment.ToRouteNodeId].Remove(segment); } } // Add new references foreach (var segment in newConduitInfo.Segments) { if (!_fiberSegmentEndsByPointOfInterestId.ContainsKey(segment.FromRouteNodeId)) { _fiberSegmentEndsByPointOfInterestId[segment.FromRouteNodeId] = new List <ISegment>(); } _fiberSegmentEndsByPointOfInterestId[segment.FromRouteNodeId].Add(segment); if (!_fiberSegmentEndsByPointOfInterestId.ContainsKey(segment.ToRouteNodeId)) { _fiberSegmentEndsByPointOfInterestId[segment.ToRouteNodeId] = new List <ISegment>(); } _fiberSegmentEndsByPointOfInterestId[segment.ToRouteNodeId].Add(segment); } }
private void UpdateSegmentPassByIndex(FiberInfo oldFiberInfo, FiberInfo newFiberInfo) { var conduitWalkOfInterest = routeNetworkQueryService.GetWalkOfInterestInfo(newFiberInfo.GetRoot().WalkOfInterestId); if (oldFiberInfo != null) { // Remove old references foreach (var segment in oldFiberInfo.Segments.OfType <FiberSegmentInfo>()) { var passThrougNodes = GetPassThroughNodes(segment, conduitWalkOfInterest); foreach (var passThroughNode in passThrougNodes) { _fiberSegmentPassByPointOfInterestId[passThroughNode].Remove(segment); } } } // Add new references foreach (var segment in newFiberInfo.Segments.OfType <FiberSegmentInfo>()) { var passThrougNodes = GetPassThroughNodes(segment, conduitWalkOfInterest); foreach (var passThroughNode in passThrougNodes) { if (!_fiberSegmentPassByPointOfInterestId.ContainsKey(passThroughNode)) { _fiberSegmentPassByPointOfInterestId[passThroughNode] = new List <ISegment>(); } _fiberSegmentPassByPointOfInterestId[passThroughNode].Add(segment); } } }
public bool CheckIfConduitIsCut(Guid conduitId, Guid pointOfInterestId) { FiberInfo fiberCableToCheck = null; if (_fiberCableInfos.ContainsKey(conduitId)) { fiberCableToCheck = _fiberCableInfos[conduitId]; } else { throw new KeyNotFoundException("Cannot find any fiber cable with id: " + conduitId); } // Check if fiber cable is cut if (fiberCableToCheck.Segments.Exists(s => s.FromRouteNodeId == pointOfInterestId || s.ToRouteNodeId == pointOfInterestId)) { return(true); } else { return(false); } }
public void Update(FiberInfo oldConduitInfo, FiberInfo newConduitInfo) { UpdateSegmentEndIndex(oldConduitInfo, newConduitInfo); UpdateSegmentPassByIndex(oldConduitInfo, newConduitInfo); UpdateRouteSegmentPassByIndex(oldConduitInfo, newConduitInfo); }