Exemple #1
0
        /// <summary>
        ///   Retrieves a batch of records from the manager queue
        /// </summary>
        /// <returns></returns>
        public IEnumerable <ManagerQueueRecord> GetNextBatchOfRecords()
        {
            var jobs = new List <ManagerQueueRecord>();

            var table = SqlQueryHelper.RetrieveNextBatchInManagerQueue(EddsDbContext, Constant.Sizes.MANAGER_QUEUE_BATCH_SIZE, AgentId);

            HasRecords = TableHasRows(table);

            if (HasRecords)
            {
                foreach (DataRow row in table.Rows)
                {
                    // Gives the record a sqlhelper, context and agentID so it may execute on the DB itself
                    var record = new ManagerQueueRecord(SqlQueryHelper, EddsDbContext, row);

                    // Confirm there is a job
                    if (record.Exists)
                    {
                        jobs.Add(record);
                    }
                }

                Records = jobs.AsEnumerable();
            }
            else
            {
                // Return null if there are no jobs
                jobs = null;
            }

            return(jobs);
        }
Exemple #2
0
        /// <summary>
        ///   Converts the batch of documents and the manager queue into a worker queue data table
        ///   ready for Sql Bulk Insert.
        /// </summary>
        /// <param name="results"></param>
        /// <param name="managerQueueJob"></param>
        /// <returns></returns>
        public DataTable ConvertToWorkerQueueTable(QueryResultSet <Document> results, ManagerQueueRecord managerQueueJob)
        {
            if (HasNoResults(results))
            {
                return(null);
            }

            var batchTable = new DataTable();

            batchTable.Columns.Add("TimeStampUTC", typeof(DateTime));
            batchTable.Columns.Add("WorkspaceArtifactID", typeof(Int32));
            batchTable.Columns.Add("QueueStatus", typeof(Int32));
            batchTable.Columns.Add("AgentID", typeof(Int32));
            batchTable.Columns.Add("ExtractorSetArtifactID", typeof(Int32));
            batchTable.Columns.Add("DocumentArtifactID", typeof(Int32));
            batchTable.Columns.Add("ExtractorProfileArtifactID", typeof(Int32));
            batchTable.Columns.Add("SourceLongTextFieldArtifactID", typeof(Int32));

            foreach (var result in results.Results)
            {
                batchTable.Rows.Add(
                    DateTime.UtcNow,
                    // TimeStampUTC
                    managerQueueJob.WorkspaceArtifactId,
                    // WorkspaceArtifactID
                    Constant.QueueStatus.NotStarted,
                    // QueueStatus
                    null,
                    // AgentID
                    managerQueueJob.ExtractorSetArtifactId,
                    // ExtractorSetArtifactID
                    result.Artifact.ArtifactID,
                    // DocumentArtifactID
                    managerQueueJob.ExtractorProfileArtifactId,
                    // ExtractorProfileArtifactID
                    managerQueueJob.SourceLongTextFieldArtifactId                     // ExtractorProfileArtifactID
                    );
            }

            return(batchTable);
        }