Ejemplo n.º 1
0
        public JobProxy[] GetAll(JobProxy.Status status, JobProxy.CompletedStatus completedstatus, string sUserName)
        {
            List <JobProxy> jpList = new List <JobProxy>();

            {
                ListJobsFlags nFlags = ListJobsFlags.None;

                if (status != JobProxy.Status.undefined)
                {
                    nFlags |= ListJobsFlags.Status;
                }
                if (completedstatus != JobProxy.CompletedStatus.undefined)
                {
                    nFlags |= ListJobsFlags.CompletedStatus;
                }
                if (!string.IsNullOrEmpty(sUserName))
                {
                    nFlags |= ListJobsFlags.Owner;
                }

                string[] sIds = _DownloadJobsDataAccessAgent.ListJobs(sUserName, (int)status, (int)completedstatus, 0, nFlags);

                foreach (string sId in sIds)
                {
                    jpList.Add(new JobProxy(_DownloadJobsDataAccessAgent)
                    {
                        Id = int.Parse(sId)
                    });
                }
            }

            return(jpList.ToArray());
        }
Ejemplo n.º 2
0
        void Cleanup(bool fDeleteAny)
        {
            #region LOG
            {
                string message = @"Jobs Cleanup - Retry Failed jobs";
                Logger.Global.Log(string.Empty, string.Empty, -1, string.Empty, string.Empty, -1, DicomCommandType.Undefined, DateTime.Now,
                                  LogType.Information, MessageDirection.None, message, null, null);
            }
            #endregion

            //delete completed successfully
            {
                ListJobsFlags nFlags = ListJobsFlags.None;

                nFlags |= ListJobsFlags.Status;
                nFlags |= ListJobsFlags.CompletedStatus;
                nFlags |= ListJobsFlags.TimeStamp;

                DateTime ExpiryTime = DateTime.Now - _Expiry;
                DownloadJobsDataAccessAgent.DeleteJobs("", (int)JobProxy.Status.completed, (int)JobProxy.CompletedStatus.success, 0, ExpiryTime, nFlags);
            }

            //delete failed
            {
                ListJobsFlags nFlags = ListJobsFlags.None;

                nFlags |= ListJobsFlags.Status;
                nFlags |= ListJobsFlags.CompletedStatus;
                nFlags |= ListJobsFlags.NegateCompletedStatus;
                nFlags |= ListJobsFlags.Retries;
                nFlags |= ListJobsFlags.TimeStamp;

                DateTime ExpiryTime = DateTime.Now - _Expiry;
                DownloadJobsDataAccessAgent.DeleteJobs("", (int)JobProxy.Status.completed, (int)JobProxy.CompletedStatus.success, _MaxRetries + 1, ExpiryTime, nFlags);
            }

            if (fDeleteAny)
            {
                ListJobsFlags nFlags = ListJobsFlags.None;

                nFlags |= ListJobsFlags.Status;

                DateTime ExpiryTime = DateTime.Now - _Expiry;
                DownloadJobsDataAccessAgent.DeleteJobs("", (int)JobProxy.Status.completed, 0, 0, ExpiryTime, nFlags);
            }
        }
Ejemplo n.º 3
0
        public void ReQeueFailedJobs(int nMaxRetries)
        {
            #region LOG
            {
                string message = @"ReQeueFailedJobs";
                Logger.Global.Log(string.Empty, string.Empty, -1, string.Empty, string.Empty, -1, DicomCommandType.Undefined, DateTime.Now,
                                  LogType.Information, MessageDirection.None, message, null, null);
            }
            #endregion


            List <JobProxy> jpList = new List <JobProxy>();

            {
                ListJobsFlags nFlags = ListJobsFlags.None;

                nFlags |= ListJobsFlags.Status;
                nFlags |= ListJobsFlags.CompletedStatus;
                nFlags |= ListJobsFlags.NegateCompletedStatus;
                nFlags |= ListJobsFlags.Retries;

                string[] sIds = DownloadJobsDataAccessAgent.ListJobs("", (int)JobProxy.Status.completed, (int)JobProxy.CompletedStatus.success, nMaxRetries, nFlags);

                foreach (string sId in sIds)
                {
                    try
                    {
                        DownloadJobsDataAccessAgent.SetJobStatus(int.Parse(sId), (int)JobProxy.Status.pending, (int)JobProxy.CompletedStatus.undefined, false, "");
                        QeueJob(sId);
                    }
                    catch (Exception e)
                    {
                        #region LOG
                        {
                            string message = @"ReQeueFailedJob Failure: " + e.Message;
                            Logger.Global.Log(string.Empty, string.Empty, -1, string.Empty, string.Empty, -1, DicomCommandType.Undefined, DateTime.Now,
                                              LogType.Information, MessageDirection.None, message, null, null);
                        }
                        #endregion

                        System.Diagnostics.Debug.Assert(false);
                    }
                }
            }
        }
        public virtual void DeleteJobs
        (
            string sOwner,
            int nStatus,
            int nCompletedStatus,
            int nMinRetries,
            DateTime MinTimeStamp,
            ListJobsFlags nFlags
        )
        {
            List <string> JobsIdsList = new List <string>();


            bool bOwner                 = (nFlags & ListJobsFlags.Owner) > 0;
            bool bStatus                = (nFlags & ListJobsFlags.Status) > 0;
            bool bCompletedStatus       = (nFlags & ListJobsFlags.CompletedStatus) > 0;
            bool bNegateCompletedStatus = (nFlags & ListJobsFlags.NegateCompletedStatus) > 0;
            bool bMinRetries            = (nFlags & ListJobsFlags.Retries) > 0;
            bool bTimeStamp             = (nFlags & ListJobsFlags.TimeStamp) > 0;

            using (DbConnection dbConnection = CreateConnection())
            {
                DbCommand dbCommand = dbConnection.CreateCommand();
                dbCommand.CommandText = @"DELETE FROM [dbo].[jobsQueue] WHERE 1=1";

                if (bStatus)
                {
                    dbCommand.CommandText += @" AND status = @status";
                }
                if (bCompletedStatus)
                {
                    if (bNegateCompletedStatus)
                    {
                        dbCommand.CommandText += @" AND completedstatus <> @completedstatus";
                    }
                    else
                    {
                        dbCommand.CommandText += @" AND completedstatus = @completedstatus";
                    }
                }
                if (bMinRetries)
                {
                    dbCommand.CommandText += @" AND retries >= @retries";
                }

                if (bOwner)
                {
                    dbCommand.CommandText += @" AND owner = @owner";
                }

                if (bTimeStamp)
                {
                    dbCommand.CommandText += @" AND timestamp <= @timestamp";
                }

                {
                    DbParameter param = dbCommand.CreateParameter();
                    param.ParameterName = "@status"; param.DbType = DbType.Int32; param.Value = nStatus;
                    dbCommand.Parameters.Add(param);
                }
                {
                    DbParameter param = dbCommand.CreateParameter();
                    param.ParameterName = "@completedstatus"; param.DbType = DbType.Int32; param.Value = nCompletedStatus;
                    dbCommand.Parameters.Add(param);
                }
                {
                    DbParameter param = dbCommand.CreateParameter();
                    param.ParameterName = "@retries"; param.DbType = DbType.Int32; param.Value = nMinRetries;
                    dbCommand.Parameters.Add(param);
                }
                {
                    DbParameter param = dbCommand.CreateParameter();
                    param.ParameterName = "@owner"; param.DbType = DbType.String; param.Value = sOwner;
                    dbCommand.Parameters.Add(param);
                }
                {
                    DbParameter param = dbCommand.CreateParameter();
                    param.ParameterName = "@timestamp"; param.DbType = DbType.DateTime; param.Value = MinTimeStamp;
                    dbCommand.Parameters.Add(param);
                }

                dbCommand.CommandType = CommandType.Text;
                dbCommand.Connection.Open();

                dbCommand.ExecuteScalar();
            }
        }
        public virtual string[] ListJobs
        (
            string sOwner,
            int nStatus,
            int nCompletedStatus,
            int nMaxRetries,
            ListJobsFlags nFlags
        )
        {
            List <string> JobsIdsList = new List <string>();


            bool bOwner                 = (nFlags & ListJobsFlags.Owner) > 0;
            bool bStatus                = (nFlags & ListJobsFlags.Status) > 0;
            bool bCompletedStatus       = (nFlags & ListJobsFlags.CompletedStatus) > 0;
            bool bNegateCompletedStatus = (nFlags & ListJobsFlags.NegateCompletedStatus) > 0;
            bool bMinRetries            = (nFlags & ListJobsFlags.Retries) > 0;

            using (DbConnection dbConnection = CreateConnection())
            {
                DbCommand dbCommand = dbConnection.CreateCommand();
                dbCommand.CommandText = @"SELECT [dbo].[jobsQueue].[id] FROM [dbo].[jobsQueue] WHERE 1=1";

                if (bStatus)
                {
                    dbCommand.CommandText += @" AND status = @status";
                }
                if (bCompletedStatus)
                {
                    if (bNegateCompletedStatus)
                    {
                        dbCommand.CommandText += @" AND completedstatus <> @completedstatus";
                    }
                    else
                    {
                        dbCommand.CommandText += @" AND completedstatus = @completedstatus";
                    }
                }
                if (bMinRetries)
                {
                    dbCommand.CommandText += @" AND retries <= @retries";
                }

                if (bOwner)
                {
                    dbCommand.CommandText += @" AND owner = @owner";
                }

                {
                    DbParameter param = dbCommand.CreateParameter();
                    param.ParameterName = "@status"; param.DbType = DbType.Int32; param.Value = nStatus;
                    dbCommand.Parameters.Add(param);
                }
                {
                    DbParameter param = dbCommand.CreateParameter();
                    param.ParameterName = "@completedstatus"; param.DbType = DbType.Int32; param.Value = nCompletedStatus;
                    dbCommand.Parameters.Add(param);
                }
                {
                    DbParameter param = dbCommand.CreateParameter();
                    param.ParameterName = "@retries"; param.DbType = DbType.Int32; param.Value = nMaxRetries;
                    dbCommand.Parameters.Add(param);
                }
                {
                    DbParameter param = dbCommand.CreateParameter();
                    param.ParameterName = "@owner"; param.DbType = DbType.String; param.Value = sOwner;
                    dbCommand.Parameters.Add(param);
                }

                dbCommand.CommandType = CommandType.Text;
                dbCommand.Connection.Open();

                using (var sqlReader = dbCommand.ExecuteReader())
                {
                    if (sqlReader.HasRows)
                    {
                        while (sqlReader.Read())
                        {
                            JobsIdsList.Add(sqlReader["id"].ToString());
                        }
                    }
                }
            }
            return(JobsIdsList.ToArray());
        }