Example #1
0
        /// <summary>
        /// Saves <see cref="CalculatedMeasurement"/> information to database.
        /// </summary>
        /// <param name="database"><see cref="AdoDataConnection"/> to connection to database.</param>
        /// <param name="calculatedMeasurement">Information about <see cref="CalculatedMeasurement"/>.</param>
        /// <returns>String, for display use, indicating success.</returns>
        public static string Save(AdoDataConnection database, CalculatedMeasurement calculatedMeasurement)
        {
            bool   createdConnection = false;
            string query;

            try
            {
                createdConnection = CreateConnection(ref database);

                if (calculatedMeasurement.ID == 0)
                {
                    query = database.ParameterizedQueryString("INSERT INTO CalculatedMeasurement (NodeID, Acronym, Name, AssemblyName, TypeName, ConnectionString, " +
                                                              "ConfigSection, InputMeasurements, OutputMeasurements, MinimumMeasurementsToUse, FramesPerSecond, LagTime, LeadTime, UseLocalClockAsRealTime, " +
                                                              "AllowSortsByArrival, LoadOrder, Enabled, IgnoreBadTimeStamps, TimeResolution, AllowPreemptivePublishing, DownsamplingMethod, " +
                                                              "PerformTimeReasonabilityCheck, UpdatedBy, UpdatedOn, CreatedBy, CreatedOn) Values ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, " +
                                                              "{9}, {10}, {11}, {12}, {13}, {14}, {15}, {16}, {17}, {18}, {19}, {20}, {21}, {22}, {23}, {24}, {25})", "nodeID", "acronym", "name",
                                                              "assemblyName", "typeName", "connectionString", "configSection", "inputMeasurements", "outputMeasurements", "minimumMeasurementsToUse",
                                                              "framesPerSecond", "lagTime", "leadTime", "useLocalClockAsRealTime", "allowSortsByArrival", "loadOrder", "enabled", "ignoreBadTimeStamps",
                                                              "timeResolution", "allowPreemptivePublishing", "downsamplingMethod", "performTimeReasonabilityCheck", "updatedBy", "updatedOn",
                                                              "createdBy", "createdOn");

                    database.Connection.ExecuteNonQuery(query,
                                                        DefaultTimeout, database.CurrentNodeID(), calculatedMeasurement.Acronym.Replace(" ", "").ToUpper(), calculatedMeasurement.Name.ToNotNull(),
                                                        calculatedMeasurement.AssemblyName, calculatedMeasurement.TypeName, calculatedMeasurement.ConnectionString.ToNotNull(), calculatedMeasurement.ConfigSection.ToNotNull(),
                                                        calculatedMeasurement.InputMeasurements.ToNotNull(), calculatedMeasurement.OutputMeasurements.ToNotNull(), calculatedMeasurement.MinimumMeasurementsToUse,
                                                        calculatedMeasurement.FramesPerSecond, calculatedMeasurement.LagTime, calculatedMeasurement.LeadTime, database.Bool(calculatedMeasurement.UseLocalClockAsRealTime),
                                                        database.Bool(calculatedMeasurement.AllowSortsByArrival), calculatedMeasurement.LoadOrder, database.Bool(calculatedMeasurement.Enabled),
                                                        database.Bool(calculatedMeasurement.IgnoreBadTimeStamps), calculatedMeasurement.TimeResolution, database.Bool(calculatedMeasurement.AllowPreemptivePublishing),
                                                        calculatedMeasurement.DownsamplingMethod, database.Bool(calculatedMeasurement.PerformTimestampReasonabilityCheck), CommonFunctions.CurrentUser,
                                                        database.UtcNow, CommonFunctions.CurrentUser, database.UtcNow);
                }
                else
                {
                    query = database.ParameterizedQueryString("UPDATE CalculatedMeasurement SET NodeID = {0}, Acronym = {1}, Name = {2}, AssemblyName = {3}, " +
                                                              "TypeName = {4}, ConnectionString = {5}, ConfigSection = {6}, InputMeasurements = {7}, OutputMeasurements = {8}, MinimumMeasurementsToUse = {9}, " +
                                                              "FramesPerSecond = {10}, LagTime = {11}, LeadTime = {12}, UseLocalClockAsRealTime = {13}, AllowSortsByArrival = {14}, LoadOrder = {15}, " +
                                                              "Enabled = {16}, IgnoreBadTimeStamps = {17}, TimeResolution = {18}, AllowPreemptivePublishing = {19}, DownsamplingMethod = {20}, " +
                                                              "PerformTimeReasonabilityCheck = {21}, UpdatedBy = {22}, UpdatedOn = {23} WHERE ID = {24}", "nodeID", "acronym", "name", "assemblyName",
                                                              "typeName", "connectionString", "configSection", "inputMeasurements", "outputMeasurements", "minimumMeasurementsToUse", "framesPerSecond",
                                                              "lagTime", "leadTime", "useLocalClockAsRealTime", "allowSortsByArrival", "loadOrder", "enabled", "ignoreBadTimeStamps", "timeResolution",
                                                              "allowPreemptivePublishing", "downsamplingMethod", "performTimeReasonabilityCheck", "updatedBy", "updatedOn", "id");

                    database.Connection.ExecuteNonQuery(query, DefaultTimeout, database.Guid(calculatedMeasurement.NodeID),
                                                        calculatedMeasurement.Acronym.Replace(" ", "").ToUpper(), calculatedMeasurement.Name.ToNotNull(), calculatedMeasurement.AssemblyName,
                                                        calculatedMeasurement.TypeName, calculatedMeasurement.ConnectionString.ToNotNull(), calculatedMeasurement.ConfigSection.ToNotNull(), calculatedMeasurement.InputMeasurements.ToNotNull(),
                                                        calculatedMeasurement.OutputMeasurements.ToNotNull(), calculatedMeasurement.MinimumMeasurementsToUse, calculatedMeasurement.FramesPerSecond,
                                                        calculatedMeasurement.LagTime, calculatedMeasurement.LeadTime, database.Bool(calculatedMeasurement.UseLocalClockAsRealTime), database.Bool(calculatedMeasurement.AllowSortsByArrival),
                                                        calculatedMeasurement.LoadOrder, database.Bool(calculatedMeasurement.Enabled), database.Bool(calculatedMeasurement.IgnoreBadTimeStamps), calculatedMeasurement.TimeResolution,
                                                        database.Bool(calculatedMeasurement.AllowPreemptivePublishing), calculatedMeasurement.DownsamplingMethod, database.Bool(calculatedMeasurement.PerformTimestampReasonabilityCheck),
                                                        CommonFunctions.CurrentUser, database.UtcNow, calculatedMeasurement.ID);
                }

                return("Calculated measurement information saved successfully");
            }
            finally
            {
                if (createdConnection && database != null)
                {
                    database.Dispose();
                }
            }
        }
Example #2
0
        /// <summary>
        /// Loads <see cref="CalculatedMeasurement"/> information as an <see cref="ObservableCollection{T}"/> style list.
        /// </summary>
        /// <param name="database"><see cref="AdoDataConnection"/> to connection to database.</param>
        /// <param name="keys"> Keys of the measurement to be loaded from  the database</param>
        /// <returns>Collection of <see cref="CalculatedMeasurement"/>.</returns>
        public static ObservableCollection <CalculatedMeasurement> Load(AdoDataConnection database, IList <int> keys)
        {
            bool createdConnection = false;

            try
            {
                createdConnection = CreateConnection(ref database);

                string query;
                string commaSeparatedKeys;

                CalculatedMeasurement[] calculatedMeasurementList = null;
                DataTable calculatedMeasurementTable;
                int       id;

                if ((object)keys != null && keys.Count > 0)
                {
                    commaSeparatedKeys = keys.Select(key => key.ToString()).Aggregate((str1, str2) => str1 + "," + str2);

                    query = string.Format("SELECT NodeID, ID, Acronym, Name, AssemblyName, " +
                                          "TypeName, ConnectionString, ConfigSection, InputMeasurements, OutputMeasurements, MinimumMeasurementsToUse, FramesPerSecond, LagTime, " +
                                          "LeadTime, UseLocalClockAsRealTime, AllowSortsByArrival, LoadOrder, Enabled, IgnoreBadTimeStamps, TimeResolution, AllowPreemptivePublishing, " +
                                          "DownSamplingMethod, NodeName, PerformTimeReasonabilityCheck From CalculatedMeasurementDetail WHERE ID IN ({0}) AND NodeID = '{1}'", commaSeparatedKeys, database.CurrentNodeID());

                    calculatedMeasurementTable = database.Connection.RetrieveData(database.AdapterType, query);
                    calculatedMeasurementList  = new CalculatedMeasurement[calculatedMeasurementTable.Rows.Count];

                    foreach (DataRow row in calculatedMeasurementTable.Rows)
                    {
                        id = row.ConvertField <int>("ID");

                        calculatedMeasurementList[keys.IndexOf(id)] = new CalculatedMeasurement()
                        {
                            NodeID                             = database.Guid(row, "NodeID"),
                            ID                                 = id,
                            Acronym                            = row.Field <string>("Acronym"),
                            Name                               = row.Field <string>("Name"),
                            AssemblyName                       = row.Field <string>("AssemblyName"),
                            TypeName                           = row.Field <string>("TypeName"),
                            ConnectionString                   = row.Field <string>("ConnectionString"),
                            ConfigSection                      = row.Field <string>("ConfigSection"),
                            InputMeasurements                  = row.Field <string>("InputMeasurements"),
                            OutputMeasurements                 = row.Field <string>("OutputMeasurements"),
                            MinimumMeasurementsToUse           = row.ConvertField <int>("MinimumMeasurementsToUse"),
                            FramesPerSecond                    = Convert.ToInt32(row.Field <object>("FramesPerSecond") ?? 30),
                            LagTime                            = row.ConvertField <double>("LagTime"),
                            LeadTime                           = row.ConvertField <double>("LeadTime"),
                            UseLocalClockAsRealTime            = Convert.ToBoolean(row.Field <object>("UseLocalClockAsRealTime")),
                            AllowSortsByArrival                = Convert.ToBoolean(row.Field <object>("AllowSortsByArrival")),
                            LoadOrder                          = row.ConvertField <int>("LoadOrder"),
                            Enabled                            = Convert.ToBoolean(row.Field <object>("Enabled")),
                            IgnoreBadTimeStamps                = Convert.ToBoolean(row.Field <object>("IgnoreBadTimeStamps")),
                            TimeResolution                     = Convert.ToInt32(row.Field <object>("TimeResolution")),
                            AllowPreemptivePublishing          = Convert.ToBoolean(row.Field <object>("AllowPreemptivePublishing")),
                            DownsamplingMethod                 = row.Field <string>("DownSamplingMethod"),
                            m_nodeName                         = row.Field <string>("NodeName"),
                            PerformTimestampReasonabilityCheck = Convert.ToBoolean(row.Field <object>("PerformTimeReasonabilityCheck"))
                        };
                    }
                }

                return(new ObservableCollection <CalculatedMeasurement>(calculatedMeasurementList ?? new CalculatedMeasurement[0]));
            }
            finally
            {
                if (createdConnection && database != null)
                {
                    database.Dispose();
                }
            }
        }