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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #4
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);
        }
Exemple #5
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);
                }
            }
        }