コード例 #1
0
        private void GetTags(LawSyncDocumentDetail lawDocument, List <LawMetadataBEO> metaDataList, out bool isError)
        {
            isError = false;
            if (_jobParameter.MappingTags == null || !_jobParameter.MappingTags.Any())
            {
                return;
            }
            var documentTag = GetDocumentTags(lawDocument.DocumentReferenceId, _datasetCollectionId, out isError);

            foreach (var lawMappingTag in _jobParameter.MappingTags)
            {
                var docTag =
                    documentTag.FirstOrDefault(
                        f =>
                        f.TagId.ToString(CultureInfo.InvariantCulture)
                        .Equals(lawMappingTag.MappingTagId));

                var metaData = new LawMetadataBEO
                {
                    Name  = lawMappingTag.Name,
                    Id    = lawMappingTag.Id,             //Not Required
                    Value = (docTag != null),
                    IsTag = true
                };

                metaDataList.Add(metaData);
            }
        }
コード例 #2
0
        private DocumentConversionLogBeo GetDocumentProcessStateInformationForImageConversion(
            LawSyncDocumentDetail lawDocument, string errorReason = null)
        {
            var documentProcessState = new DocumentConversionLogBeo
            {
                JobRunId     = _lawSyncJobId,
                ProcessJobId = WorkAssignment.JobId,

                DocumentId   = lawDocument.DocumentReferenceId,
                CollectionId = _datasetCollectionId,

                Status = EVRedactItErrorCodes.Failed,

                ErrorReason = errorReason,

                ConversionStatus = (int)LawSyncProcessState.Failed,
                ImageSyncStatus  = (int)LawSyncProcessState.NotStarted,
                ReasonId         = (int)Constants.LawSynProcessStateErrorCodes.ImageConversionFailure,

                ModifiedDate = DateTime.UtcNow
            };

            if (!string.IsNullOrEmpty(errorReason) && errorReason.Length > 60)  //To set common conversion error when conversion reason was not generic
            {
                documentProcessState.ErrorReason = EVRedactItErrorCodes.UnKnownConversionFailure;
            }
            return(documentProcessState);
        }
コード例 #3
0
        private DocumentConversionLogBeo GetDocumentProcessStateInformation(LawSyncDocumentDetail lawDocument, int status)
        {
            var documentProcessState = new DocumentConversionLogBeo
            {
                JobRunId     = _lawSyncJobId,
                ProcessJobId = WorkAssignment.JobId,

                DocumentId       = lawDocument.DocumentReferenceId,
                CollectionId     = _datasetCollectionId,
                ConversionStatus = status,
                Status           = EVRedactItErrorCodes.Failed, //default state

                ModifiedDate = DateTime.UtcNow
            };

            //Category Reason
            if (documentProcessState.ConversionStatus == (int)LawSyncProcessState.Failed)
            {
                documentProcessState.ReasonId = (int)Constants.LawSynProcessStateErrorCodes.ImageConversionFailure;
            }
            else
            {
                documentProcessState.ReasonId = (int)Constants.LawSynProcessStateErrorCodes.Successful;
            }
            return(documentProcessState);
        }
コード例 #4
0
        private DocumentConversionLogBeo GetDocumentProcessStateInformation(LawSyncDocumentDetail lawDocument)
        {
            var documentProcessState = new DocumentConversionLogBeo
            {
                ProcessJobId = WorkAssignment.JobId,
                JobRunId     = _reprocessJobParameter.OrginialJobId,

                DocumentId       = lawDocument.DocumentReferenceId,
                CollectionId     = _dataset.CollectionId,
                DCN              = lawDocument.DocumentControlNumber,
                CrossReferenceId = lawDocument.LawDocumentId.ToString(CultureInfo.InvariantCulture),

                MetadataSyncStatus = (int)LawSyncProcessState.NotStarted,
                ReasonId           = (int)Constants.LawSynProcessStateErrorCodes.MetadataSyncFailure,
                Status             = EVRedactItErrorCodes.Failed, //Default state

                ModifiedDate = DateTime.UtcNow
            };

            if (!lawDocument.IsImaging)
            {
                return(documentProcessState);
            }
            documentProcessState.ImageSyncStatus  = (int)LawSyncProcessState.NotStarted;
            documentProcessState.ConversionStatus = (int)LawSyncProcessState.NotStarted;
            return(documentProcessState);
        }
コード例 #5
0
        /// <summary>
        /// Handle Image Conversion Failure
        /// </summary>
        private void HandleConversionImageFailureState(LawSyncDocumentDetail lawImagingDocument, RedactItHeartbeatWatcher.DocumentStatus documentStatus, bool isTimeOut)
        {
            SafeDeleteFolder(lawImagingDocument.DocumentExtractionPath);

            // Bug 169138: When conversion time out, Job log table display the error message "Failure in image conversion". It should display "Conversion timeout".
            string errorMessage = Constants.LawSyncFailureinConversionMessage;

            if (isTimeOut)
            {
                errorMessage = Constants.LawSyncFailureinConversionTimeOutMessage;
            }
            Tracer.Error("Image conversion error: {0}", errorMessage);
            ConstructLog(lawImagingDocument.LawDocumentId, lawImagingDocument.CorrelationId,
                         lawImagingDocument.DocumentControlNumber, errorMessage, lawImagingDocument.RedactItHeartBeatFilePath, lawImagingDocument.ImagesFolderPath);


            IncreaseProcessedDocumentsCount(1); // Failed document counted as processed

            if (string.IsNullOrEmpty(documentStatus.ErrorReason))
            {
                documentStatus.ErrorReason = EVRedactItErrorCodes.UnKnownConversionFailure;
            }
            //Filling error details in ProcessSet table for future use
            var documentProcessState = GetDocumentProcessStateInformationForImageConversion(lawImagingDocument,
                                                                                            documentStatus.ErrorReason);

            documentProcessState.ErrorDetails = documentStatus.ErrorMessage;
            _documentProcessStateList.Add(documentProcessState);
            //Handle partially converted documents
            RenameAndSetImagesInDocument(lawImagingDocument);
        }
コード例 #6
0
 private void RenameAndSetImagesInDocument(LawSyncDocumentDetail lawDocument)
 {
     try
     {
         var lawDocumentId = lawDocument.DocumentControlNumber;
         var files         =
             new DirectoryInfo(lawDocument.ImagesFolderPath).GetFiles(
                 string.Format("{0}{1}*", lawDocumentId, Constants.RedactItPagingNameFormat));
         if (!files.Any())
         {
             return;
         }
         var convertedImages = new List <ConvertedImage>(); // hold the list of converted iamges.
         foreach (var file in files)
         {
             if (String.IsNullOrEmpty(file.Name))
             {
                 continue;
             }
             var fileExtenstion           = Path.GetExtension(file.Name);
             var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(file.Name);
             var currentPage = fileNameWithoutExtension.Replace(lawDocumentId, "").Replace(Constants.RedactItPagingNameFormat, "");
             int pageNumber;
             if (!int.TryParse(currentPage,
                               out pageNumber))
             {
                 continue;
             }
             var imageStartingNumber = (lawDocument.ImageStartingNumber + 1) + pageNumber;
             var newFileName         = string.Format("{0:D3}", imageStartingNumber) + fileExtenstion;
             var image = Path.Combine(lawDocument.ImagesFolderPath, newFileName);
             File.Move(file.FullName, image);
             var evImageRelativePath = image.Replace(_imageArchiveDirectory, string.Empty);
             evImageRelativePath = evImageRelativePath.StartsWith(@"\") ? evImageRelativePath.Remove(0, 1) : evImageRelativePath;
             convertedImages.Add(new ConvertedImage {
                 PageNo = pageNumber, RelativePath = evImageRelativePath
             });
         }
         // DEVBug 169433: Page order mess up for LAW Sync reprocess. For example the first page in LAW is not the first page in EV NNV viewer,
         // e.g. the first page is 701.tif instead of 001.tif.
         // To solve this, we need to sort the image by page Number
         var imagePaths = convertedImages.OrderBy(o => o.PageNo).Select(o => o.RelativePath).ToList();
         if (lawDocument.ProducedImages == null)
         {
             lawDocument.ProducedImages = new List <string>();
         }
         lawDocument.ProducedImages.AddRange(imagePaths);
     }
     catch (Exception ex)
     {
         //continue the image process with out rename images
         ex.Trace().Swallow();
         ReportToDirector(ex);
     }
 }
コード例 #7
0
        /// <summary>
        /// Update Images in Law
        /// </summary>
        /// <param name="document"></param>
        private void UpdateDocumentImageInLaw(LawSyncDocumentDetail document)
        {
            var lawDocumentUpdate = new LawDocumentBEO
            {
                LawDocId   = document.LawDocumentId,
                ImagePaths = document.ProducedImages
            };

            _lawEvAdapter.UpdateLawImagePaths(lawDocumentUpdate);
            _documentProcessStateList.Add(GetDocumentProcessStateInformationForImageSync(document,
                                                                                         (int)LawSyncProcessState.Completed));
        }
コード例 #8
0
        private DocumentConversionLogBeo GetDocumentProcessStateInformation(LawSyncDocumentDetail lawDocument, int state)
        {
            var documentProcessState = new DocumentConversionLogBeo
            {
                JobRunId     = _lawSyncJobId,
                ProcessJobId = WorkAssignment.JobId,

                DocumentId   = lawDocument.DocumentReferenceId,
                CollectionId = _datasetCollectionId,

                MetadataSyncStatus = state,
                Status             = EVRedactItErrorCodes.Failed,                //default state

                ModifiedDate = DateTime.UtcNow
            };

            //Category Reason
            if (state == (int)LawSyncProcessState.Failed)
            {
                documentProcessState.ReasonId = (int)Constants.LawSynProcessStateErrorCodes.MetadataSyncFailure;
            }
            else if (lawDocument.IsImaging && !lawDocument.IsImagesXdlAvailable)
            {
                documentProcessState.ReasonId = (int)Constants.LawSynProcessStateErrorCodes.ImageConversionFailure;
            }
            else
            {
                documentProcessState.ReasonId = (int)Constants.LawSynProcessStateErrorCodes.Successful;
            }


            if (lawDocument.IsImaging)
            {
                return(documentProcessState);
            }

            //Status
            switch (state)
            {
            case (int)LawSyncProcessState.Completed:
                documentProcessState.Status = EVRedactItErrorCodes.Completed;
                break;

            case (int)LawSyncProcessState.Failed:
                documentProcessState.Status = EVRedactItErrorCodes.Failed;
                break;
            }
            return(documentProcessState);
        }
コード例 #9
0
        private void CheckConversionStateAndSyncImages(LawSyncDocumentDetail lawImagingDocument, List <LawSyncDocumentDetail> documentNotReady,
                                                       List <LawSyncDocumentDetail> documentReady)
        {
            try
            {
                if (!lawImagingDocument.IsImagesXdlAvailable)
                {
                    return;
                }
                var documentStatus =
                    RedactItHeartbeatWatcher.CheckDocumentState(lawImagingDocument.RedactItHeartBeatFilePath, 1);
                switch (documentStatus.DocumentState)
                {
                case RedactItHeartbeatWatcher.DocumentStateEnum.NotFound:
                    if (!HandleConversionImageNotFoundState(lawImagingDocument, documentStatus, documentNotReady))
                    {
                        // timeout
                        // Bug 169138: When conversion time out, Job log table display the error message "Failure in image conversion". It should display "Conversion timeout".
                        HandleConversionImageFailureState(lawImagingDocument, documentStatus, true);     // timeout
                    }
                    break;

                case RedactItHeartbeatWatcher.DocumentStateEnum.NotReady:
                    if (!HandleConversionImageNotReadyState(lawImagingDocument, documentStatus, documentNotReady))
                    {
                        // timeout
                        // Bug 169138: When conversion time out, Job log table display the error message "Failure in image conversion". It should display "Conversion timeout".
                        HandleConversionImageFailureState(lawImagingDocument, documentStatus, true);     // timeout
                    }
                    break;

                case RedactItHeartbeatWatcher.DocumentStateEnum.Success:
                    HandleConversionImageSucessState(documentReady, lawImagingDocument);
                    break;

                case RedactItHeartbeatWatcher.DocumentStateEnum.Failure:
                    HandleConversionImageFailureState(lawImagingDocument, documentStatus, false);     // not timeout
                    break;
                }
            }
            catch (Exception ex)
            {
                ex.AddDbgMsg("Law Document Id:{0}", lawImagingDocument.LawDocumentId);
                ex.Trace().Swallow();
                ReportToDirector(ex);
            }
        }
コード例 #10
0
        private DocumentConversionLogBeo GetDocumentProcessStateInformationForImageSync(
            LawSyncDocumentDetail lawDocument, int state)
        {
            var documentProcessState = new DocumentConversionLogBeo
            {
                JobRunId     = _lawSyncJobId,
                ProcessJobId = WorkAssignment.JobId,

                DocumentId   = lawDocument.DocumentReferenceId,
                CollectionId = _datasetCollectionId,

                ConversionStatus = (int)LawSyncProcessState.Completed,
                ImageSyncStatus  = state,

                ModifiedDate = DateTime.UtcNow
            };

            //Category Reason
            if (state == (int)LawSyncProcessState.Completed && !lawDocument.IsErrorOnSyncMetadata)
            {
                documentProcessState.ReasonId = (int)Constants.LawSynProcessStateErrorCodes.Successful;
            }
            else if (state == (int)LawSyncProcessState.Failed)
            {
                documentProcessState.ReasonId = (int)Constants.LawSynProcessStateErrorCodes.ImageSyncFailure;
            }
            else
            {
                documentProcessState.ReasonId = (int)Constants.LawSynProcessStateErrorCodes.MetadataSyncFailure;
            }

            //Status
            if (state == (int)LawSyncProcessState.Completed && !lawDocument.IsErrorOnSyncMetadata)
            {
                documentProcessState.Status = EVRedactItErrorCodes.Completed;
            }
            else
            {
                documentProcessState.Status = EVRedactItErrorCodes.Failed;
            }

            return(documentProcessState);
        }
コード例 #11
0
        private DocumentConversionLogBeo GetDocumentProcessStateInformation(LawSyncDocumentDetail lawDocument, int state)
        {
            var documentProcessState = new DocumentConversionLogBeo
            {
                JobRunId     = _lawSyncJobId,
                ProcessJobId = WorkAssignment.JobId,

                DocumentId   = lawDocument.DocumentReferenceId,
                CollectionId = _datasetCollectionId,

                MetadataSyncStatus = state,
                Status             = EVRedactItErrorCodes.Failed,
                ReasonId           = (int)Constants.LawSynProcessStateErrorCodes.MetadataSyncFailure,

                ModifiedDate = DateTime.UtcNow
            };

            return(documentProcessState);
        }
コード例 #12
0
        private List <LawMetadataBEO> GetFields(LawSyncDocumentDetail lawDocument, List <LawMetadataBEO> metaDataList, out bool isError)
        {
            isError = false;
            if (_jobParameter.MappingFields == null || !_jobParameter.MappingFields.Any())
            {
                return(metaDataList);
            }

            var document = GetDocumentDetails(lawDocument.DocumentReferenceId, _datasetCollectionId, out isError);

            foreach (var lawMappingField in _jobParameter.MappingFields)
            {
                var docField =
                    document.FieldList.FirstOrDefault(
                        f =>
                        f.FieldId.ToString(CultureInfo.InvariantCulture)
                        .Equals(lawMappingField.MappingFieldId));
                if (docField == null)
                {
                    continue;
                }

                var datasetField = _dataset.DatasetFieldList.FirstOrDefault(f => f.ID.ToString(CultureInfo.InvariantCulture)
                                                                            .Equals(lawMappingField.MappingFieldId));
                var format = string.Empty;
                if (datasetField != null)
                {
                    format = datasetField.FieldType.DataFormat;
                }

                var metaData = new LawMetadataBEO
                {
                    Name  = lawMappingField.Name,
                    Id    = lawMappingField.Id,             //Not Required
                    Type  = lawMappingField.FieldType,
                    Value = ConvertFieldValueIntoLawType(docField.FieldValue, lawMappingField.FieldType, format)
                };

                metaDataList.Add(metaData);
            }
            return(metaDataList);
        }
コード例 #13
0
        /// <summary>
        /// Handle Image Conversion Not Ready
        /// </summary>
        private bool HandleConversionImageNotReadyState(LawSyncDocumentDetail lawImagingDocument, RedactItHeartbeatWatcher.DocumentStatus documentStatus,
                                                        List <LawSyncDocumentDetail> documentNotReady)
        {
            if (!lawImagingDocument.ConversionStartTime.HasValue)
            {
                lawImagingDocument.ConversionStartTime = DateTime.UtcNow;
            }
            if (DateTime.UtcNow - lawImagingDocument.ConversionStartTime > _documentConversionTimeout)
            {
                documentStatus.DocumentState = RedactItHeartbeatWatcher.DocumentStateEnum.Failure;
                documentStatus.ErrorMessage  = Constants.DocumentconversionTimeoutMessage;

                Tracer.Error("Conversion Timeout for Law document id - {0} ,dcn {1} , HeartBeatFile {2}, timeoutValue: {3}",
                             lawImagingDocument.LawDocumentId, lawImagingDocument.DocumentControlNumber,
                             lawImagingDocument.RedactItHeartBeatFilePath, _documentConversionTimeout.TotalSeconds);
                return(false);
            }
            documentNotReady.Add(lawImagingDocument);
            return(true);
        }
コード例 #14
0
        void SetMetadataForDcoument(LawSyncDocumentDetail lawDocument)
        {
            try
            {
                var metaDataList = new List <LawMetadataBEO>();
                //1) Get Fields
                bool isErrorInGetFields;
                metaDataList = GetFields(lawDocument, metaDataList, out isErrorInGetFields);
                //2) Get Tag
                bool isErrorInGetTags;
                GetTags(lawDocument, metaDataList, out isErrorInGetTags);
                //3) Law sync Tag
                var lawSyncTag = new LawMetadataBEO
                {
                    Name  = _jobParameter.LawSyncTagName,
                    Value = true,
                    IsTag = true
                };
                metaDataList.Add(lawSyncTag);
                lawDocument.MetadataList = metaDataList;

                if (isErrorInGetFields || isErrorInGetTags)
                {
                    ConstructLog(lawDocument.LawDocumentId, lawDocument.CorrelationId, lawDocument.DocumentControlNumber,
                                 Constants.LawSyncFailureinGetMetadataMessage);
                    _documentProcessStateList.Add(GetDocumentProcessStateInformation(lawDocument, (int)LawSyncProcessState.Failed));
                    lawDocument.IsErrorOnGetMetadata = true;
                }
            }
            catch (Exception ex)
            {
                ConstructLog(lawDocument.LawDocumentId, lawDocument.CorrelationId, lawDocument.DocumentControlNumber,
                             Constants.LawSyncFailureinGetMetadataMessage);
                _documentProcessStateList.Add(GetDocumentProcessStateInformation(lawDocument, (int)LawSyncProcessState.Failed));
                lawDocument.IsErrorOnGetMetadata = true;
                ex.AddDbgMsg("Law Document Id:{0}", lawDocument.LawDocumentId);
                ex.Trace().Swallow();
                ReportToDirector(ex);
            }
        }
コード例 #15
0
        /// <summary>
        /// Handle Image Not Found
        /// </summary>
        private bool HandleConversionImageNotFoundState(LawSyncDocumentDetail lawImagingDocument, RedactItHeartbeatWatcher.DocumentStatus documentStatus,
                                                        List <LawSyncDocumentDetail> documentNotReady)
        {
            if (!lawImagingDocument.ConversionEnqueueTime.HasValue)
            {
                lawImagingDocument.ConversionEnqueueTime = DateTime.UtcNow;
            }
            if (DateTime.UtcNow - lawImagingDocument.ConversionEnqueueTime >
                _documentConverisonGlobalTimeout)
            {
                documentStatus.DocumentState = RedactItHeartbeatWatcher.DocumentStateEnum.Failure;
                documentStatus.ErrorMessage  = Constants.GlobalDocumentconversionTimeoutMessage;

                Tracer.Trace("Global Conversion Timeout for Law document id - {0} ,dcn {1},collection id - {2} , HeartBeatFile {3} and Job Run Id {4}",
                             lawImagingDocument.LawDocumentId, lawImagingDocument.DocumentControlNumber,
                             lawImagingDocument.RedactItHeartBeatFilePath,
                             PipelineId);
                return(false);
            }
            documentNotReady.Add(lawImagingDocument);
            return(true);
        }
コード例 #16
0
        /// <summary>
        /// Construct LawSync document
        /// </summary>
        private void ConstructLawSyncDocument(IEnumerable <FilteredDocumentBusinessEntity> resultDocuments)
        {
            var runningDocCount          = 0;
            var lawDocumentsList         = new List <LawSyncDocumentDetail>();
            var documentProcessStateList = new List <DocumentConversionLogBeo>();

            _logInfoList = new List <JobWorkerLog <LawSyncLogInfo> >();
            foreach (var doc in resultDocuments)
            {
                _documentCorrelationId++;
                runningDocCount++;
                if (runningDocCount > Constants.BatchSize)
                {
                    runningDocCount = 0;
                    InsertDcoumentProcessState(documentProcessStateList);
                    Send(lawDocumentsList);
                    lawDocumentsList         = new List <LawSyncDocumentDetail>();    //Clear document List
                    documentProcessStateList = new List <DocumentConversionLogBeo>(); //Clear document process state List
                }

                var lawDocument = new LawSyncDocumentDetail
                {
                    DocumentReferenceId   = doc.Id,
                    DocumentControlNumber = doc.DCN,
                    IsImaging             = !doc.IsExclude,
                    CorrelationId         = _documentCorrelationId
                };
                var field = doc.OutPutFields.FirstOrDefault(f => f.Name == EVSystemFields.LawDocumentId);
                if (field != null && !string.IsNullOrEmpty(field.Value))
                {
                    lawDocument.LawDocumentId = Convert.ToInt32(field.Value);
                }

                //To fix upgrade issue from earlier version to 3.0 version. Law document id(LawDocumentId) not coming part of search result.
                if (lawDocument.LawDocumentId <= 0)
                {
                    var lawField = DocumentBO.GetDocumentFieldById(
                        _jobParameter.MatterId.ToString(CultureInfo.InvariantCulture), _dataset.CollectionId,
                        lawDocument.DocumentReferenceId, _lawFieldId);
                    if (lawField != null && !string.IsNullOrEmpty(lawField.FieldValue))
                    {
                        lawDocument.LawDocumentId = Convert.ToInt32(lawField.FieldValue);
                    }
                }

                if (lawDocument.IsImaging)
                {
                    _volumeDocumentCount++;
                    var documentPagesCount = GetPageCountForImages(_jobParameter.MatterId,
                                                                   _dataset.RedactableDocumentSetId, lawDocument.DocumentReferenceId);
                    if (_volumeDocumentCount > VolumeMaximumDocumentCount)
                    {
                        _volumeDocumentCount = 0;
                        _volumeCount++;
                        _volumeFolderName         = LawVolumeHelper.CreateVolumeFolder(_jobEVImagesDirectory, _volumeCount);
                        _volumeDocumentPagesCount = 0;
                    }
                    lawDocument.ImagesFolderPath    = _volumeFolderName;
                    lawDocument.ImageStartingNumber = _volumeDocumentPagesCount;
                    _volumeDocumentPagesCount       = _volumeDocumentPagesCount + documentPagesCount;
                }

                if (lawDocument.LawDocumentId > 0)
                {
                    lawDocumentsList.Add(lawDocument);
                }
                else
                {
                    ConstructLog(lawDocument.LawDocumentId, lawDocument.CorrelationId, lawDocument.DocumentControlNumber, Constants.LawSyncDocumentNotAvailable);
                }
                documentProcessStateList.Add(GetDocumentProcessStateInformation(lawDocument));
            }

            if (documentProcessStateList.Any())
            {
                InsertDcoumentProcessState(documentProcessStateList);
            }

            if (lawDocumentsList.Any())
            {
                Send(lawDocumentsList);
            }

            if (_logInfoList.Any())
            {
                SendLogPipe(_logInfoList);
            }
        }
コード例 #17
0
        /// <summary>
        /// Handle Image Conversion Sucesss
        /// </summary>
        private void HandleConversionImageSucessState(List <LawSyncDocumentDetail> documentReady, LawSyncDocumentDetail lawImagingDocument)
        {
            try
            {
                documentReady.Add(lawImagingDocument);
                SafeDeleteFolder(lawImagingDocument.DocumentExtractionPath);
                SafeDeleteFile(lawImagingDocument.RedactItHeartBeatFilePath);
                RenameAndSetImagesInDocument(lawImagingDocument);
                UpdateDocumentImageInLaw(lawImagingDocument);
            }
            catch (Exception ex)
            {
                ConstructLog(lawImagingDocument.LawDocumentId, lawImagingDocument.CorrelationId, lawImagingDocument.DocumentControlNumber,
                             Constants.LawSyncFailureinSyncImageMessage);
                _documentProcessStateList.Add(GetDocumentProcessStateInformationForImageSync(lawImagingDocument,
                                                                                             (int)LawSyncProcessState.Failed));

                ex.AddDbgMsg("Law Document Id:{0}", lawImagingDocument.LawDocumentId);
                ex.Trace().Swallow();
                ReportToDirector(ex);
            }
        }
コード例 #18
0
        private void ConstructLawSyncDocument(IEnumerable <ReconversionDocumentBEO> reprocessDocumentList)
        {
            #region Produce Image
            List <FilteredDocumentBusinessEntity> imagingDocuments = null;
            if (_lawSyncJobParameter.IsProduceImage)
            {
                var documentsSelection = new List <DocumentsSelectionBEO>
                {
                    _lawSyncJobParameter.DocumentsSelection,
                    _lawSyncJobParameter.ImageDocumentsSelection
                };
                imagingDocuments = LawSyncSearchHelper.GetDocuments(documentsSelection, _dcnFieldName, _lawSyncJobParameter.CreatedBy);
            }
            #endregion

            var runningDocCount          = 0;
            var lawDocumentsList         = new List <LawSyncDocumentDetail>();
            var documentProcessStateList = new List <DocumentConversionLogBeo>();
            _logInfoList = new List <JobWorkerLog <LawSyncLogInfo> >();
            foreach (var reprocessDocument in reprocessDocumentList)
            {
                _documentCorrelationId++;
                runningDocCount++;
                if (runningDocCount > Constants.BatchSize)
                {
                    runningDocCount = 0;
                    UpdateDcoumentProcessState(documentProcessStateList);
                    Send(lawDocumentsList);
                    lawDocumentsList         = new List <LawSyncDocumentDetail>();    //Clear document List
                    documentProcessStateList = new List <DocumentConversionLogBeo>(); //Clear document process state List
                }
                var lawDocument = new LawSyncDocumentDetail
                {
                    DocumentReferenceId   = reprocessDocument.DocumentId,
                    DocumentControlNumber = reprocessDocument.DCNNumber,
                    CorrelationId         = _documentCorrelationId
                };

                if (_lawSyncJobParameter.IsProduceImage && imagingDocuments != null && imagingDocuments.Any())
                {
                    lawDocument.IsImaging = imagingDocuments.Exists(y => y.DCN.Equals(lawDocument.DocumentControlNumber));
                }
                else
                {
                    //Document not part of imaging subset excluded for imaging.
                    lawDocument.IsImaging = false;
                }


                var field =
                    DocumentBO.GetDocumentFieldById(
                        _lawSyncJobParameter.MatterId.ToString(CultureInfo.InvariantCulture), _dataset.CollectionId,
                        lawDocument.DocumentReferenceId, _lawFieldId);
                if (field != null && !string.IsNullOrEmpty(field.FieldValue))
                {
                    lawDocument.LawDocumentId = Convert.ToInt32(field.FieldValue);
                }

                if (lawDocument.IsImaging)
                {
                    _volumeDocumentCount++;
                    var documentPagesCount = GetPageCountForImages(_lawSyncJobParameter.MatterId,
                                                                   _dataset.RedactableDocumentSetId, lawDocument.DocumentReferenceId);
                    if (_volumeDocumentCount > VolumeMaximumDocumentCount)
                    {
                        _volumeDocumentCount = 0;
                        _volumeCount++;
                        _volumeFolderName         = LawVolumeHelper.CreateVolumeFolder(_jobEVImagesDirectory, _volumeCount);
                        _volumeDocumentPagesCount = 0;
                    }
                    lawDocument.ImagesFolderPath    = _volumeFolderName;
                    lawDocument.ImageStartingNumber = _volumeDocumentPagesCount;
                    _volumeDocumentPagesCount       = _volumeDocumentPagesCount + documentPagesCount;
                }
                if (lawDocument.LawDocumentId > 0)
                {
                    lawDocumentsList.Add(lawDocument);
                }
                else
                {
                    ConstructLog(lawDocument.LawDocumentId, lawDocument.CorrelationId, lawDocument.DocumentControlNumber, Constants.LawSyncDocumentNotAvailable);
                }
                documentProcessStateList.Add(GetDocumentProcessStateInformation(lawDocument));
            }

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

            if (lawDocumentsList.Any())
            {
                Send(lawDocumentsList);
            }
            if (_logInfoList.Any())
            {
                SendLogPipe(_logInfoList);
            }
        }
コード例 #19
0
        private void SendDocumentForImaging(LawSyncDocumentDetail document)
        {
            int conversionStatus = (int)LawSyncProcessState.InProgress;

            try
            {
                var queryString          = new StringBuilder();
                var sourceExtractionPath = Path.Combine(_datasetExtractionPath, Guid.NewGuid().ToString(),
                                                        Constants.SourceKeyword);
                Directory.CreateDirectory(sourceExtractionPath);

                document.DocumentExtractionPath = sourceExtractionPath; //Need to be deleted.

                //1)Set source file(xdl,zdl) & Markup xml
                var source = CreateSourceFiles(sourceExtractionPath, document.DocumentReferenceId);
                if (string.IsNullOrEmpty(source))
                {
                    document.IsImagesXdlAvailable = false;
                    _documentProcessStateList.Add(GetDocumentProcessStateInformation(document, (int)LawSyncProcessState.Failed));
                    ConstructLog(document.LawDocumentId, document.CorrelationId, document.DocumentControlNumber, Constants.LawSyncMissingImageMessage);
                    return;
                }
                document.IsImagesXdlAvailable = true;
                queryString.Append(source);

                //2)Set Image Folder
                queryString.Append(Constants.QueryStringTargetPrefix);
                queryString.Append(HttpUtility.UrlEncode(document.ImagesFolderPath));//Target folder for redact it to generate pdf


                //3)Set Produced Image File name
                var fileName = document.DocumentControlNumber + Constants.Tifextension;
                queryString.Append(Constants.QueryStringDestinationFileName);
                queryString.Append(fileName);

                //4)Set Hearbeat file path-  Use to get the status of the document. The extension is .txt
                var heartBeatFile = Path.Combine(document.ImagesFolderPath,
                                                 string.Format("{0}{1}{2}", document.DocumentControlNumber, Constants.HeartbeatFileName, Constants.TextFileExtension));
                queryString.Append(Constants.QueryStringHeartBeatFileName);
                queryString.Append(HttpUtility.UrlEncode(heartBeatFile));
                document.RedactItHeartBeatFilePath = heartBeatFile;

                //5)Set Image Format(.Tiff)
                queryString.Append(Constants.QueryStringOutputFormatPrefix);
                queryString.Append(Constants.TifKeyword);

                //6)Set Image Color settings
                if (_jobParameter.TiffImageColor == TiffImageColors.One) //tiff monochrome
                {
                    queryString.Append(Constants.QueryStringTiffMonochromePrefix);
                    queryString.Append(Constants.TrueString);
                    queryString.Append(Constants.QueryStringTifDPI);
                }
                else //tiff colour
                {
                    var tiffBpp = ((int)_jobParameter.TiffImageColor).ToString(CultureInfo.InvariantCulture);
                    queryString.Append(Constants.QueryStringTiffBppPrefix);
                    queryString.Append(tiffBpp);
                    queryString.Append(Constants.QueryStringTifDPI);
                }

                //7)Set Redact-It Timeout
                queryString.Append(Constants.StepTimeout);
                queryString.Append(_redactitTimeout);

                //8)Set One images per page
                queryString.Append(Constants.QueryStringOneFilePerPagePrefix);
                queryString.Append(Constants.TrueString);


                //9)Set Redact It Job priority
                queryString.Append(Constants.QueryStringPriority);
                queryString.Append(((int)_jobParameter.ConversionPriority));

                //10 Redact-It callback Url
                queryString.Append(Constants.QueryStringNotificationUrlPrefix);
                queryString.Append(_redactitCallbackUrl);

                queryString.Append(Constants.PublishBlankPagesQueryString);
                queryString.Append(CmgServiceConfigBO.GetServiceConfigurationsforConfig(Constants.PublishBlankPages));

                PushDocumentToQueueServer(queryString, document.LawDocumentId, heartBeatFile);
            }
            catch (Exception ex)
            {
                ConstructLog(document.LawDocumentId, document.CorrelationId, document.DocumentControlNumber, Constants.LawSyncImageSendFailureMessage);
                ex.AddDbgMsg("Law Document Id:{0}", document.LawDocumentId);
                ex.Trace().Swallow();
                ReportToDirector(ex);
                conversionStatus = (int)LawSyncProcessState.Failed;
            }

            _documentProcessStateList.Add(GetDocumentProcessStateInformation(document, conversionStatus));
        }