예제 #1
0
        /// <summary>
        /// set defaults assuming no parent.
        /// </summary>
        private void SetDefaults()
        {
            this.alreadyCreated = false;
            currentName         = originalName = string.Empty;
            this.enabled        = true;

            this.frequencyType = FrequencyTypes.Weekly;  //SQL2K default value

            this.startDate = DateTime.Now;
            this.startTime = TimeSpan.Zero;

            this.endDate = JobScheduleData.MaxAgentDateValue;
            this.endTime = JobScheduleData.MaxAgentTimeValue;

            this.frequencyInterval = 1; // sunday, SQL2K default value

            this.frequencyRecurranceFactor = 1;

            this.frequencyRelativeInterval = 0;

            this.frequencySubDayInterval = 0;
            this.frequencySubDayTypes    = 0;

            this.id = -1;
        }
예제 #2
0
        /// <summary>
        /// setup internal members based upon a JobSchedule object.
        /// </summary>
        /// <param name="source"></param>
        private void LoadData(JobSchedule source)
        {
            currentName         = originalName = source.Name;
            this.urn            = source.Urn;
            this.alreadyCreated = true;

            this.enabled = source.IsEnabled;

            this.frequencyType = source.FrequencyTypes;

            this.startDate = source.ActiveStartDate;
            this.startTime = source.ActiveStartTimeOfDay;
            this.endDate   = source.ActiveEndDate;
            this.endTime   = source.ActiveEndTimeOfDay;

            this.frequencyInterval = source.FrequencyInterval;

            this.frequencyRecurranceFactor = source.FrequencyRecurrenceFactor;
            this.frequencyRelativeInterval = source.FrequencyRelativeIntervals;

            this.frequencySubDayInterval = source.FrequencySubDayInterval;
            this.frequencySubDayTypes    = source.FrequencySubDayTypes;

            // If this JobSchedule object hasn't been Created yet,
            // then accessing the ID will fail.
            try
            {
                this.id = source.ID;
            }
            catch (Microsoft.SqlServer.Management.Smo.PropertyNotSetException)
            {
                this.alreadyCreated = false;
            }
        }
예제 #3
0
        private string GetxAxesCallback(FrequencyTypes frequency)
        {
            var sb = new StringBuilder("function (value, index, values)");

            sb.Append("{if (value == 0) { return 'Now'; } if (value > 0) {value = -1 * value;}");
            sb.Append($" return value + ' {GetUnitString(frequency)}';");
            sb.Append('}');
            return(sb.ToString());
        }
예제 #4
0
        protected void LoadGraph(
            int monitorCommandId,
            int agentGrpId,
            FrequencyTypes selectedFrequency)
        {
            var chartConfig = CreateServerConfiguration(
                monitorCommandId,
                selectedFrequency,
                agentGrpId);

            chartConfigStringForDay = chartConfig?.MakeChart();
        }
예제 #5
0
 /// <summary>
 ///  set default values that the schedule dialog would show
 /// </summary>
 public void SetDefaults()
 {
     this.ActiveEndDate              = ConvertDateTimeToInt(JobScheduleData.MaxAgentDateValue);
     this.ActiveEndTimeOfDay         = EndOfDay;
     this.ActiveStartDate            = ConvertDateTimeToInt(DateTime.Now);
     this.ActiveStartTimeOfDay       = 0;
     this.FrequencyInterval          = 0;
     this.FrequencyRecurrenceFactor  = 1;
     this.frequencyRelativeIntervals = FrequencyRelativeIntervals.First;
     this.FrequencySubDayInterval    = 0;
     this.frequencySubDayTypes       = FrequencySubDayTypes.Unknown;
     this.frequencyTypes             = FrequencyTypes.Weekly;
     this.isEnabled = true;
     this.ID        = -1;
 }
예제 #6
0
        private int GetMaxUnits(FrequencyTypes frequency)
        {
            int numOfTicks;

            switch (frequency)
            {
            case FrequencyTypes.Minutes:
                numOfTicks = 60;
                break;

            case FrequencyTypes.Hours:
                numOfTicks = 24;
                break;

            default:
                numOfTicks = 30;
                break;
            }
            return(numOfTicks);
        }
예제 #7
0
        private String GetUnitString(FrequencyTypes frequency)
        {
            var unitStr = "";

            switch (frequency)
            {
            case FrequencyTypes.Minutes:
                unitStr = "min";
                break;

            case FrequencyTypes.Hours:
                unitStr = "hour";
                break;

            case FrequencyTypes.Days:
                unitStr = "day";
                break;
            }

            return(unitStr);
        }
예제 #8
0
        internal static string ToSerializedValue(this FrequencyTypes value)
        {
            switch (value)
            {
            case FrequencyTypes.Minute:
                return("Minute");

            case FrequencyTypes.Hour:
                return("Hour");

            case FrequencyTypes.Day:
                return("Day");

            case FrequencyTypes.Week:
                return("Week");

            case FrequencyTypes.Month:
                return("Month");
            }
            return(null);
        }
        public AnalyseEverythingViewModel(AnalyserViewModel parent) : base(parent, "Analyse Everything")
        {
            ObservableCollection <AnalyseEverythingBaseViewModel> analysisMethods = new ObservableCollection <AnalyseEverythingBaseViewModel>();

            foreach (MethodBase method in parent.AnalysisMethods)
            {
                if (method is NoseDisplacementViewModel || method is WhiskerFrequencyViewModel || method is WhiskerMeanOffsetViewModel || method is WhiskerAmplitudeViewModel || method is WhiskerProtractionRetractionViewModel)
                {
                    analysisMethods.Add(new AnalyseEverythingBaseViewModel(this, method));
                }
            }

            AnalysisMethods = analysisMethods;

            ItemsToAnalyse = new ObservableCollection <AnalyseEverythingBaseViewModel>();

            MethodControl = new AnalyseEverythingView()
            {
                DataContext = this,
            };

            ShowFrameSlider = false;

            ObservableCollection <AngleTypeBase> angleOptions = new ObservableCollection <AngleTypeBase>();

            angleOptions.Add(new CenterLineViewModel());
            angleOptions.Add(new VerticalViewModel());
            angleOptions.Add(new HorizontalViewModel());
            AngleOptions        = angleOptions;
            SelectedAngleOption = AngleOptions.First();

            ObservableCollection <FrequencyTypeBaseViewModel> frequencyTypes = new ObservableCollection <FrequencyTypeBaseViewModel>();

            frequencyTypes.Add(new AutocorrelogramViewModel());
            frequencyTypes.Add(new DiscreteFourierTransformViewModel());
            FrequencyTypes        = frequencyTypes;
            SelectedFrequencyType = FrequencyTypes.First();

            Initialise();
        }
예제 #10
0
        public void ProcessHistoryByFrequency(
            MonitorValue monitorValue,
            DateTime dateTime,
            FrequencyTypes frequency)
        {
            DateTime dateStart;
            var      monitorDb = new MonitorDb();

            monitorDb.ConvertFrequencyToSubtractHrs(dateTime, frequency, out dateStart);
            bool isEntryPresentinDb = monitorDb.isEntryPresent(monitorValue, dateStart, frequency);

            if (!isEntryPresentinDb)
            {
                int frequencyToAvgEntries;
                switch (frequency)
                {
                case FrequencyTypes.Hours:
                    frequencyToAvgEntries = 0;
                    monitorValue.Value    = monitorDb.GetAverageValue(
                        monitorValue,
                        frequencyToAvgEntries);
                    break;

                case FrequencyTypes.Days
                    :
                    frequencyToAvgEntries = 1;
                    monitorValue.Value    = monitorDb.GetAverageValue(
                        monitorValue,
                        frequencyToAvgEntries);
                    break;

                default:
                    throw new Exception("frequency is not supported");
                }
                monitorDb.InsertHistory(monitorValue, dateStart, frequency);
            }
        }
예제 #11
0
        private ChartConfiguration CreateServerConfiguration(
            int monitorCommandId,
            FrequencyTypes frequency,
            int agentGroupId)
        {
            var charts = (new MonitorDb()).GetChart(
                monitorCommandId,
                frequency,
                agentGroupId);

            //var unitStr = GetUnitString(frequency);
            if ((charts?.Count ?? 0) == 0)
            {
                lblEmptyData.Visible = true;
                return(null);
            }

            var dataSets = new List <DataSetItem>();

            try
            {
                for (int i = 0; i < charts.Count; i++)
                {
                    var chart       = charts[i];
                    var colorCount  = LibChart.Util.GetColors().Count;
                    var dataSetItem = new DataSetItem()
                    {
                        Label           = chart.AgentName,
                        Data            = chart.ReverseChartPointValues,
                        BorderWidth     = 1,
                        BackgroundColor = LibChart.Util.GetColors(i % colorCount),
                        BorderColor     = LibChart.Util.GetColors()[i % colorCount],
                        Fill            = false
                    };
                    dataSets.Add(dataSetItem);
                }

                var unit = _monitorCommands
                           .Find(x => x.MonitorCommandId == monitorCommandId).Unit;
                var xAxesCallback = GetxAxesCallback(frequency);
                var units         = GetMaxUnits(frequency);
                var xAxesTicks    = new Ticks()
                {
                    Display       = true,
                    BeginAtZero   = true,
                    Max           = units,
                    MaxTicksLimit = 12,
                    Callback      = (new JRaw(xAxesCallback))
                };

                var xAxesTicksItem = new TicksItem()
                {
                    ticks = xAxesTicks
                };


                var yAxesCallback = $@"function (value, index, values) {{
                                        return value + ' {unit}';
                                    }}";

                var yAxesTicks = new Ticks()
                {
                    Callback = new JRaw(yAxesCallback)
                };

                var yAxesTicksItem = new TicksItem()
                {
                    ticks = yAxesTicks
                };

                var chartConfig = new ChartConfiguration
                {
                    Type = ChartType.line.GetChartType(),
                    Data =
                    {
                        Labels   = charts[0]
                                   .ReverseChartPointMinutes
                                   .ConvertAll <string>(x => x.ToString()),
                        Datasets = dataSets
                    },
                    Options =
                    {
                        SpanGaps = true,
                        Title    =
                        {
                            Text  = ddlMonitorCommands.SelectedItem.Text
                        },
                        Scales    = new Scales()
                        {
                            XAxes = new List <TicksItem>()
                            {
                                xAxesTicksItem
                            },
                            YAxes = new List <TicksItem>()
                            {
                                yAxesTicksItem
                            }
                        }
                    }
                };
                return(chartConfig);
            }
            catch (Exception ex)
            {
                throw new Exception($"Exception:{ex.Message}");
            }
        }
예제 #12
0
        private ChartConfiguration CreateServerConfiguration(int monitorCommandId, FrequencyTypes frequency)
        {
            var charts = (new MonitorDb()).GetChart(monitorCommandId, frequency, -1);

            if ((charts?.Count ?? 0) == 0)
            {
                return(null);
            }
            var unit = _monitorCommands
                       .Find(x => x.MonitorCommandId == monitorCommandId).Unit;
            var dataSets = new List <DataSetItem>();

            for (var i = 0; i < charts.Count; i++)
            {
                var chart       = charts[i];
                var colorCount  = LibChart.Util.GetColors().Count;
                var dataSetItem = new DataSetItem()
                {
                    Label           = chart.AgentName,
                    Data            = chart.ReverseChartPointValues,
                    BorderWidth     = 1,
                    BackgroundColor = LibChart.Util.GetColors(i % colorCount),
                    BorderColor     = LibChart.Util.GetColors()[i % colorCount],
                    Fill            = false
                };
                dataSets.Add(dataSetItem);
            }

            var xAxesCallback = @"function (value, index, values) {
                                        if (value > 0) { value = -1 * value;}
                                        return value + ' min';
                                    }";

            var xAxesTicks = new Ticks()
            {
                Display       = true,
                BeginAtZero   = true,
                Max           = 24,
                MaxTicksLimit = 12,
                Callback      = (new JRaw(xAxesCallback))
            };

            var xAxesTicksItem = new TicksItem()
            {
                ticks = xAxesTicks
            };


            var yAxesCallback = $@"function (value, index, values) {{
                                        return value + ' {unit}';
                                    }}";

            var yAxesTicks = new Ticks()
            {
                Callback = new JRaw(yAxesCallback)
            };

            var yAxesTicksItem = new TicksItem()
            {
                ticks = yAxesTicks
            };

            var chartConfig = new ChartConfiguration
            {
                Type = ChartType.line.GetChartType(),
                Data =
                {
                    Labels   = charts[0]
                               .ChartPointMinutes
                               .ConvertAll <string>(x => x.ToString()),
                    Datasets = dataSets
                },
                Options =
                {
                    Title     =
                    {
                        Text  = ddlMonitorCommands.SelectedItem.Text
                    },
                    Scales    = new Scales()
                    {
                        XAxes = new List <TicksItem>()
                        {
                            xAxesTicksItem
                        },
                        YAxes = new List <TicksItem>()
                        {
                            yAxesTicksItem
                        }
                    }
                }
            };

            return(chartConfig);
        }
예제 #13
0
        /// <summary>
        /// 创建包含步骤和计划的作业,返回 string  jobid
        /// </summary>
        /// <param name="KeyId">对象ID</param>
        /// <returns>返回 string</returns>

        public string CreateBilling(string KeyId, string JobType, string KillJobID)
        {
            try
            {
                #region 定义变量

                //数据库名称
                string strDatabaseName = string.Empty;

                //作业名称
                string strJobName = string.Empty;

                //作业ID
                string strJobID = string.Empty;

                //作业说明
                string strDescription = string.Empty;

                //开始时间
                DateTime dtStartDate = System.DateTime.Now;

                //计划频率,Daily:每天、Weekly:每周、Monthly:每月、Run Once:只运行一次
                FrequencyTypes FrequencyType = FrequencyTypes.Daily;

                //开始运行时间 如:10:30:00
                string strRunStartDate = string.Empty;

                //结束运行时间,如:11:05:00
                string strRunEndDate = string.Empty;

                //数据库服务名
                string strSQLServer = string.Empty;

                //数据库登录用户
                string strUser = string.Empty;

                //数据库登录密码
                string strPassword = string.Empty;

                //时
                int hours = 0;

                //分
                int minutes = 0;

                //秒
                int seconds = 0;

                //命令行
                string JobCommandString = string.Empty;
                vSchedulerEmailBackup vSchedulerEmailBackupObj = null;

                #endregion

                //返回vSchedulerEmailBackup 对象,根据id查询
                vSchedulerEmailBackupObj = this.FindvSchedulerEmailBackupById(KeyId);
                if (vSchedulerEmailBackupObj != null)
                {
                    #region 变量赋值

                    //strDatabaseName = "ServiceDirectDB";
                    strDatabaseName = this.GetConfig("strDatabaseName");
                    strJobName      = vSchedulerEmailBackupObj.TaskName;
                    if (vSchedulerEmailBackupObj.JobID != null)
                    {
                        strJobID = vSchedulerEmailBackupObj.JobID.ToString();
                    }
                    //描述:保存的是KillJob的ID
                    strDescription = KillJobID;
                    dtStartDate    = Convert.ToDateTime(vSchedulerEmailBackupObj.StartTime);
                    switch (vSchedulerEmailBackupObj.ScheduleType)
                    {
                    case "Daily":
                        FrequencyType = FrequencyTypes.Daily;
                        break;

                    case "Run Once":
                        FrequencyType = FrequencyTypes.OneTime;
                        break;
                    }
                    DateTime dtRunOnlyStart = Convert.ToDateTime(vSchedulerEmailBackupObj.RunOnlyStart);
                    DateTime dtRunOnlyEnd   = Convert.ToDateTime(vSchedulerEmailBackupObj.RunOnlyEnd);
                    strRunStartDate = dtRunOnlyStart.ToLongTimeString();
                    strRunEndDate   = dtRunOnlyEnd.ToLongTimeString();

                    //开始运行时间 时:分:秒:
                    hours   = dtRunOnlyStart.Hour;
                    minutes = dtRunOnlyStart.Minute;
                    seconds = dtRunOnlyStart.Second;

                    //获取自定义config的值
                    strSQLServer = this.GetConfig("strSQLServer");
                    strUser      = this.GetConfig("strUser");
                    strPassword  = this.GetConfig("strPassword");
                    #endregion
                    #region 创建作业

                    ServiceDirectDBEntities objDB = new ServiceDirectDBEntities();

                    //获取数据库名
                    string strdatabase = objDB.Connection.Database;

                    //获取数据库服务器名
                    string           strDataSource = objDB.Connection.DataSource;
                    ServerConnection conn          = null;
                    Server           myServer      = null;
                    conn     = new ServerConnection(strSQLServer, strUser, strPassword);
                    myServer = new Server(conn);

                    //调用删除Billing 的Job
                    //DeleteJob(strJobID);

                    Job jb = new Job(myServer.JobServer, strJobName);
                    jb.Description = strDescription;

                    //更改JOB状态
                    if (JobType == "enable")
                    {
                        jb.IsEnabled = true;
                    }
                    switch (JobType)
                    {
                    case "enable":
                        jb.IsEnabled = true;
                        break;

                    case "disable":
                        jb.IsEnabled = false;
                        break;

                    case "Insert":
                        jb.IsEnabled = true;
                        break;
                    }

                    //创建JOB
                    jb.Create();
                    #endregion 创建作业


                    if (jb.JobID != null)
                    {
                        //获取命令行
                        JobCommandString = this.GetJobCommandString(vSchedulerEmailBackupObj, KeyId, jb);
                    }

                    #region 作业步骤

                    Steps steps = new Steps();

                    //创建步骤
                    steps.CreateStep(jb, strDatabaseName, JobCommandString, strRunEndDate);

                    #endregion 作业步骤

                    #region 作业计划属性

                    JobSchedule jbsch = new JobSchedule(jb, "ScheduleBilling");

                    //计划频率,每几天一次
                    jbsch.FrequencyTypes = FrequencyType;
                    if (vSchedulerEmailBackupObj.ScheduleType.Equals("Daily"))
                    {
                        //执行间隔 (天)
                        jbsch.FrequencyInterval = 1;

                        //当天只执行一次
                        jbsch.FrequencySubDayTypes = FrequencySubDayTypes.Once;
                    }
                    if (strRunStartDate != string.Empty)
                    {
                        //开始执行时间
                        jbsch.ActiveStartTimeOfDay = new TimeSpan(hours, minutes, seconds);
                    }

                    //持续时间
                    if (dtStartDate != null)
                    {
                        //开始时间
                        jbsch.ActiveStartDate = dtStartDate;
                    }
                    else
                    {
                        jbsch.ActiveStartDate = DateTime.Now;
                    }

                    //创建SQL代理实例的作业调度
                    jbsch.Create();
                    jb.ApplyToTargetServer(myServer.JobServer.Name);

                    //创建成功后立刻执行一次开始
                    //jb.Start();

                    //创建成功后立刻执行一次结束
                    #endregion 作业计划属性

                    //返回作业GUID
                    return(jb.JobID.ToString());
                }
                else
                {
                    return("");
                }
            }
            catch (Exception)
            {
                return("");
            }
        }