public async Task <ExecutionReport> GetOpenDSSScript(long rootId) { ExecutionReport executionReport = new ExecutionReport(); var networkModelVersionDictionary = await this.stateManager.GetOrAddAsync <IReliableDictionary <string, long> >(ReliableCollectionNames.NetworkModelVersionDictionary); long lastSavedVersion = -1; using (var tx = this.stateManager.CreateTransaction()) { var result = await networkModelVersionDictionary.TryGetValueAsync(tx, ReliableCollectionNames.NetworkModelVersionDictionary); if (result.HasValue) { lastSavedVersion = result.Value; } } if (lastSavedVersion == -1) { string message = "There is no network model saved on model management service."; Logger.LogDebug(message); executionReport.Message = message; executionReport.Status = ExecutionStatus.SUCCESS; return(executionReport); } var topologyResultDictionary = await this.stateManager.GetOrAddAsync <IReliableDictionary <long, TopologyResult> >(ReliableCollectionNames.TopologyResultDictionary); TopologyResult topologyResult = null; using (ITransaction tx = this.stateManager.CreateTransaction()) { if (await topologyResultDictionary.GetCountAsync(tx) == 0) { string message = "There is no topology model saved on model management service."; Logger.LogDebug(message); executionReport.Message = message; executionReport.Status = ExecutionStatus.SUCCESS; return(executionReport); } var result = await topologyResultDictionary.TryGetValueAsync(tx, rootId); if (!result.HasValue) { string message = $"Root id {rootId} is not presented in topology model"; Logger.LogError(message); executionReport.Message = message; executionReport.Status = ExecutionStatus.ERROR; return(executionReport); } topologyResult = result.Value; } Dictionary <long, ResourceDescription> networkModel = await GetAllNetworkModelElementsFromReliableDictionary(ReliableCollectionNames.NetworkModelDictinoary); OpenDSSScriptBuilder openDSSScriptBuilder = new OpenDSSScriptBuilder(networkModel, topologyResult); try { executionReport.Message = openDSSScriptBuilder.GenerateDSSScript(); executionReport.Status = ExecutionStatus.SUCCESS; } catch (Exception e) { string message = $"Generate DSS Script failed with error: {e.Message}"; Logger.LogError(message, e); executionReport.Message = message; } return(executionReport); }
public OpenDSSScriptBuilder(Dictionary <long, ResourceDescription> resources, TopologyResult topology) { Resources = resources; Topology = topology; modelResourcesDesc = new ModelResourcesDesc(); }