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); }
protected override void ProcessMessage(PipeMessageEnvelope envelope) { List <ProductionDocumentDetail> productionDocuments = null; List <ProductionDocumentDetail> errorDocuments = null; try { productionDocuments = envelope.Body as List <ProductionDocumentDetail>; Debug.Assert(productionDocuments != null, "productionDocuments != null"); if (productionDocuments == null || !productionDocuments.Any()) { Tracer.Warning("Empty batch received! Skipped."); return; } productionDocuments.ShouldNotBeEmpty(); using (new EVTransactionScope(TransactionScopeOption.Suppress)) { if (productionDocuments != null && productionDocuments.Any()) { var productionDocument = productionDocuments.First(); productionDocument.MatterId.ShouldNotBeEmpty(); _mMatterId = productionDocument.MatterId; productionDocument.dataSetBeo.ShouldNotBe(null); productionDocument.dataSetBeo.CollectionId.ShouldNotBeEmpty(); _mCollectionId = productionDocument.dataSetBeo.CollectionId; var docs = productionDocuments.Select(doc => new DocumentDataBEO { DocumentId = doc.DocumentId, CollectionId = _mCollectionId }).ToList(); var docFields = MatterBO.GetCollectionDocumentFields(Int64.Parse(_mMatterId), docs); docFields.ShouldNotBe(null); _documentDetails = ConstructDocumentFieldsForSearchSubSystem(docFields); ProcessDocumentFields(productionDocuments); } } } catch (Exception ex) { errorDocuments = productionDocuments; ReportToDirector(ex); ex.Trace().Swallow(); } ProductionLogHelper.SendProductionLogs(LogPipe, errorDocuments, PipelineId, WorkerId, Constants.ProductionVaultIndexingUpdateWokerRoleId); }
protected override void ProcessMessage(PipeMessageEnvelope message) { message.ShouldNotBe(null); var bulkTagRecord = (BulkTagRecord)message.Body; try { bulkTagRecord.ShouldNotBe(null); bulkTagRecord.CreatedByUserGuid.ShouldNotBeEmpty(); MockSession(bulkTagRecord.CreatedByUserGuid); var failedDocs = new List <KeyValuePair <string, string> >(); if (MatterBO.IsCrawlComplete(bulkTagRecord.MatterId.ToString(CultureInfo.InvariantCulture), bulkTagRecord.Originator, failedDocs)) { try { SendLog(CreateLogs(bulkTagRecord.Documents, failedDocs, bulkTagRecord)); } catch (Exception excep) { var errMsg = string.Format("Unable to create / send logs to be sent to log pipe. Exception details: {0}", excep.ToUserString()); excep.Trace().Swallow(); } Send(bulkTagRecord); } else { InputDataPipe.Send(new PipeMessageEnvelope() { Body = bulkTagRecord, IsPostback = true }); } } catch (Exception ex) { if (bulkTagRecord != null) { ex.Data["Originator"] = bulkTagRecord.Originator; } ex.Trace().Swallow(); ReportToDirector(ex); } }
/// <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> /// 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); } } }