Beispiel #1
0
 public EMSLoadFlowLoadViewModel(EMSLoadFlowLoadRecord reportRecord, bool tabularViewActive)
 {
     if (reportRecord == null)
     {
         DMSLogger.Log(DMSLogger.LogLevel.Error, "Parameter reportRecord passed to EMSLoadFlowLoadViewModel(), should not be null.");
         return;
     }
     this.reportRecord              = reportRecord;
     recordType                     = (DMSType)ModelCodeHelper.ExtractTypeFromGlobalId(reportRecord.Lid);
     DataGridTreeViewItemInfo       = new HierarchicalReportRecord();
     DataGridTreeViewItemInfo.Lid   = reportRecord.Lid;
     DataGridTreeViewItemInfo.Level = reportRecord.Level;
     DataGridTreeViewItemInfo.ElementIsShownInTabularView = reportRecord.ElementIsShownInTabularView;
     if (String.IsNullOrEmpty(reportRecord.Title))
     {
         DataGridTreeViewItemInfo.Title = DmsTypeToEntityNameMapper.GetAutomatedName((DMSType)ModelCodeHelper.ExtractTypeFromGlobalId(reportRecord.Lid), reportRecord.Lid);
     }
     else
     {
         DataGridTreeViewItemInfo.Title = reportRecord.Title;
     }
     tabularViewIsActive = tabularViewActive;
     if (tabularViewActive && !this.reportRecord.ElementIsShownInTabularView)
     {
         rowIsNotVisible = true;
     }
 }
Beispiel #2
0
        private EMSLoadFlowNodeRecord CreateEMSLoadFlowNodeRecord(HierarchicalFilter hierarchyTree, long id)
        {
            EMSLoadFlowNodeRecord  rec = new EMSLoadFlowNodeRecord();
            HierarchicalRecordData recordData;

            if (!hierarchicalRecordData.TryGetValue(id, out recordData))
            {
                DMSLogger.Log(DMSLogger.LogLevel.DebugLog, "[EMSLoadFlow]: Record { 0:X} does not exists in hierarchical record data dictionary.", id);
                return(rec);
            }
            if (recordData.Name != null && !recordData.Name.Equals(string.Empty))
            {
                rec.Title = string.Format("{0}", recordData.Name);
            }
            else
            {
                rec.Title = string.Empty;
            }
            rec.Lid   = id;
            rec.Level = (byte)hierarchyTreeFilter.GetNodeByLid(id).Level;
            EMSLoadFlowRecordBean data = recordData as EMSLoadFlowRecordBean;

            if (data != null && (DMSType)ModelCodeHelper.ExtractTypeFromGlobalId(id) == DMSType.BUSNODE)
            {
                rec.Voltage      = data.Voltage;
                rec.VoltageLevel = data.VoltageLevel;
                rec.PNode        = data.PNode;
            }
            return(rec);
        }
Beispiel #3
0
        public override void UpdateReference(ModelCode referenceId, long localIdOld, long localIdNew)
        {
            switch (referenceId)
            {
            case ModelCode.BASEVOLTAGE_BARS:
                if (baseVoltage == localIdOld)
                {
                    baseVoltage = localIdNew;
                }
                else
                {
                    DMSLogger.Log(DMSLogger.LogLevel.Warning, string.Format("Entity (GID = 0x{0:x16}, LID = 0x{1:x16}) doesn't contain reference 0x{2:x16}. Reference isn't updated.", this.GlobalId, this.LocalId, localIdOld));
                }

                break;

            default:
                base.UpdateReference(referenceId, localIdOld, localIdNew);
                break;
            }
        }
Beispiel #4
0
        private List <EMSLoadFlowNodeRecord> CreateEMSLoadFlowNodeRecords()
        {
            List <EMSLoadFlowNodeRecord> records = new List <EMSLoadFlowNodeRecord>();

            try
            {
                List <long> gids = GetElementsForSelectedCircuits(selectedRecords, ModelCode.BUSNODERESULTSTA, ModelCode.TARESVAL_PARENTCIRCUIT);
                FillEMSLoadFlowNodeProperties(gids);
                GetElementsNames(gids);
                foreach (long id in selectedRecords)
                {
                    EMSLoadFlowNodeRecord circuitRecord = CreateEMSLoadFlowNodeRecord(hierarchyTreeFilter, id);
                    records.Add(circuitRecord);
                    if (hierarchyTreeFilter.GetNodeByLid(id).Children == null)
                    {
                        continue;
                    }
                    foreach (HierarchicalFilterNode childNode in hierarchyTreeFilter.GetNodeByLid(id).Children)
                    {
                        if ((DMSType)ModelCodeHelper.ExtractTypeFromGlobalId(childNode.Lid) != DMSType.BUSNODE)
                        {
                            continue;
                        }
                        MeasurementValueQuality lfQuality;
                        if (!lfMeasureQuality.TryGetValue(id, out lfQuality) || CheckIsLFStatusDisabled(lfQuality))
                        {
                            continue;
                        }
                        records.Add(CreateEMSLoadFlowNodeRecord(hierarchyTreeFilter, childNode.Lid));
                    }
                }
            }
            catch (Exception)
            {
                DMSLogger.Log(DMSLogger.LogLevel.Error, "[EMSLoadFlow]: Error occurred while creating EMSLoadFlowNode records.");
                throw;
            }
            return(records);
        }
Beispiel #5
0
        private JobResult CreateResult()
        {
            try
            {
                hierarchyTreeFilter = containerHierarchyTree;

                if (selectedRecords.Count > 0)
                {
                    GetEMSLFQuality(selectedRecords);

                    HierarchicalRecordData recordData;
                    if (!hierarchicalRecordData.TryGetValue(selectedRecords[0], out recordData))
                    {
                        return(new EMSLoadFlowReportResult(reportType));
                    }

                    EMSLoadFlowRecordBean data = recordData as EMSLoadFlowRecordBean;

                    if ((DMSType)ModelCodeHelper.ExtractTypeFromGlobalId(selectedRecords[0]) != DMSType.NETWORKINFO)
                    {
                        if (CheckIsLFStatusDisabled(data.Quality))
                        {
                            return(new EMSLoadFlowReportResult(EMSLoadFlowReportType.NoResults));
                        }
                    }
                }
                else
                {
                    return(new EMSLoadFlowReportResult(reportType));
                }

                return(CreateReportResults());
            }
            catch (Exception e)
            {
                DMSLogger.DumpNonFatalExceptionToLog(DMSLogger.LogLevel.DebugLog, e);
                return(new JobError(e.Message));
            }
        }
Beispiel #6
0
        private JobResult CreateReportResults()
        {
            switch (reportType)
            {
            case EMSLoadFlowReportType.Node:
            {
                List <EMSLoadFlowNodeRecord> records = CreateEMSLoadFlowNodeRecords();
                EMSLoadFlowNodeResults       results = new EMSLoadFlowNodeResults {
                    Records = records
                };
                return(results);
            }

            case EMSLoadFlowReportType.Generator:
            {
                List <EMSLoadFlowGeneratorRecord> records = CreateEMSLoadFlowGeneratorRecords();
                EMSLoadFlowGeneratorResults       results = new EMSLoadFlowGeneratorResults {
                    Records = records
                };
                return(results);
            }

            case EMSLoadFlowReportType.Load:
            {
                List <EMSLoadFlowLoadRecord> records = CreateEMSLoadFlowLoadRecords();
                EMSLoadFlowLoadResults       results = new EMSLoadFlowLoadResults {
                    Records = records
                };
                return(results);
            }

            default:
            {
                DMSLogger.Log(DMSLogger.LogLevel.Error, "[EMSLoadFlow]: Error while creating results for EMSLoadFlow Report.EMSLoadFlowReportType {0} is unsupported.", reportType);
                return(new JobError(string.Format("Error while creating results for EMSLoadFlow Report.EMSLoadFlowReportType {0} is unsupported.", reportType)));
            }
            }
        }
Beispiel #7
0
        /// <summary>
        /// Method is used for preparing input data.
        /// </summary>
        public void PrepareReportData()
        {
            long mdc = 0;
            int  iteratorId;
            int  count;

            if (containerHierarchyTree == null || containerHierarchyTree.AllNodes == null)
            {
                DMSLogger.Log(DMSLogger.LogLevel.DebugLog, "[reportParam]: PrepareReReportData all nodes in hierarchy tree are null.");
                return;
            }

            HierarchicalFilter hierTree = containerHierarchyTree;

            hierarchicalRecordData = new Dictionary <long, HierarchicalRecordData>(hierTree.AllNodes.Count);

            if (selectedRecords == null)
            {
                DMSLogger.Log(DMSLogger.LogLevel.DebugLog, "[EMSLoadFlowEMSLF]: PrepareReportData selected record is null.");
                return;
            }

            foreach (long nodeID in selectedRecords.Where(nodeID => !hierarchicalRecordData.ContainsKey(nodeID)))
            {
                hierarchicalRecordData.Add(nodeID, new EMSLoadFlowRecordBean());
            }

            // Get Names for all circuits
            List <long> nameSources = new List <long>(hierarchicalRecordData.Keys);

            if (nameSources.Count <= 0)
            {
                DMSLogger.Log(DMSLogger.LogLevel.DebugLog, "[EMSLoadFlow]: PrepareReportData selected records count is not possitive.");
                return;
            }
            try
            {
                mdc        = 0;
                iteratorId = GdaQuery.GetDescendentValues(0, new List <ModelCode>(new[] { ModelCode.IDOBJ_NAME }), new List <Association>(), nameSources, new List <Association>(), ref mdc);
                count      = GdaQuery.IteratorResourcesLeft(iteratorId);
                while (count > 0)
                {
                    List <ResourceDescription> rds = GdaQuery.IteratorNext(50000, iteratorId);
                    for (int i = 0; i < rds.Count; i++)
                    {
                        hierarchicalRecordData[rds[i].Id].Name = rds[i].GetProperty(ModelCode.IDOBJ_NAME).AsString();
                    }

                    count -= rds.Count;
                }

                GdaQuery.IteratorClose(iteratorId);

                mdc        = 0;
                iteratorId = GdaQuery.GetDescendentValues(0, new List <ModelCode>(new[] { ModelCode.LFRESVAL_QUALITY }), new List <Association>(), nameSources, new List <Association>(), ref mdc);
                count      = GdaQuery.IteratorResourcesLeft(iteratorId);
                while (count > 0)
                {
                    List <ResourceDescription> rds = GdaQuery.IteratorNext(50000, iteratorId);
                    for (int i = 0; i < rds.Count; i++)
                    {
                        EMSLoadFlowRecordBean temp = (EMSLoadFlowRecordBean)hierarchicalRecordData[rds[i].Id];
                        temp.Quality = (MeasurementValueQuality)rds[i].GetProperty(ModelCode.LFRESVAL_QUALITY).AsInt();
                    }

                    count -= rds.Count;
                }

                GdaQuery.IteratorClose(iteratorId);
            }
            catch (Exception ex)
            {
                DMSLogger.Log(DMSLogger.LogLevel.Error, "[EMSLoadFlow]: Error occurred while preparing EMSLoadFlow report data.");
                DMSLogger.DumpNonFatalExceptionToLog(DMSLogger.LogLevel.DebugLog, ex);
            }
        }