LoadKeys() public static method

LoadKeys Phasor information as an ObservableCollection{T} style list.
public static LoadKeys ( AdoDataConnection database, int deviceID, string sortMember = "", string sortDirection = "" ) : IList
database AdoDataConnection to connection to database.
deviceID int ID of the to filter data.
sortMember string The field to sort by.
sortDirection string ASC or DESC for ascending or descending respectively.
return IList
示例#1
0
        /// <summary>
        /// Adds multiple devices to output steam.
        /// </summary>
        /// <param name="database"><see cref="AdoDataConnection"/> to connection to database.</param>
        /// <param name="outputStreamID">ID of the output stream to which devices needs to be added.</param>
        /// <param name="devices">Collection of devices to be added.</param>
        /// <param name="addDigitals">Boolean flag indicating if analogs should be added.</param>
        /// <param name="addAnalogs">Boolean flag indicating if digirals should be added.</param>
        /// <returns>String, for display use, indicating success.</returns>
        public static string AddDevices(AdoDataConnection database, int outputStreamID, ObservableCollection <Device> devices, bool addDigitals, bool addAnalogs)
        {
            bool createdConnection = false;

            try
            {
                createdConnection = CreateConnection(ref database);

                foreach (Device device in devices)
                {
                    OutputStreamDevice outputStreamDevice = new OutputStreamDevice();
                    outputStreamDevice.NodeID     = device.NodeID;
                    outputStreamDevice.AdapterID  = outputStreamID;
                    outputStreamDevice.Acronym    = device.Acronym.Substring(device.Acronym.LastIndexOf("!", StringComparison.Ordinal) + 1);
                    outputStreamDevice.BpaAcronym = string.Empty;
                    outputStreamDevice.Name       = device.Name;
                    outputStreamDevice.LoadOrder  = device.LoadOrder;
                    outputStreamDevice.Enabled    = true;
                    outputStreamDevice.IDCode     = device.AccessID;
                    Save(database, outputStreamDevice);

                    outputStreamDevice = GetOutputStreamDevice(database, "WHERE Acronym = '" + outputStreamDevice.Acronym + "' AND AdapterID = " + outputStreamID);

                    if ((object)outputStreamDevice != null)
                    {
                        IList <int> keys = Phasor.LoadKeys(database, device.ID);
                        ObservableCollection <Phasor> phasors = Phasor.Load(database, keys);
                        foreach (Phasor phasor in phasors)
                        {
                            OutputStreamDevicePhasor outputStreamDevicePhasor = new OutputStreamDevicePhasor();
                            outputStreamDevicePhasor.NodeID = device.NodeID;
                            outputStreamDevicePhasor.OutputStreamDeviceID = outputStreamDevice.ID;
                            outputStreamDevicePhasor.Label     = phasor.Label;
                            outputStreamDevicePhasor.Type      = phasor.Type;
                            outputStreamDevicePhasor.Phase     = phasor.Phase;
                            outputStreamDevicePhasor.LoadOrder = phasor.SourceIndex;
                            OutputStreamDevicePhasor.Save(database, outputStreamDevicePhasor);
                        }

                        ObservableCollection <Measurement> measurements = Measurement.Load(database, device.ID);
                        int analogIndex = 0;
                        foreach (Measurement measurement in measurements)
                        {
                            if (measurement.SignalAcronym != "STAT" && measurement.SignalAcronym != "QUAL")
                            {
                                measurement.SignalReference = measurement.SignalReference.Substring(measurement.SignalReference.LastIndexOf("!", StringComparison.Ordinal) + 1);

                                if ((measurement.SignalAcronym != "ALOG" && measurement.SignalAcronym != "DIGI") || (measurement.SignalAcronym == "ALOG" && addAnalogs) || (measurement.SignalAcronym == "DIGI" && addDigitals))
                                {
                                    OutputStreamMeasurement outputStreamMeasurement = new OutputStreamMeasurement();
                                    outputStreamMeasurement.NodeID          = device.NodeID;
                                    outputStreamMeasurement.AdapterID       = outputStreamID;
                                    outputStreamMeasurement.HistorianID     = measurement.HistorianID;
                                    outputStreamMeasurement.PointID         = measurement.PointID;
                                    outputStreamMeasurement.SignalReference = measurement.SignalReference;
                                    OutputStreamMeasurement.Save(database, outputStreamMeasurement);
                                }

                                if (addAnalogs && measurement.SignalAcronym == "ALOG")
                                {
                                    OutputStreamDeviceAnalog outputStreamDeviceAnalog = new OutputStreamDeviceAnalog();
                                    outputStreamDeviceAnalog.NodeID = device.NodeID;
                                    outputStreamDeviceAnalog.OutputStreamDeviceID = outputStreamDevice.ID;
                                    outputStreamDeviceAnalog.Label = string.IsNullOrEmpty(measurement.AlternateTag) ? device.Acronym.Length > 12 ? device.Acronym.Substring(0, 12) + ":A" + analogIndex : device.Acronym + ":A" + analogIndex : measurement.AlternateTag; // measurement.PointTag;

                                    int charIndex = measurement.SignalReference.LastIndexOf("-", StringComparison.Ordinal);
                                    int signalIndex;

                                    if (charIndex >= 0 && charIndex + 3 < measurement.SignalReference.Length && int.TryParse(measurement.SignalReference.Substring(charIndex + 3), out signalIndex))
                                    {
                                        outputStreamDeviceAnalog.LoadOrder = signalIndex;
                                    }
                                    else
                                    {
                                        outputStreamDeviceAnalog.LoadOrder = 999;
                                    }

                                    OutputStreamDeviceAnalog.Save(database, outputStreamDeviceAnalog);
                                    analogIndex++;
                                }
                                else if (addDigitals && measurement.SignalAcronym == "DIGI")
                                {
                                    OutputStreamDeviceDigital outputStreamDeviceDigital = new OutputStreamDeviceDigital();
                                    outputStreamDeviceDigital.NodeID = device.NodeID;
                                    outputStreamDeviceDigital.OutputStreamDeviceID = outputStreamDevice.ID;
                                    outputStreamDeviceDigital.Label = string.IsNullOrEmpty(measurement.AlternateTag) ? DefaultDigitalLabel : measurement.AlternateTag;     // measurement.PointTag;

                                    int charIndex = measurement.SignalReference.LastIndexOf("-", StringComparison.Ordinal);
                                    int signalIndex;

                                    if (charIndex >= 0 && charIndex + 3 < measurement.SignalReference.Length && int.TryParse(measurement.SignalReference.Substring(charIndex + 3), out signalIndex))
                                    {
                                        outputStreamDeviceDigital.LoadOrder = signalIndex;
                                    }
                                    else
                                    {
                                        outputStreamDeviceDigital.LoadOrder = 999;
                                    }

                                    OutputStreamDeviceDigital.Save(database, outputStreamDeviceDigital);
                                }
                            }
                        }
                    }
                }

                return("Output Stream Device(s) added successfully!");
            }
            finally
            {
                if (createdConnection && database != null)
                {
                    database.Dispose();
                }
            }
        }