Beispiel #1
0
        /// <summary>
        /// Generates a channel map.
        /// </summary>
        public void Generate(string mapFileName)
        {
            try
            {
                using (StreamWriter writer = new(mapFileName, false, Encoding.UTF8))
                {
                    string indexedColumn = GroupByDevices ? "DeviceNum" : "ObjNum";
                    string title         = GroupByDevices ?
                                           ExtensionPhrases.MapByDeviceTitle : ExtensionPhrases.MapByObjectTitle;
                    writer.WriteLine(title);
                    writer.WriteLine(new string('-', title.Length));

                    if (configDatabase.CnlTable.TryGetIndex(indexedColumn, out ITableIndex tableIndex))
                    {
                        if (GroupByDevices)
                        {
                            foreach (Device device in configDatabase.DeviceTable.EnumerateItems())
                            {
                                writer.WriteLine(string.Format(CommonPhrases.EntityCaption,
                                                               device.DeviceNum, device.Name));
                                WriteCnls(writer, tableIndex, device.DeviceNum);
                                writer.WriteLine();
                            }

                            writer.WriteLine(AdminPhrases.EmptyDevice);
                        }
                        else
                        {
                            foreach (Obj obj in configDatabase.ObjTable.EnumerateItems())
                            {
                                writer.WriteLine(string.Format(CommonPhrases.EntityCaption, obj.ObjNum, obj.Name));
                                WriteCnls(writer, tableIndex, obj.ObjNum);
                                writer.WriteLine();
                            }

                            writer.WriteLine(AdminPhrases.EmptyObject);
                        }

                        // channels with unspecified device or object
                        WriteCnls(writer, tableIndex, 0);
                    }
                    else
                    {
                        throw new ScadaException(CommonPhrases.IndexNotFound);
                    }
                }

                ScadaUiUtils.StartProcess(mapFileName);
            }
            catch (Exception ex)
            {
                log.HandleError(ex, ExtensionPhrases.GenerateChannelMapError);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Generates a device map.
        /// </summary>
        public void Generate(string mapFileName)
        {
            try
            {
                using (StreamWriter writer = new(mapFileName, false, Encoding.UTF8))
                {
                    writer.WriteLine(ExtensionPhrases.DeviceMapTitle);
                    writer.WriteLine(new string('-', ExtensionPhrases.DeviceMapTitle.Length));

                    if (configDatabase.DeviceTable.TryGetIndex("CommLineNum", out ITableIndex tableIndex))
                    {
                        foreach (CommLine commLine in configDatabase.CommLineTable.EnumerateItems())
                        {
                            writer.WriteLine(string.Format(CommonPhrases.EntityCaption,
                                                           commLine.CommLineNum, commLine.Name));
                            WriteDevices(writer, tableIndex, commLine.CommLineNum);
                            writer.WriteLine();
                        }

                        // devices with unspecified communication line
                        writer.WriteLine(ExtensionPhrases.EmptyCommLine);
                        WriteDevices(writer, tableIndex, 0);
                    }
                    else
                    {
                        throw new ScadaException(CommonPhrases.IndexNotFound);
                    }
                }

                ScadaUiUtils.StartProcess(mapFileName);
            }
            catch (Exception ex)
            {
                log.HandleError(ex, ExtensionPhrases.GenerateDeviceMapError);
            }
        }
Beispiel #3
0
 private void llblGetTrialKey_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
 {
     ScadaUiUtils.StartProcess(GetTrialKeyUrl());
 }
Beispiel #4
0
        /// <summary>
        /// Executes integrity check.
        /// </summary>
        public void Execute(string outputFileName)
        {
            try
            {
                using (StreamWriter writer = new(outputFileName, false, Encoding.UTF8))
                {
                    writer.WriteLine(ExtensionPhrases.IntegrityCheckTitle);
                    writer.WriteLine(new string('-', ExtensionPhrases.IntegrityCheckTitle.Length));
                    bool hasErrors = false;

                    foreach (IBaseTable baseTable in configDatabase.AllTables)
                    {
                        writer.Write(baseTable.Title);
                        writer.Write("...");

                        SortedSet <int> requiredKeys = new();
                        List <int>      lostKeys     = new();

                        foreach (TableRelation relation in baseTable.Dependent)
                        {
                            if (relation.ChildTable.TryGetIndex(relation.ChildColumn, out ITableIndex index))
                            {
                                foreach (int indexKey in index.EnumerateIndexKeys())
                                {
                                    // if index.AllowNull then 0 means NULL, otherwise 0 is 0
                                    if (indexKey != 0 || !index.AllowNull)
                                    {
                                        requiredKeys.Add(indexKey);
                                    }
                                }
                            }
                            else
                            {
                                throw new ScadaException(CommonPhrases.IndexNotFound);
                            }
                        }

                        foreach (int key in requiredKeys)
                        {
                            if (!baseTable.PkExists(key))
                            {
                                lostKeys.Add(key);
                            }
                        }

                        if (lostKeys.Count > 0)
                        {
                            hasErrors = true;
                            writer.WriteLine(ExtensionPhrases.TableHasErrors);
                            writer.WriteLine(ExtensionPhrases.LostPrimaryKeys + string.Join(", ", lostKeys));
                            writer.WriteLine();
                        }
                        else
                        {
                            writer.WriteLine(ExtensionPhrases.TableCorrect);
                        }
                    }

                    writer.WriteLine(hasErrors ? ExtensionPhrases.BaseHasErrors : ExtensionPhrases.BaseCorrect);
                }

                ScadaUiUtils.StartProcess(outputFileName);
            }
            catch (Exception ex)
            {
                log.HandleError(ex, ExtensionPhrases.IntegrityCheckError);
            }
        }