/// <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); } }
/// <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); } }
private void llblGetTrialKey_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { ScadaUiUtils.StartProcess(GetTrialKeyUrl()); }
/// <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); } }