private static void GetMatterDatasetDetails(ProductionDocumentDetail m_ProductionDocumentDetail, ProductionDetailsBEO m_BootParameters)
        {
            DatasetBEO dataset =
                DataSetBO.GetDataSetDetailForCollectionId(m_BootParameters.OriginalCollectionId);

            m_ProductionDocumentDetail.OriginalCollectionId = dataset.RedactableDocumentSetId;
            //Assign redactable set id as default collection id
            m_ProductionDocumentDetail.DatasetCollectionId = m_BootParameters.OriginalCollectionId;
            //Native set collection id
            m_ProductionDocumentDetail.OriginalDatasetName = dataset.FolderName;
            m_ProductionDocumentDetail.OriginalDatasetId   = (int)dataset.FolderID;

            m_ProductionDocumentDetail.lstProductionFields =
                DataSetBO.GetDataSetFields(Convert.ToInt64(m_ProductionDocumentDetail.OriginalDatasetId),
                                           m_ProductionDocumentDetail.ProductionCollectionId);
            m_ProductionDocumentDetail.dataSetBeo =
                DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(m_ProductionDocumentDetail.OriginalDatasetId));
            m_ProductionDocumentDetail.lstDsFieldsBeo =
                DataSetBO.GetDataSetFields(Convert.ToInt64(m_ProductionDocumentDetail.OriginalDatasetId),
                                           m_ProductionDocumentDetail.DatasetCollectionId);
            m_ProductionDocumentDetail.matterBeo =
                MatterBO.GetMatterDetails(m_ProductionDocumentDetail.dataSetBeo.ParentID.ToString(CultureInfo.InvariantCulture));
            m_ProductionDocumentDetail.SearchServerDetails =
                ServerBO.GetSearchServer(m_ProductionDocumentDetail.matterBeo.SearchServer.Id);
        }
Beispiel #2
0
 /// <summary>
 /// Construct Notification message for Export AnalysisSet Documents
 /// </summary>
 /// <param name="activeJob"></param>
 /// <returns></returns>
 private static string ConstructNotificationMessageForExportAnalysisSetDocuments(ActiveJob activeJob)
 {
     try
     {
         var stringBuilder = new StringBuilder();
         var documentQuery = (DocumentQuery)XmlUtility.DeserializeObject(activeJob.Beo.BootParameters, typeof(DocumentQuery));
         var dataset       = DataSetBO.GetDataSetDetailForDataSetId(documentQuery.DatasetId);
         var jobInfo       = JobMgmtBO.GetJobDetails(activeJob.JobId.ToString(CultureInfo.InvariantCulture));
         var filePath      = string.Format("{0}\\{1}{2}", dataset.CompressedFileExtractionLocation, jobInfo.Name, ".csv");
         if (!string.IsNullOrEmpty(filePath))
         {
             stringBuilder.Append(ConversionResultsExportFilePathOpenDiv);
             stringBuilder.Append(filePath);
             stringBuilder.Append(ConversionResultsExportFilePathCloseDiv);
         }
         stringBuilder.Append(AnalysissetDocumentsResultsImageTag);
         stringBuilder.Append(ConversionResultsDownloadLinkOpenAnchor);
         stringBuilder.Append(ConversionResultsExportDownloadHandler +
                              activeJob.JobId.ToString(CultureInfo.InvariantCulture));
         stringBuilder.Append(AnalysissetDocumentsResultsDownloadLinkText);
         stringBuilder.Append(ConversionResultsDownLoadLinkCloseAnchor);
         return(stringBuilder.ToString());
     }
     catch (Exception ex)
     {
         ex.Trace().Swallow();
     }
     return(string.Empty);
 }
Beispiel #3
0
        protected override void BeginWork()
        {
            base.BeginWork();

            _reprocessJobParameter = (ConversionReprocessJobBeo)XmlUtility.DeserializeObject(BootParameters, typeof(ConversionReprocessJobBeo));

            var baseConfig = ReconversionDAO.GetJobConfigInfo(Convert.ToInt32(_reprocessJobParameter.OrginialJobId));

            _lawSyncJobParameter = (LawSyncBEO)XmlUtility.DeserializeObject(baseConfig.BootParameters, typeof(LawSyncBEO));

            _dataset = DataSetBO.GetDataSetDetailForDataSetId(_lawSyncJobParameter.DatasetId);
            var field = _dataset.DatasetFieldList.FirstOrDefault(f => f.FieldType.DataTypeId == Constants.DCNFieldTypeId);

            if (field != null)
            {
                _dcnFieldName = field.Name;
            }

            var lawField = _dataset.DatasetFieldList.FirstOrDefault(f => f.Name == EVSystemFields.LawDocumentId);

            if (lawField != null)
            {
                _lawFieldId = lawField.ID;
            }

            if (_lawSyncJobParameter.IsProduceImage)
            {
                _jobEVImagesDirectory = LawVolumeHelper.GetJobImageFolder(WorkAssignment.JobId,
                                                                          _lawSyncJobParameter.LawCaseId);
                _volumeCount++;
                _volumeFolderName = LawVolumeHelper.CreateVolumeFolder(_jobEVImagesDirectory, _volumeCount);
            }

            _vaultManager = EVUnityContainer.Resolve <IDocumentVaultManager>(Constants.DocumentVaultManager);
        }
Beispiel #4
0
 protected override void BeginWork()
 {
     BootParameters.ShouldNotBe(null);
     base.BeginWork();
     _jobParameter =
         (AnalyticsProjectInfo)XmlUtility.DeserializeObject(BootParameters, typeof(AnalyticsProjectInfo));
     _dataset = DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(_jobParameter.DatasetId, CultureInfo.CurrentCulture));
 }
Beispiel #5
0
 protected override void BeginWork()
 {
     BootParameters.ShouldNotBe(null);
     base.BeginWork();
     _jobParameter =
         (AnalyticsProjectInfo)XmlUtility.DeserializeObject(BootParameters, typeof(AnalyticsProjectInfo));
     _analyticProject = new AnalyticsProject();
     _dataset         = DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(_jobParameter.DatasetId, CultureInfo.CurrentCulture));
     _jobParameter.DocumentSource.CollectionId = _dataset.CollectionId;
     SetCommiyIndexStatusToInitialized(_jobParameter.MatterId);
 }
        protected override void BeginWork()
        {
            base.BeginWork();

            _jobParameter =
                (NearDuplicationJobBEO)XmlUtility.DeserializeObject(BootParameters, typeof(NearDuplicationJobBEO));

            #region "Assertion"

            _jobParameter.DatasetId.ShouldBeGreaterThan(0);
            _jobParameter.MatterId.ShouldBeGreaterThan(0);
            _jobParameter.CollectionId.ShouldNotBeEmpty();
            // _jobParameter.JobName.ShouldNotBeEmpty();

            #endregion

            _ingestionId = string.Format("{0}_Dataset-{1}_RunId-{2}", _jobParameter.JobName, _jobParameter.DatasetId, PipelineId);
            var familyThreshHold = ((_jobParameter.FamilyThreshold > 0)
                                        ? (byte)_jobParameter.FamilyThreshold
                                        : Constants.NearDuplicationFamilyThresholdDefaultValue);
            var clusterThreshHold = ((_jobParameter.ClusterThreshold > 0)
                                         ? (byte)_jobParameter.ClusterThreshold
                                         : Constants.NearDuplicationClusterThresholdDefaultValue);

            //Get Vault Database Connection string
            var documentVaultManager = new DocumentVaultManager();
            _connectionString = documentVaultManager.GetConnectionStringForMatter(_jobParameter.MatterId);

            //Get Dataset details
            _dataset = DataSetBO.GetDataSetDetailForDataSetId(_jobParameter.DatasetId);
            _dataset.ShouldNotBe(null);

            //Get Polaris license server IP address
            var licenseServer =
                CmgServiceConfigBO.GetServiceConfigurationsforConfig(Constants.NearDuplicationPolarisLicenseKeyName);

            try
            {
                //Initialize Near Dupe Adapter
                _nearDuplicationAdapter = new EVPolarisNearDuplicationAdapter();
                _nearDuplicationAdapter.InitializeAdapter(_connectionString, _ingestionId, licenseServer,
                                                          clusterThreshHold,
                                                          familyThreshHold);
            }
            catch (Exception ex)
            {
                Tracer.Error(
                    "Near Duplication Start Up Worker: Failed to initialize Near duplication engine for job run id:{0}, exception:{1}",
                    PipelineId, ex);
                throw;
            }
            // _nearDuplicationAdapter.DeleteAllData();
        }
Beispiel #7
0
        /// <summary>
        /// Begins the work.
        /// </summary>
        protected override void BeginWork()
        {
            base.BeginWork();

            try
            {
                m_Parameters = DocumentImportHelper.GetProfileBeo((string)BootParameters);

                m_CounterForCorrelationId = 0;

                InitializeConfigurationItems();

                //?? need to percentage completion
                m_PercenatgeCompletion = 100;

                m_Documents = new List <RVWDocumentBEO>();

                #region Get Dataset Details
                if (m_Parameters != null && m_Parameters.DatasetDetails.FolderID > 0)
                {
                    m_FileProcessor = FileProcessorFactory.CreateFileProcessor(
                        FileProcessorFactory.ExtractionChoices.CompoundFileExtraction);
                    m_Dataset = DataSetBO.GetDataSetDetailForDataSetId(m_Parameters.DatasetDetails.FolderID);

                    if (m_Dataset.Matter != null && m_Dataset.Matter.FolderID > 0)
                    {
                        var matterDetails = MatterDAO.GetMatterDetails(m_Dataset.Matter.FolderID.ToString());
                        if (matterDetails != null)
                        {
                            m_Dataset.Matter = matterDetails;
                            var searchServerDetails = ServerDAO.GetSearchServer(matterDetails.SearchServer.Id);
                            if (searchServerDetails != null)
                            {
                                m_Dataset.Matter.SearchServer = searchServerDetails;
                            }
                        }
                    }
                    else
                    {
                        throw new EVException().AddErrorCode(ErrorCodes.EDLoaderExtractionWorker_FailedToObtainMatterDetails); //?? need to set message in resource file
                    }
                }
                else
                {
                    throw new EVException().AddErrorCode(ErrorCodes.EDLoaderExtractionWorker_ObtainDatasetDetailsFailure); //?? need to set message in resource file
                }
                #endregion
            }
            catch (Exception ex)
            {
                ex.Trace().Swallow();
            }
        }
Beispiel #8
0
        /// <summary>
        ///     Get dataset details.
        /// </summary>
        private DatasetBEO GetDatasetDetails(long datasetId, string matterId)
        {
            var dataset       = DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(datasetId));
            var matterDetails = MatterDAO.GetMatterDetails(matterId);

            if (matterDetails == null)
            {
                return(dataset);
            }
            dataset.Matter = matterDetails;
            return(dataset);
        }
 /// <summary>
 /// To set field id for created fields
 /// </summary>
 /// <param name="fields"></param>
 private void SetFieldIdForCreatedFields(List <LawFieldBEO> fields)
 {
     _datasetDetails = DataSetBO.GetDataSetDetailForDataSetId(_jobParams.FolderId);
     foreach (var field in fields)
     {
         var datasetField = _datasetDetails.DatasetFieldList.Find(f => f.Name.Equals(field.MappingFieldName));
         if (datasetField != null)
         {
             field.MappingFieldId = datasetField.ID.ToString(CultureInfo.InvariantCulture);
         }
     }
     _selectedFields = fields;
 }
Beispiel #10
0
        protected override void BeginWork()
        {
            BootParameters.ShouldNotBe(null);
            base.BeginWork();
            _jobParameter =
                (CategorizeInfo)XmlUtility.DeserializeObject(BootParameters, typeof(CategorizeInfo));

            _dataset     = DataSetBO.GetDataSetDetailForDataSetId(_jobParameter.DatasetId);
            _projectInfo = AnalyticsProject.Get(_jobParameter.MatterId.ToString(CultureInfo.InvariantCulture),
                                                _jobParameter.DatasetId.ToString(CultureInfo.InvariantCulture),
                                                _jobParameter.ProjectId.ToString(CultureInfo.InvariantCulture));
            SetCommiyIndexStatusToInitialized(_jobParameter.MatterId);
        }
        protected override void ProcessMessage(PipeMessageEnvelope message)
        {
            try
            {
                if (message.Body == null)
                {
                    return;
                }
                var lawDocumentsList = (LawSyncDocumentCollection)message.Body;
                if (_jobParameter == null)
                {
                    if (lawDocumentsList.IsLawSyncReprocessJob)
                    {
                        _jobParameter = lawDocumentsList.OrginalJobParameter;
                    }
                    else
                    {
                        _jobParameter = (LawSyncBEO)XmlUtility.DeserializeObject(BootParameters, typeof(LawSyncBEO));
                    }
                }
                _datasetCollectionId      = lawDocumentsList.DatasetCollectionId;
                _lawSyncJobId             = lawDocumentsList.LawSynJobId;
                _logInfoList              = new List <JobWorkerLog <LawSyncLogInfo> >();
                _documentProcessStateList = new List <DocumentConversionLogBeo>();
                _dataset = DataSetBO.GetDataSetDetailForDataSetId(_jobParameter.DatasetId);
                if (lawDocumentsList.Documents.Any())
                {
                    foreach (var lawDocument in lawDocumentsList.Documents)
                    {
                        SetMetadataForDcoument(lawDocument);
                    }
                }

                if (_documentProcessStateList.Any())
                {
                    UpdateDcoumentProcessState(_documentProcessStateList);
                }

                Send(lawDocumentsList);
                if (_logInfoList.Any())
                {
                    SendLogPipe(_logInfoList);
                }
            }
            catch (Exception ex)
            {
                ReportToDirector(ex);
                ex.Trace().Swallow();
                LogMessage(Constants.LawSyncFailureinGetMetadataMessage + ex.ToUserString());
            }
        }
        /// <summary>
        ///     Begins the work.
        /// </summary>
        protected override void BeginWork()
        {
            BootParameters.ShouldNotBe(null);
            base.BeginWork();

            _reprocessJobParameter = (ConversionReprocessJobBeo)XmlUtility.DeserializeObject(BootParameters, typeof(ConversionReprocessJobBeo));

            var baseConfig = ReconversionDAO.GetJobConfigInfo(Convert.ToInt32(_reprocessJobParameter.OrginialJobId));

            _jobParameter =
                (AnalyticsProjectInfo)XmlUtility.DeserializeObject(baseConfig.BootParameters, typeof(AnalyticsProjectInfo));

            _dataset = DataSetBO.GetDataSetDetailForDataSetId(_jobParameter.DatasetId);
        }
Beispiel #13
0
        /// <summary>
        /// Unassigns the reviewset id for the list of documents from Vault
        /// </summary>
        /// <param name="documents">List<ReviewsetDocumentBEO></param>
        /// <param name="datasetId">long</param>
        private void UnAssignReviewsetInVault(List <ReviewsetDocumentBEO> documents, long datasetId)
        {
            //adds to DB
            using (var transScope = new EVTransactionScope(TransactionScopeOption.Suppress))
            {
                //Get dataset details
                var dsBeo = DataSetBO.GetDataSetDetailForDataSetId(datasetId);
                dsBeo.ShouldNotBe(null);

                //Remove the reviewset association for the documents
                ReviewSetBO.DeleteDocumentsFromReviewSetForOverdrive(dsBeo.Matter.FolderID.ToString(),
                                                                     dsBeo.CollectionId,
                                                                     documents);
            }
        }
Beispiel #14
0
        /// <summary>
        ///     Begins the work.
        /// </summary>
        protected override void BeginWork()
        {
            BootParameters.ShouldNotBe(null);
            base.BeginWork();
            _jobParameter =
                (AnalyticsProjectInfo)XmlUtility.DeserializeObject(BootParameters, typeof(AnalyticsProjectInfo));

            _dataset            = DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(_jobParameter.DatasetId, CultureInfo.CurrentCulture));
            _analyticProject    = new AnalyticsProject();
            _totalDocumentCount = _analyticProject.GetProjectDocumentsCount(Convert.ToInt64(_jobParameter.MatterId, CultureInfo.CurrentCulture),
                                                                            _jobParameter.ProjectCollectionId);
            _batchSize =
                Convert.ToInt32(ApplicationConfigurationManager.GetValue("UpdateFieldsBatchSize", "AnalyticsProject"));
            _projectFieldId = AnalyticsProject.GetProjectFieldId(_jobParameter.MatterId, _dataset.CollectionId);
        }
        /// <summary>
        /// Worker begin work event
        /// </summary>
        protected override void BeginWork()
        {
            try
            {
                base.BeginWork();
                _jobParams = GetJobParams(BootParameters);
                _jobParams.ShouldNotBe(null);
                _jobParams.FolderId.ShouldBeGreaterThan(0);

                _datasetDetails = DataSetBO.GetDataSetDetailForDataSetId(_jobParams.FolderId);
                var matterDetails =
                    MatterDAO.GetMatterDetails(_jobParams.MatterId.ToString(CultureInfo.InvariantCulture));
                matterDetails.ShouldNotBe(null);
                _datasetDetails.Matter = matterDetails;
                var searchServerDetails = ServerDAO.GetSearchServer(matterDetails.SearchServer.Id);
                searchServerDetails.ShouldNotBe(null);
                _datasetDetails.Matter.SearchServer = searchServerDetails;

                if (!LawBO.TestServerConnection(_jobParams.LawCaseId))
                {
                    ReportToDirector("Failed to connect Law server. Please see application log for details.");
                }

                if (EVHttpContext.CurrentContext == null)
                {
                    // Moq the session
                    MockSession(_jobParams.CreatedBy);
                }

                //Create fields for selected law fields
                CreateSelectedLawFields();

                //Create tags for selected law tags
                CreateSelectedLawTags();

                //Law import batch size for documents
                _batchSize = GetMessageBatchSize();
            }
            catch (Exception ex)
            {
                //Send log infor to Log worker
                LogMessage(false, ex.ToUserString());
                ReportToDirector(ex.ToUserString());
                throw;
            }
        }
Beispiel #16
0
        private DcbOpticonJobBEO PopulateImportRequest(ProfileBEO profiledata)
        {
            DcbOpticonJobBEO request = new DcbOpticonJobBEO();

            request.JobTypeName   = profiledata.ImportTypeName;
            request.JobName       = profiledata.ImportJobName;
            request.SysDocId      = profiledata.SysDocID;
            request.SysImportType = profiledata.SysImportTypeID;
            // Default settings
            request.StatusBrokerType          = BrokerType.Database;
            request.CommitIntervalBrokerType  = BrokerType.ConfigFile;
            request.CommitIntervalSettingType = SettingType.CommonSetting;
            //MatterName
            request.MatterName = profiledata.DatasetDetails.Matter.FolderName;
            //Source Path
            request.DcbSourcePath = profiledata.Locations[0].ToString(CultureInfo.InvariantCulture);

            //Target DatasetId
            request.TargetDatasetId = profiledata.DatasetDetails.CollectionId;

            //DatasetFolderId
            request.DatasetFolderId = profiledata.DatasetDetails.FolderID;
            //fieldMappinga
            request.FieldMappings = profiledata.FieldMapping;
            //ContentFieldMappings
            request.ContentFields     = profiledata.ContentFields;
            request.MatterId          = profiledata.DatasetDetails.Matter.FolderID;
            request.IncludeTags       = profiledata.IncludeAssociatedTags;
            request.IncludeNotes      = profiledata.IncludeNotes;
            request.DcbCredentialList = profiledata.DcbUNPWs;
            request.NativeFilePath    = profiledata.NativeFilePathField;

            request.ImageSetName = profiledata.ImageSetName;
            request.ImportImages = profiledata.IsImportImages;
            request.NewImageset  = profiledata.IsNewImageSet;
            request.JobName      = profiledata.ImportJobName;

            _dataset = DataSetBO.GetDataSetDetailForDataSetId(request.DatasetFolderId);

            //Populate Family Info
            request.IsImportFamilies = profiledata.IsImportFamilyRelations;
            request.FamilyRelations  = profiledata.FamilyRelations;

            return(request);
        }
        /// <summary>
        /// Get dataset detail.
        /// </summary>
        internal static DatasetBEO GetDatasetDetails(long datasetId, string matterId)
        {
            var dataset       = DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(datasetId));
            var matterDetails = MatterDAO.GetMatterDetails(matterId);

            if (matterDetails == null)
            {
                return(dataset);
            }
            dataset.Matter = matterDetails;
            var searchServerDetails = ServerDAO.GetSearchServer(matterDetails.SearchServer.Id);

            if (searchServerDetails != null)
            {
                dataset.Matter.SearchServer = searchServerDetails;
            }
            return(dataset);
        }
        /// <summary>
        ///     Begins the work.
        /// </summary>
        protected override void BeginWork()
        {
            BootParameters.ShouldNotBe(null);
            base.BeginWork();

            _jobParameter =
                (AnalyticsProjectInfo)XmlUtility.DeserializeObject(BootParameters, typeof(AnalyticsProjectInfo));
            _analyticProject = new AnalyticsProject();

            _documentBachSize =
                Convert.ToInt32(
                    ApplicationConfigurationManager.GetValue("IncludeDocumentsIntoProjectInSubSystemJobBatchSize",
                                                             "AnalyticsProject"));
            _dataset =
                DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(_jobParameter.DatasetId,
                                                                       CultureInfo.CurrentCulture));
            _jobParameter.DocumentSource.CollectionId = _dataset.CollectionId;

            _totalDocumentCount =
                _analyticProject.GetProjectDocumentsCountByTaskId(
                    Convert.ToInt64(_jobParameter.MatterId, CultureInfo.CurrentCulture),
                    _jobParameter.ProjectCollectionId, _jobParameter.PrimarySystemJobId);
            //Update job log initial state
            var jobSummaryKeyValuePairs = new EVKeyValuePairs();

            JobMgmtBO.UpdateJobResult(WorkAssignment.JobId, 0, _totalDocumentCount,
                                      jobSummaryKeyValuePairs);

            if (_jobParameter.IsRerunJob || _jobParameter.IsAddAdditionalDocuments) //Rerun job or Add additional documents- need get to get existing IndexId ,if already created
            {
                _indexId = AnalyticsProject.GetIndexIdForProject(_jobParameter.MatterId, WorkAssignment.JobId,
                                                                 _dataset.CollectionId, _jobParameter.ProjectCollectionId, false);
            }

            if (string.IsNullOrEmpty(_indexId))
            {
                _indexId = "idx-" + Guid.NewGuid().ToString().ToLowerInvariant();
                _analyticProject.InsertIndexId(_jobParameter.MatterId, WorkAssignment.JobId, _dataset.CollectionId,
                                               _jobParameter.ProjectCollectionId, _indexId);
            }
            AnalyticsProject.CreateAnalyticalIndex(_jobParameter.MatterId, WorkAssignment.JobId, _indexId);  //Create Index in Spark SVM..
            IncreaseProcessedDocumentsCount(_totalDocumentCount);
        }
        /// <summary>
        /// End of the work. process
        /// Update the job's boot parameter with total number of document processed and number of failed documents
        /// </summary>
        protected override void EndWork()
        {
            var bootParam = GetBootObject <ConversionReprocessJobBeo>(BootParameters);

            //the corresponding job id
            int jobId = WorkAssignment.JobId;

            //get various count
            DatasetBEO ds       = DataSetBO.GetDataSetDetailForDataSetId(bootParam.DatasetId);
            long       matterId = ds.Matter.FolderID;

            var vault = VaultRepository.CreateRepository(matterId);

            int totalDocCount;
            int failedDocCount;
            int succeedDocCount;

            vault.GetReconversionDocStatusCount(jobId, out totalDocCount, out succeedDocCount,
                                                out failedDocCount);

            bootParam.TotalDocCount  = totalDocCount;
            bootParam.FailedDocCount = failedDocCount;
            //bootParam.SucceedDocCount = succeedDocCount;


            //re serialize the boot param
            string newBootParam;

            var serializer = new XmlSerializer(typeof(ConversionReprocessJobBeo));

            using (var writer = new StringWriter())
            {
                serializer.Serialize(writer, bootParam);

                newBootParam = writer.ToString();
            }

            //update the boot parameters for the job
            ReconversionDAO.UpdateReconversionBootParamter(jobId, newBootParam);

            //clean up reconversion input file that contain the list of document to convert
            SafeDeleteFile(bootParam.FilePath);
        }
Beispiel #20
0
        /// <summary>
        ///     Begins the work.
        /// </summary>
        protected override void BeginWork()
        {
            BootParameters.ShouldNotBe(null);
            base.BeginWork();
            _jobParameter =
                (AnalyticsProjectInfo)XmlUtility.DeserializeObject(BootParameters, typeof(AnalyticsProjectInfo));
            _analyticProject  = new AnalyticsProject();
            _dataset          = DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(_jobParameter.DatasetId, CultureInfo.CurrentCulture));
            _projectFieldId   = AnalyticsProject.GetProjectFieldId(_jobParameter.MatterId, _dataset.CollectionId);
            _documentBachSize = Convert.ToInt32(ApplicationConfigurationManager.GetValue("IncludeDocumentsIntoProjectJobBatchSize",
                                                                                         "AnalyticsProject"));
            _jobParameter.DocumentSource.CollectionId = _dataset.CollectionId;

            if (!_jobParameter.IsAddAdditionalDocuments || !string.IsNullOrEmpty(_jobIds))
            {
                return;
            }
            _jobIds = GetIncludeJobIds();
        }
Beispiel #21
0
        /// <summary>
        ///     Begins the work.
        /// </summary>
        protected override void BeginWork()
        {
            BootParameters.ShouldNotBe(null);
            base.BeginWork();
            _jobParameter =
                (AnalyticsProjectInfo)XmlUtility.DeserializeObject(BootParameters, typeof(AnalyticsProjectInfo));
            _analyticProject    = new AnalyticsProject();
            _dataset            = DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(_jobParameter.DatasetId, CultureInfo.CurrentCulture));
            _totalDocumentCount = _analyticProject.GetSelectedDocumentsCount(_dataset.CollectionId, _jobParameter, WorkAssignment.JobId);
            //Update job log initial state
            var jobSummaryKeyValuePairs = new EVKeyValuePairs();

            JobMgmtBO.UpdateJobResult(WorkAssignment.JobId, 0, _totalDocumentCount,
                                      jobSummaryKeyValuePairs);
            _documentBachSize = Convert.ToInt32(ApplicationConfigurationManager.GetValue("IncludeDocumentsIntoProjectJobBatchSize",
                                                                                         "AnalyticsProject"));
            _jobParameter.DocumentSource.CollectionId = _dataset.CollectionId;
            IncreaseProcessedDocumentsCount(_totalDocumentCount);
        }
        /// <summary>
        /// Get Dataset details
        /// </summary>
        private DatasetBEO GetDatasetDetails(long datasetId, long matterId)
        {
            var dataset = DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(datasetId));

            dataset.ShouldNotBe(null);
            var matterDetails = MatterDAO.GetMatterDetails(matterId.ToString(CultureInfo.InvariantCulture));

            if (matterDetails == null)
            {
                return(dataset);
            }
            dataset.Matter = matterDetails;
            var searchServerDetails = ServerDAO.GetSearchServer(matterDetails.SearchServer.Id);

            if (searchServerDetails != null)
            {
                dataset.Matter.SearchServer = searchServerDetails;
            }
            return(dataset);
        }
Beispiel #23
0
        /// <summary>
        /// Get the tag location
        /// </summary>
        /// <param name="bulkTagRecord"></param>
        /// <returns></returns>
        private static string GetTaggingLocation(BulkTagJobBusinessEntity bulkTagJobBeo)
        {
            var location = string.Empty;

            if (!string.IsNullOrEmpty(bulkTagJobBeo.DocumentListDetails.SearchContext.ReviewSetId))
            {
                var reviewSetDetails = ReviewSetBO.GetReviewSetDetails
                                           (bulkTagJobBeo.DocumentListDetails.SearchContext.MatterId.ToString(CultureInfo.InvariantCulture), bulkTagJobBeo.DocumentListDetails.SearchContext.ReviewSetId);
                if (reviewSetDetails != null)
                {
                    location = reviewSetDetails.ReviewSetName;
                }
            }
            else
            {
                var dataSetDetails = DataSetBO.GetDataSetDetailForDataSetId(bulkTagJobBeo.DocumentListDetails.SearchContext.DataSetId);
                if (dataSetDetails != null)
                {
                    location = dataSetDetails.FolderName;
                }
            }
            return(location);
        }
        protected override void BeginWork()
        {
            try
            {
                base.BeginWork();
                m_Parameters = GetImportBEO(BootParameters);
                m_Parameters.ShouldNotBe(null);
                m_LoadFileUri = new Uri(m_Parameters.Locations.First());

                m_ColumnDelimiter  = (char)m_Parameters.LoadFile.ColumnDelimiter;
                m_QuoteCharacter   = (char)m_Parameters.LoadFile.QuoteCharacter;
                m_NewlineCharacter = (char)m_Parameters.LoadFile.NewlineDelimiter;

                m_RecordTokenizer   = new RecordTokenizer(m_ColumnDelimiter, m_QuoteCharacter);
                m_EncodingType      = Encoding.GetEncoding(m_Parameters.LoadFile.EncodingType);
                m_IsFirstLineHeader = m_Parameters.LoadFile.IsFirstLineHeader;

                var loadFilePath = HttpUtility.UrlDecode(m_LoadFileUri.OriginalString);
                ReportToDirector("LoadFileParser works on load file {0}", loadFilePath);
                m_StreamReader = new StreamReader(loadFilePath, m_EncodingType);

                #region Dataset Detaills

                m_Parameters.DatasetId.ShouldBeGreaterThan(0);
                m_Dataset = DataSetBO.GetDataSetDetailForDataSetId(m_Parameters.DatasetId);
                var matterDetails = MatterDAO.GetMatterDetails(m_Parameters.MatterId.ToString());
                matterDetails.ShouldNotBe(null);
                m_Dataset.Matter = matterDetails;
                var searchServerDetails = ServerDAO.GetSearchServer(matterDetails.SearchServer.Id);
                searchServerDetails.ShouldNotBe(null);
                m_Dataset.Matter.SearchServer = searchServerDetails;
                m_DatasetPath = m_Dataset.CompressedFileExtractionLocation;

                #endregion

                if (m_Parameters != null &&
                    m_Parameters.IsImportImages &&
                    m_Parameters.LoadFile.ImageFile != null &&
                    m_Parameters.LoadFile.ImageFile.ImageExtractionOption == LoadFileImageExtractionOption.HelperFile)
                {
                    var imageHelperFileName = m_Parameters.LoadFile.ImageFile.HelperFileName;
                    ReportToDirector("LoadFileParser uses image helper file {0}", imageHelperFileName);
                    _imageHelperFileParser = new HelperFileParser(this, imageHelperFileName);
                }

                if (m_Parameters != null &&
                    m_Parameters.LoadFile.ContentFile != null &&
                    m_Parameters.LoadFile.ContentFile.TextExtractionOption == LoadFileTextExtractionOption.HelperFile)
                {
                    var contentHelperFileName = m_Parameters.LoadFile.ContentFile.HelperFileName;
                    ReportToDirector("LoadFileParser uses content (text) helper file {0}", contentHelperFileName);
                    TextHelperFile = new HelperFile(this, contentHelperFileName);
                }

                if (null != m_Parameters &&
                    null != m_Parameters.LoadFile &&
                    null != m_Parameters.LoadFile.ContentFile &&
                    null != m_Parameters.LoadFile.ContentFile.LoadFileContentField)
                {
                    m_ContentFieldNumber = Convert.ToInt32(m_Parameters.LoadFile.ContentFile.LoadFileContentField);
                }

                _uniqueThreadString = Guid.NewGuid().ToString().Replace("-", "").ToUpper();

                SetMessageBatchSize(m_Parameters);
            }
            catch (Exception ex)
            {
                //Send log to Log Pipe
                LogMessage(false, Constants.ParserFailureMessageOnInitialize);
                ex.Trace();
                ReportToDirector("Exception in LoadFileParser.BeginWork", ex.ToDebugString());
                throw;
            }
        }
        /// <summary>
        /// Absorb the boot parameters, deserialize and pass on the messages to the Search Worker
        /// </summary>
        public void DoBeginWork(string bootParameter)
        {
            bootParameter.ShouldNotBeEmpty();
            // Deserialize and determine the boot object
            _bootObject = GetBootObject(bootParameter);

            // Assert condition to check for jobscheduled by
            _bootObject.CreatedByGUID.ShouldNotBeEmpty();

            // Get Dataset Details to know about the Collection id and the Matter ID details
            _datasetEntity = DataSetBO.GetDataSetDetailForDataSetId(_bootObject.datasetId);
            _bootObject.BinderFolderId.ShouldNotBe(0);

            _binderEntity = BinderBO.GetBinderDetails(_bootObject.BinderFolderId.ToString());
            _binderEntity.ShouldNotBe(null);

            //Assert condition to check for dataset details
            _datasetEntity.ShouldNotBe(null);
            _datasetEntity.Matter.ShouldNotBe(null);

            _reviewSetRecord = ConvertToReviewSetRecord(_bootObject, _datasetEntity);


            // Construct the document query entity to determine the total documents
            _docQueryEntity = GetQueryEntity(_bootObject, _datasetEntity, 0, 1, null);
            _docQueryEntity.TransactionName = _docQueryEntity.QueryObject.TransactionName =
                "ReviewsetStartupWorker - DoBeginWork (GetCount)";

            // Mock the user session
            MockSession();


            var reviewSetDetails = ReviewSetBO.GetReviewSetDetails(_datasetEntity.Matter.FolderID.ToString(),
                                                                   _bootObject.ReviewSetId);

            if (reviewSetDetails != null)
            {
                reviewSetDetails.Action     = _reviewSetRecord.Activity;
                reviewSetDetails.BinderName = _binderEntity.BinderName;
                //Audit Logging for existing review set
                ReviewSetBO.UpdateReviewSet(reviewSetDetails, false, false);
            }
            // Retrieve the total documents qualified
            _totalDocumentCount = ReviewerSearchInstance.GetDocumentCount(_docQueryEntity.QueryObject);


            Tracer.Info("Split Reviewset Startup Worker : {0} matching documents determined for the requested query",
                        _totalDocumentCount);
            if (_totalDocumentCount < 1)
            {
                var message = String.Format("Search engine does not return any documents for Reviewset {0}",
                                            _reviewSetRecord.ReviewSetName);
                throw new ApplicationException(message);
            }

            // Construct the document query entity to write the resultant documents in xml file
            var outputFields = new List <Field>();

            outputFields.AddRange(new List <Field>
            {
                new Field {
                    FieldName = EVSystemFields.FamilyId
                },
                new Field {
                    FieldName = EVSystemFields.DocumentKey
                },
                new Field {
                    FieldName = EVSystemFields.ReviewSetId
                },
                new Field {
                    FieldName = EVSystemFields.DuplicateId
                },
                new Field {
                    FieldName = EVSystemFields.Tag.ToLower()
                },
                new Field {
                    FieldName = _datasetEntity.DocumentControlNumberName
                }
            });
            _docQueryEntity = GetQueryEntity(_bootObject, _datasetEntity, 0, Convert.ToInt32(_totalDocumentCount),
                                             outputFields);
        }
        /// <summary>
        /// This method processes the pipe message
        /// </summary>
        /// <param name="envelope"></param>
        protected override void ProcessMessage(PipeMessageEnvelope envelope)
        {
            var searchRecord = (ReviewsetSearchRecord)envelope.Body;

            // assert checks
            searchRecord.ShouldNotBe(null);
            searchRecord.QueryEntity.ShouldNotBe(null);
            searchRecord.ReviewsetDetails.ShouldNotBe(null);

            try
            {
                // Initialize config values
                GetConfigurationValues();

                searchRecord.ReviewsetDetails.CreatedBy.ShouldNotBeEmpty();
                _createdBy = searchRecord.ReviewsetDetails.CreatedBy;


                DocumentRecordCollection reviewsetDetail;
                // Convert the ReviewsetSearchRecord to DocumentRecordCollection type
                ConvertReviewsetSearchRecordToDocumentRecordCollection(searchRecord, out reviewsetDetail);

                _dataset = DataSetBO.GetDataSetDetailForDataSetId(searchRecord.ReviewsetDetails.DatasetId);



                var documents      = new List <DocumentIdentityRecord>();
                var reviewsetLogic = searchRecord.ReviewsetDetails.ReviewSetLogic.ToLower();
                if (reviewsetLogic == "all" || reviewsetLogic == "tag")
                {
                    var searchQuery = !string.IsNullOrEmpty(_jobParameter.SearchQuery)? _jobParameter.SearchQuery.Replace("\"", ""): string.Empty;
                    Tracer.Info("Get documents from database to create reviewset is started for All/Tag options - job run id : {0}", PipelineId);
                    var resultDocuments = DocumentBO.GetDocumentsForCreateReviewsetJob(searchRecord.QueryEntity.QueryObject.MatterId,
                                                                                       _dataset.CollectionId, searchRecord.TotalDocumentCount,
                                                                                       reviewsetLogic, searchQuery.ToLower(), _batchSize);

                    documents.AddRange(resultDocuments.Select(resultDocument => new DocumentIdentityRecord
                    {
                        Id          = resultDocument.Id,
                        DocumentId  = resultDocument.DocumentID,
                        FamilyId    = resultDocument.FamilyID,
                        DuplicateId = resultDocument.DuplicateId
                    }));
                    Tracer.Info("Documents retrieved from database to create review set for All/Tag options - job run id : {0}", PipelineId);
                }
                else
                {
                    documents = GetDocuments(searchRecord);
                }


                if (documents == null || !documents.Any())
                {
                    Tracer.Error("No documents found for the job run id : {0}", PipelineId);
                    LogMessage(false, string.Format("No documents found for the job run id : {0}", PipelineId),
                               _createdBy, searchRecord.ReviewsetDetails.ReviewSetName);
                    return;
                }

                Tracer.Info("Total of {0} documents found for the job run id : {1}", documents.Count.ToString(),
                            PipelineId);
                LogMessage(true,
                           string.Format("Total of {0} documents found for the job run id : {1}", documents.Count, PipelineId),
                           _createdBy, searchRecord.ReviewsetDetails.ReviewSetName);

                // Group the results and send it in batches
                GroupDocumentsAndSend(documents, reviewsetDetail);
            }
            catch (Exception ex)
            {
                ReportToDirector(ex);
                ex.Trace().Swallow();
                LogMessage(false, ex.ToUserString(), searchRecord.ReviewsetDetails.CreatedBy,
                           searchRecord.ReviewsetDetails.ReviewSetName);
            }
        }
Beispiel #27
0
        /// <summary>
        /// Processes the data.
        /// </summary>
        /// <param name="printDocuments"></param>
        public void ProcessTheDocument(List <DocumentResult> printDocuments)
        {
            if (_mBootParameters == null)
            {
                return;
            }
            if (string.IsNullOrEmpty(_mBootParameters.DataSet.CollectionId))
            {
                return;
            }
            // Get mapped printer
            _mMappedPrinterToNetwork =
                PrinterManagementBusiness.GetMappedPrinter(
                    new MappedPrinterIdentifierBEO(
                        _mBootParameters.Printer.UniqueIdentifier.Split(Constants.Split).Last(), true));
            // Create folder
            CreateFoldersForTemporaryStorage();


            //Get Dataset and Matter information for a given Collection Id
            _mDataSet = DataSetBO.GetDataSetDetailForCollectionId(_mBootParameters.DataSet.CollectionId);

            //Get DataSet Fields
            _mDataSet.DatasetFieldList.AddRange(
                DataSetBO.GetDataSetDetailForDataSetId(_mDataSet.FolderID).DatasetFieldList);
            // Get Matter information
            _mDataSet.Matter = MatterBO.GetMatterInformation(_mDataSet.FolderID);
            _mDatasetName    = _mDataSet.FolderName;


            var documents = new List <DocumentResult>();
            var documentIdentifierEntities = new List <DocumentIdentifierEntity>();

            foreach (var document in printDocuments)
            {
                try
                {
                    string errorCode;
                    var    separatorSheetFolder = Guid.NewGuid();
                    var    separatorSheet       = Path.Combine(Path.Combine(_mSharedLocation, _mBootParameters.Name),
                                                               Constants.SourceDirectoryPath, separatorSheetFolder.ToString(),
                                                               Constants.separatorHtml);
                    CreateseparatorSheet(separatorSheet, _mBootParameters.DataSet.MatterId,
                                         _mBootParameters.DataSet.CollectionId, document.DocumentID);
                    //Print the document set
                    var jobRunId = (!String.IsNullOrEmpty(PipelineId)) ? Convert.ToInt32(PipelineId) : 0;
                    var jobId    = JobMgmtDAO.GetJobIdFromJobRunId(jobRunId);
                    var status   = PrintDocumentSet(jobId.ToString(CultureInfo.InvariantCulture), _mBootParameters, document,
                                                    separatorSheet, out errorCode);
                    if (status)
                    {
                        document.CreatedDate = DateTime.Now;
                        documents.Add(document);
                        // Log the message using Log worker...
                        LogMessage(document, true, string.Empty);
                    }
                    else
                    {
                        // Log the message using Log worker...
                        LogMessage(document, false, errorCode);
                    }
                    if (_mDataSet != null &&
                        _mDataSet.Matter != null)
                    {
                        var documentIdentifierEntity = new DocumentIdentifierEntity();
                        documentIdentifierEntity.CollectionId        = document.CollectionID;
                        documentIdentifierEntity.Dcn                 = document.DocumentControlNumber;
                        documentIdentifierEntity.DocumentReferenceId = document.DocumentID;
                        documentIdentifierEntity.CollectionName      = _mDataSet.FolderName;
                        documentIdentifierEntities.Add(documentIdentifierEntity);
                    }
                }
                catch (Exception ex)
                {
                    //report to director and continue with other documents if there is error in printing a documents
                    ex.Trace().Swallow();
                    ReportToDirector(ex);
                }
            }
            if (documents.Count > 0)
            {
                Tracer.Info("Print Processing worker - Document Count: {0}",
                            documents.Count.ToString(CultureInfo.InvariantCulture));
                Send(documents);
                if (_mDataSet != null &&
                    _mDataSet.Matter != null
                    )
                {
                    AuditLogFacade.LogDocumentsPrinted(_mDataSet.Matter.FolderID, documentIdentifierEntities);
                }
            }
        }
Beispiel #28
0
        /// <summary>
        /// Generates DataSet Delete tasks
        /// </summary>
        /// <param name="jobParameters">DataSet Delete Job BEO</param>
        /// <param name="previouslyCommittedTaskCount">int</param>
        /// <returns>List of DataSet DeleteJob Tasks (BEOs)</returns>
        protected override Tasks <DeleteDataSetTaskBEO> GenerateTasks(DeleteDataSetJobBEO jobParameters, out int previouslyCommittedTaskCount)
        {
            Tasks <DeleteDataSetTaskBEO> tasks = null;

            previouslyCommittedTaskCount = 0;
            try
            {
                // Message that Generate Tasks called.
                LogMessage(String.Format(Constants.JobGenerateTasksInitialized, jobParameters.JobId), false, LogCategory.Job, null);
                EvLog.WriteEntry(String.Format(Constants.JobGenerateTasksInitialized, jobParameters.JobId),
                                 String.Format(Constants.JobGenerateTasksInitialized, jobParameters.JobId), EventLogEntryType.Information);


                var docCount = MatterBO.GetDocumentCount(Convert.ToInt64(jobParameters.MatterId), new List <string>()
                {
                    jobParameters.CollectionId
                });
                var dataSetDocuments = new List <ReIndexDocumentBEO>();
                if (docCount > 0)
                {
                    var nMessages = (Int32)(Math.Ceiling((double)docCount / m_ReadChunkSize));
                    //Convert.ToInt32(docCount / m_ReadChunkSize) + (docCount % m_ReadChunkSize > 0 ? 1 : 0);
                    var processed = 0;

                    //Loop through and send the request in batches
                    for (var pageIdx = 1; pageIdx <= nMessages; pageIdx++)
                    {
                        var pgSize = 0;
                        //Determine the page size and processed count
                        if (nMessages == 1)
                        {
                            pgSize = (Int32)docCount;
                        }
                        else if (nMessages > 1 && pageIdx == nMessages)
                        {
                            pgSize = (Int32)docCount - processed;
                        }
                        else
                        {
                            pgSize = m_ReadChunkSize;
                        }

                        var batchDocuments = MatterBO.GetCollectionDocuments(Convert.ToInt64(jobParameters.MatterId),
                                                                             pageIdx, m_ReadChunkSize, new List <string>()
                        {
                            jobParameters.CollectionId
                        });
                        if (batchDocuments != null && batchDocuments.Any())
                        {
                            dataSetDocuments.AddRange(batchDocuments);
                        }
                        processed += pgSize;
                    }
                }

                //Get matter details for matter id
                var matterDetail  = MatterServices.GetMatterDetails(jobParameters.MatterId);
                var dataSetDetail = DataSetBO.GetDataSetDetailForDataSetId(jobParameters.DataSetId);

                //Get all document sets for dataset id
                var lstDocumentSet = DataSetService.GetAllDocumentSet(jobParameters.DataSetId.ToString());

                tasks = GetTaskList <DeleteDataSetJobBEO, DeleteDataSetTaskBEO>(jobParameters);
                previouslyCommittedTaskCount = tasks.Count;
                var documentTaskCount = (Int32)(Math.Ceiling((double)dataSetDocuments.Count / m_WindowSize));


                m_NumberOfTasks = documentTaskCount + lstDocumentSet.Count + 1;
                double taskPercent = (100.0 / m_NumberOfTasks);

                int taskNumber = 0;
                DeleteDataSetTaskBEO deleteDataSetTaskBeo;
                // Create tasks for the documents in group
                for (taskNumber = 0; taskNumber < documentTaskCount; taskNumber++)
                {
                    deleteDataSetTaskBeo = new DeleteDataSetTaskBEO
                    {
                        TaskNumber    = taskNumber + 1,
                        TaskComplete  = false,
                        TaskPercent   = taskPercent,
                        DataSetId     = jobParameters.DataSetId,
                        DataSetName   = jobParameters.DataSetName,
                        DocumentSetId = jobParameters.CollectionId,
                        DeletedBy     = jobParameters.DeletedBy,
                        DocumentId    =
                            dataSetDocuments.GetRange(taskNumber * m_WindowSize,
                                                      Math.Min((dataSetDocuments.Count - (taskNumber * m_WindowSize)), m_WindowSize))
                            .Select(d => d.DocumentReferenceId)
                            .ToList(),
                        MatterDBName     = matterDetail.MatterDBName,
                        IsDocumentDelete = true
                    };
                    tasks.Add(deleteDataSetTaskBeo);
                }

                // Create the task for the non-native document sets (production & image sets)
                var nonNativeSets = lstDocumentSet.Where(ds => ds.DocumentSetTypeId != "2");
                foreach (var docset in nonNativeSets)
                {
                    taskNumber          += 1;
                    deleteDataSetTaskBeo = new DeleteDataSetTaskBEO
                    {
                        TaskNumber        = taskNumber,
                        TaskComplete      = false,
                        TaskPercent       = taskPercent,
                        DataSetId         = jobParameters.DataSetId,
                        DataSetName       = jobParameters.DataSetName,
                        DeletedBy         = jobParameters.DeletedBy,
                        DocumentId        = new List <string>(),
                        MatterDBName      = matterDetail.MatterDBName,
                        DocumentSetId     = docset.DocumentSetId,
                        DocumentSetTypeId = docset.DocumentSetTypeId,
                        IsDocumentDelete  = false
                    };
                    tasks.Add(deleteDataSetTaskBeo);
                }

                // Create the task for only the native document sets
                var nativeSet = lstDocumentSet.Where(ds => ds.DocumentSetTypeId == "2");
                foreach (var docset in nativeSet)
                {
                    taskNumber          += 1;
                    deleteDataSetTaskBeo = new DeleteDataSetTaskBEO
                    {
                        TaskNumber        = taskNumber,
                        TaskComplete      = false,
                        TaskPercent       = taskPercent,
                        DataSetId         = jobParameters.DataSetId,
                        DataSetName       = jobParameters.DataSetName,
                        DeletedBy         = jobParameters.DeletedBy,
                        DocumentId        = new List <string>(),
                        MatterDBName      = matterDetail.MatterDBName,
                        DocumentSetId     = docset.DocumentSetId,
                        DocumentSetTypeId = docset.DocumentSetTypeId,
                        IsDocumentDelete  = false
                    };
                    tasks.Add(deleteDataSetTaskBeo);
                }

                taskNumber          += 1;
                deleteDataSetTaskBeo = new DeleteDataSetTaskBEO
                {
                    TaskNumber        = taskNumber,
                    TaskComplete      = false,
                    TaskPercent       = 100,
                    DataSetId         = jobParameters.DataSetId,
                    DataSetName       = jobParameters.DataSetName,
                    DeletedBy         = jobParameters.DeletedBy,
                    DocumentId        = new List <string>(),
                    DocumentSetId     = jobParameters.CollectionId,
                    MatterDBName      = matterDetail.MatterDBName,
                    IsDocumentDelete  = false,
                    DocumentSets      = lstDocumentSet,
                    ExtractionPath    = dataSetDetail.CompressedFileExtractionLocation,
                    DocumentSetTypeId = string.Empty
                };
                tasks.Add(deleteDataSetTaskBeo);

                for (int i = 1; i <= tasks.Count; i++)
                {
                    tasks[i - 1].TaskNumber = i;
                }
            }
            catch (EVException ex)
            {
                LogToEventLog(ex, GetType(), MethodInfo.GetCurrentMethod().Name, jobParameters.JobId, jobParameters.JobRunId);
                HandleJobException(GetEvExceptionDescription(ex), null, ErrorCodes.ProblemInGenerateTasks);
            }
            catch (Exception ex)
            {
                // Handle exception in initialize
                HandleJobException(String.Format(Constants.JobGenerateTasksException, jobParameters.JobId), ex, ErrorCodes.ProblemInGenerateTasks);
                LogMessage(ex, GetType(), MethodInfo.GetCurrentMethod().Name, EventLogEntryType.Error, jobParameters.JobId, jobParameters.JobRunId);
            }
            return(tasks);
        }
        /// <summary>
        /// Absorb the boot parameters, deserialize and pass on the messages to the Search Worker
        /// </summary>
        public void DoBeginWork(string bootParameter)
        {
            bootParameter.ShouldNotBeEmpty();
            // Deserialize and determine the boot object
            _bootObject = GetBootObject(bootParameter);

            // Assert condition to check for jobscheduled by
            _bootObject.JobScheduleCreatedBy.ShouldNotBeEmpty();
            _bootObject.BinderFolderId.ShouldNotBe(0);

            // Get Dataset Details to know about the Collection id and the Matter ID details
            _datasetEntity = DataSetBO.GetDataSetDetailForDataSetId(_bootObject.datasetId);
            //Assert condition to check for dataset details
            _datasetEntity.ShouldNotBe(null);

            _binderEntity = BinderBO.GetBinderDetails(_bootObject.BinderFolderId.ToString());
            _binderEntity.ShouldNotBe(null);

            _reviewSetRecord = ConvertToReviewSetRecord(_bootObject);

            // Construct the document query entity to determine the total documents
            _docQueryEntity = GetQueryEntity(_bootObject, _datasetEntity, 0, 1, null);

            // Mock the user session
            MockSession();

            _docQueryEntity.TransactionName = _docQueryEntity.QueryObject.TransactionName = "ReviewsetStartupWorker - DoBeginWork (GetCount)";

            var reviewsetLogic = _reviewSetRecord.ReviewSetLogic.ToLower();

            if (reviewsetLogic == "all" || reviewsetLogic == "tag")
            {
                var searchQuery = !string.IsNullOrEmpty(_bootObject.SearchQuery)? _bootObject.SearchQuery.Replace("\"", ""): string.Empty;
                _totalDocumentCount = DocumentBO.GetDocumentCountForCreateReviewsetJob(_datasetEntity.Matter.FolderID, _datasetEntity.CollectionId,
                                                                                       reviewsetLogic, searchQuery);
            }
            else
            {
                // Retrieve the total documents qualified
                _totalDocumentCount = ReviewerSearchInstance.GetDocumentCount(_docQueryEntity.QueryObject);
            }

            Tracer.Info("Reviewset Startup Worker : {0} matching documents determined for the requested query", _totalDocumentCount);
            if (_totalDocumentCount < 1)
            {
                var message = String.Format("Search server does not return any documents for the reviewset '{0}'", _reviewSetRecord.ReviewSetName);
                throw new ApplicationException(message);
            }

            LogMessage(true, string.Format("{0} documents are qualified", _totalDocumentCount));

            // Construct the document query entity to write the resultant documents in xml file
            var outputFields = new List <Field>();

            outputFields.AddRange(new List <Field>()
            {
                new Field {
                    FieldName = EVSystemFields.DcnField
                },
                new Field {
                    FieldName = EVSystemFields.FamilyId
                },
                new Field {
                    FieldName = EVSystemFields.DuplicateId
                }
            });
            _docQueryEntity = GetQueryEntity(_bootObject, _datasetEntity, 0, Convert.ToInt32(_totalDocumentCount), outputFields);
        }