public override void Start() { Dictionary <long, ElectricalHierarchyData> parentChild = GDAHelper.GetContainerHeirarchy(GdaQuery, new List <ModelCode>(), HierarchyNetworkType); containerHierarchyTree = new HierarchicalFilter(parentChild, HierarchyNetworkType); lfMeasureQuality = new Dictionary <long, MeasurementValueQuality>(); if (NetworkModelQuery == null) { NetworkModelQuery = JobService.OpenNetworkModelQuery(); } JobResult result = CreateResult(); ResultsReady(Guid, result); }
public async Task <ExecutionReport> InitializeTopology() { ModelResourcesDesc resourcesDesc = new ModelResourcesDesc(); ExecutionReport executionReport = new ExecutionReport(); await ClearDictionary <long, ResourceDescription>(ReliableCollectionNames.NetworkModelDictinoary); GDAHelper gdaHelper = new GDAHelper(); Dictionary <long, ResourceDescription> energySources = (await gdaHelper.GetExtentValues(ModelCode.ENERGYSOURCE)).ToDictionary(value => value.Id); Dictionary <long, ResourceDescription> connectivityNodes = (await gdaHelper.GetExtentValues(ModelCode.CONNECTIVITYNODE)).ToDictionary(value => value.Id); Dictionary <long, ResourceDescription> switches = (await gdaHelper.GetExtentValues(ModelCode.SWITCH)).ToDictionary(value => value.Id); Dictionary <long, ResourceDescription> terminals = (await gdaHelper.GetExtentValues(ModelCode.TERMINAL)).ToDictionary(value => value.Id); List <ModelCode> classicBranchElements = resourcesDesc.ClassicBranches; Dictionary <long, ResourceDescription> cimBranches = new Dictionary <long, ResourceDescription>(); foreach (ModelCode classicBranchElement in classicBranchElements) { List <ResourceDescription> branches = await gdaHelper.GetExtentValues(classicBranchElement); foreach (ResourceDescription branch in branches) { cimBranches.Add(branch.Id, branch); } } Dictionary <long, ResourceDescription> otherCimElements = new Dictionary <long, ResourceDescription>(); foreach (ModelCode otherElement in resourcesDesc.OtherElements) { List <ResourceDescription> elements = await gdaHelper.GetExtentValues(otherElement); foreach (ResourceDescription element in elements) { otherCimElements.Add(element.Id, element); } } List <Task> tasks = new List <Task>() { SaveNetworkModelElements(energySources), SaveNetworkModelElements(connectivityNodes), SaveNetworkModelElements(switches), SaveNetworkModelElements(terminals), SaveNetworkModelElements(cimBranches), SaveNetworkModelElements(otherCimElements), }; InternalModelBuilderCIM internalModelBuilder = new InternalModelBuilderCIM(new CModelFramework()); internalModelBuilder.ReadSources(energySources, terminals); internalModelBuilder.ReadConnectivityNodes(connectivityNodes, terminals); internalModelBuilder.ReadBranches(cimBranches, terminals); internalModelBuilder.ReadSwitches(switches, terminals); IEnumerable <TopologyResult> topologyResults = null; try { topologyResults = await TopologyRequest.AnalyzeTopology(internalModelBuilder.InternalModel); } catch (Exception e) { string message = $"Analyze topology failed with error {e.Message}"; Logger.LogError(message); executionReport.Message = message; executionReport.Status = ExecutionStatus.ERROR; return(executionReport); } if (topologyResults != null) { try { await SaveTopologyModel(topologyResults); string message = $"Save topology successfully completed"; Logger.LogInformation(message); executionReport.Message = message; executionReport.Status = ExecutionStatus.SUCCESS; } catch (Exception e) { string message = $"Save topology model failed with error: {e.Message}"; Logger.LogError(message, e); executionReport.Message = message; executionReport.Status = ExecutionStatus.ERROR; } } else { string message = $"Some error ocurred on topology analyzer service"; Logger.LogError(message); executionReport.Message = message; executionReport.Status = ExecutionStatus.ERROR; } await Task.WhenAll(tasks); //Save network model version long currentNetworkModelVersion = await gdaHelper.GetVersion(); var networkModelVersionDictionary = await this.stateManager.GetOrAddAsync <IReliableDictionary <string, long> >(ReliableCollectionNames.NetworkModelVersionDictionary); await networkModelVersionDictionary.ClearAsync(); using (var tx = this.stateManager.CreateTransaction()) { await networkModelVersionDictionary.AddAsync(tx, ReliableCollectionNames.NetworkModelVersionDictionary, currentNetworkModelVersion); await tx.CommitAsync(); } return(executionReport); }
private void RefreshHierarhy() { Dictionary <long, ElectricalHierarchyData> parentChild = GDAHelper.GetContainerHeirarchy(GdaQuery, new List <ModelCode>(), HierarchyNetworkType); containerHierarchyTree = new HierarchicalFilter(parentChild, HierarchyNetworkType); }