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); _familyThreshHold = ((_jobParameter.FamilyThreshold > 0) ? (byte)_jobParameter.FamilyThreshold : Constants.NearDuplicationFamilyThresholdDefaultValue); _clusterThreshHold = ((_jobParameter.ClusterThreshold > 0) ? (byte)_jobParameter.ClusterThreshold : Constants.NearDuplicationClusterThresholdDefaultValue); //Get Vault Database Connection string var documentVaultManager = new DocumentVaultManager(); _connectionString = documentVaultManager.GetConnectionStringForMatter(_jobParameter.MatterId); //Get Polaris license server IP address _licenseServer = CmgServiceConfigBO.GetServiceConfigurationsforConfig(Constants.NearDuplicationPolarisLicenseKeyName); }
/// <summary> /// Deletes the near native for overlay. /// </summary> /// <param name="overlayDocumentDetailObjects">The overlay document detail objects.</param> private void DeleteNearNativeForOverlay(IEnumerable <DocumentDetail> overlayDocumentDetailObjects) { try { if (overlayDocumentDetailObjects != null && overlayDocumentDetailObjects.Any()) { // extract RVWDocumentBEO objects out of overlay document detail objects. IEnumerable <RVWDocumentBEO> overlayDocuments = overlayDocumentDetailObjects.Select(p => p.document); // Call Document Vault Manager function delete document binary if (overlayDocuments.Any()) { var documentVaultManager = new DocumentVaultManager(); documentVaultManager.DeleteNearNativeDocumentBinary(overlayDocuments); //Delete document Redaction var firstOrDefault = overlayDocuments.FirstOrDefault(); if (firstOrDefault != null) { documentVaultManager.DeleteDocumentsMetaData(_matterId, firstOrDefault.CollectionId, overlayDocuments, 4); } } } } catch (Exception ex) { ReportToDirector(ex); ex.Trace().Swallow(); //LogMessage(false, ex.ToUserString()); } }
public bool UpdateProducedImageFilePath(string documentId, string collectionId, long matterId, List <string> producedImages, string userId) { var fileCount = 0; var documentTextEntities = new List <DocumentTextEntity>(); producedImages.Sort(); foreach (var imageFile in producedImages) { fileCount = fileCount + 1; documentTextEntities.Add(new DocumentTextEntity { CollectionId = new Guid(collectionId), CreatedBy = userId, DocumentReferenceId = documentId, SequenceId = fileCount, DocumentTextType = new DocumentTextTypeEntity { TextTypeId = 2, TextTypeName = ConDocumentTypeName }, DocumentText = imageFile }); } var documentMasterRecords = new List <DocumentMasterEntity> { new DocumentMasterEntity { DocumentReferenceId = documentId, CollectionId = new Guid(collectionId) } }; var documentVaultManager = new DocumentVaultManager(); return(documentVaultManager.BulkUpdateImagesInDocumentText(matterId, documentMasterRecords, documentTextEntities, 2)); }
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); _familyThreshHold = ((_jobParameter.FamilyThreshold > 0) ? (byte) _jobParameter.FamilyThreshold : Constants.NearDuplicationFamilyThresholdDefaultValue); _clusterThreshHold = ((_jobParameter.ClusterThreshold > 0) ? (byte) _jobParameter.ClusterThreshold : Constants.NearDuplicationClusterThresholdDefaultValue); //Get Vault Database Connection string var documentVaultManager = new DocumentVaultManager(); _connectionString = documentVaultManager.GetConnectionStringForMatter(_jobParameter.MatterId); //Get Polaris license server IP address _licenseServer = CmgServiceConfigBO.GetServiceConfigurationsforConfig(Constants.NearDuplicationPolarisLicenseKeyName); }
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(); }
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(); }
/// <summary> /// Get Native File Path /// </summary> private String GetNativeFilePath(String documentId) { string nativeFile = string.Empty; var documentVaultManager = new DocumentVaultManager(); using (EVTransactionScope transScope = new EVTransactionScope(System.Transactions.TransactionScopeOption.Suppress)) { nativeFile = documentVaultManager.GetNativeFilePath(m_Dataset.Matter.FolderID, new Guid(m_JobParameter.CollectionId), documentId); } return(nativeFile); }
/// <summary> /// Get Native File Path /// </summary> private string GetNativeFilePath(String documentId) { string nativeFile; var documentVaultManager = new DocumentVaultManager(); using (new EVTransactionScope(System.Transactions.TransactionScopeOption.Suppress)) { nativeFile = documentVaultManager.GetNativeFilePath(_datasetBEO.Matter.FolderID, new Guid(_jobParams.CollectionId), documentId); } return(nativeFile); }
/// <summary> /// Get Document Text File for colletionId /// </summary> private IEnumerable <RVWDocumentBEO> GetDocumentTextFile() { try { //Get document text file var documentVaultManager = new DocumentVaultManager(); var documents = documentVaultManager.GetDocumentTextFileForCollection(_jobParameter.MatterId, _jobParameter.CollectionId, 1); return(documents); } catch (Exception ex) { Tracer.Error( "Near Duplication Start Up Worker: Failed in get document text file for job run id:{0}, exception:{1}", PipelineId, ex); throw; } }
/// <summary> /// Get Document Control Number for Documents /// </summary> /// <param name="nearDuplicationResultDocuments"></param> /// <returns></returns> private List <DocumentMasterEntity> GetDocumentControlNumberForDocuments( IEnumerable <NearDuplicationResultInfo> nearDuplicationResultDocuments) { try { List <string> documentReferenceIds = nearDuplicationResultDocuments.Select(resultDocument => resultDocument.DocumentId).ToList(); var documentVaultManager = new DocumentVaultManager(); IEnumerable <DocumentMasterEntity> documentsDetailInfo = documentVaultManager.BulkGetDcnForDocuments(_jobParameter.MatterId, _jobParameter.CollectionId, documentReferenceIds); return(documentsDetailInfo.ToList()); } catch (Exception ex) { ReportToDirector(ex); ex.Trace().Swallow(); } return(null); }
/// <summary> /// Overlay- Check ContentFile (i.e same file as used during Append) /// </summary> /// <param name="collectionId"></param> /// <param name="documentId"></param> /// <returns></returns> private string GetExistingContentFile(string collectionId, string documentId) { string contentFilePath = null; var docVaultManager = new DocumentVaultManager(); RVWDocumentBEO document; using (new EVTransactionScope(System.Transactions.TransactionScopeOption.Suppress)) { document = docVaultManager.GetDocumentFileDetails(_datasetBEO.Matter.FolderID, new Guid(collectionId), documentId, 1, string.Empty); } if (document != null && document.DocumentBinary != null && document.DocumentBinary.FileList != null && document.DocumentBinary.FileList.Count > 0) { var contentFile = document.DocumentBinary.FileList.Where(f => f.Type == Constants.ExtractedText_FILE_TYPE); var rvwExternalFileBeos = contentFile as RVWExternalFileBEO[] ?? contentFile.ToArray(); if (rvwExternalFileBeos.FirstOrDefault() != null) { contentFilePath = (!string.IsNullOrEmpty(rvwExternalFileBeos.First().Path) ? rvwExternalFileBeos.First().Path : string.Empty); } } return(contentFilePath); }
/// <summary> /// Overlay- Check ContentFile (i.e same file as used during Append) /// </summary> /// <param name="collectionId"></param> /// <param name="documentId"></param> /// <param name="textFilePath"></param> /// <param name="newTextFile"></param> /// <returns></returns> private string GetExistingContentFile(string collectionId, string documentId) { string contentFilePath = null; DocumentVaultManager docVaultManager = new DocumentVaultManager(); var collectionGUILD = new Guid(collectionId); RVWDocumentBEO document = null; using (EVTransactionScope transScope = new EVTransactionScope(System.Transactions.TransactionScopeOption.Suppress)) { document = docVaultManager.GetDocumentFileDetails(m_Dataset.Matter.FolderID, new Guid(collectionId), documentId, 1, string.Empty); } if (document != null && document.DocumentBinary != null && document.DocumentBinary.FileList != null && document.DocumentBinary.FileList.Count > 0) { var contentFile = document.DocumentBinary.FileList.Where(f => f.Type == Constants.ExtractedText_FILE_TYPE); if (contentFile != null && contentFile.FirstOrDefault() != null) { contentFilePath = (!string.IsNullOrEmpty(contentFile.FirstOrDefault().Path) ? contentFile.FirstOrDefault().Path : string.Empty); } } return(contentFilePath); }
/// <summary> /// Update Fields in Database /// </summary> private bool UpdateNearDuplicationFieldsInDatabase() { bool status = false; try { Tracer.Info( "Near Duplication EV Update Worker: Update fields in database, started time {0} for job run id :{1}", DateTime.Now, PipelineId); var documentVaultManager = new DocumentVaultManager(); status = documentVaultManager.BulkUpsertDocumentsFields( _jobParameter.MatterId.ToString(CultureInfo.InvariantCulture), _jobParameter.CollectionId, _documentsFields); Tracer.Info( "Near Duplication EV Update Worker: Update fields in database, completed time {0} for job run id :{1}", DateTime.Now, PipelineId); } catch (Exception ex) { ReportToDirector(ex); ex.Trace().Swallow(); } return(status); }
/// <summary> /// Get Document Text File for colletionId /// </summary> private IEnumerable<RVWDocumentBEO> GetDocumentTextFile() { try { //Get document text file var documentVaultManager = new DocumentVaultManager(); var documents = documentVaultManager.GetDocumentTextFileForCollection(_jobParameter.MatterId, _jobParameter.CollectionId, 1); return documents; } catch (Exception ex) { Tracer.Error( "Near Duplication Start Up Worker: Failed in get document text file for job run id:{0}, exception:{1}", PipelineId, ex); throw; } }
/// <summary> /// Gets the reconversion document beos for job id. /// </summary> /// <param name="matterId">The matter id.</param> /// <param name="jobId">The job id.</param> /// <param name="filters">The filters.</param> /// <returns></returns> public static IEnumerable <ReconversionDocumentBEO> GetReconversionDocumentBeosForJobId(long matterId, long jobId, string filters) { IDataReader dataReader = null; if (!string.IsNullOrEmpty(filters)) { //user can filter the conversion results then do select all //filters has filter key : value with comma a delimiter var documentVaultManager = new DocumentVaultManager(); documentVaultManager.Init(matterId); dataReader = documentVaultManager.GetConversionResultsDataReader(matterId, jobId, null, null, filters); } else { var evDbManager = new EVDbManager(matterId); const string sqlCommand = @"SELECT dm.DocID,dm.DocTitle,dm.DocReferenceID, dm.CollectionID, ps.DCN ,T.DocText FROM [dbo].[DOC_ProcessSet] AS ps INNER JOIN [dbo].[DOC_DocumentMaster] AS dm ON ps.[DocID] = dm.[DocID] LEFT OUTER JOIN dbo.DOC_DocumentText T ON DM.DocID = T.DocID AND T.TextTypeID = 2 WHERE ps.JobID = @JobID ORDER BY DM.DocTitle"; var dbCommand = evDbManager.CreateTextCommand(sqlCommand); dbCommand.CommandTimeout = 0; evDbManager.AddInParameter(dbCommand, "JobID", DbType.Int64, jobId); dataReader = evDbManager.ExecuteDataReader(dbCommand); } Debug.Assert(dataReader != null); ReconversionDocumentBEO reconversionDocumentBeo = null; while (dataReader.Read()) { string docRefId = dataReader["DocReferenceID"].ToString(); string collectionId = dataReader["CollectionID"].ToString(); string dcn = dataReader["DCN"].ToString(); //new document (need to check this due to that multiple rows are returned in case of one document with multiple file path associated) if (reconversionDocumentBeo == null || !docRefId.Equals(reconversionDocumentBeo.DocumentId) || !collectionId.Equals(reconversionDocumentBeo.CollectionId) || !dcn.Equals(reconversionDocumentBeo.DCNNumber)) { if (reconversionDocumentBeo != null) { //query sorts the results in DCN order //accumulate the file list of the document (DCN) then yield //Example:(DCN File1),(DCN,File2) and (DCN001, File3) //yield DCN,<File1,File2,File3> yield return(reconversionDocumentBeo); } reconversionDocumentBeo = new ReconversionDocumentBEO() { DocumentId = docRefId, CollectionId = collectionId, DCNNumber = dcn }; } reconversionDocumentBeo.FileList.Add(dataReader[Constants.ColumnDocText].ToString()); //add file path to list of file path for the document } dataReader.Close(); if (reconversionDocumentBeo != null) { yield return(reconversionDocumentBeo); } }
/// <summary> /// Gets the production document list. /// </summary> /// <param name="filePath">The file path.</param> /// <param name="selectionMode">The selection mode.</param> /// <param name="matterId">The matter id.</param> /// <param name="baseJobConfig">The base job config.</param> /// <param name="redactableCollectionId">The redactable collection id.</param> /// <param name="jobId"></param> /// <param name="filters"> </param> /// <returns></returns> public virtual IEnumerable <ReconversionProductionDocumentBEO> GetProductionDocumentList( string filePath, ReProcessJobSelectionMode selectionMode, long matterId, ProductionDetailsBEO baseJobConfig, string redactableCollectionId, int jobId, string filters = null) { switch (selectionMode) { case ReProcessJobSelectionMode.Selected: { var docidList = GetDocumentIdListFromFile(filePath, Constants.DocId); foreach (var v in GetProductionDocumentListForIdList( docidList, Constants.DocId, matterId, baseJobConfig, redactableCollectionId, jobId)) { yield return(v); } break; } case ReProcessJobSelectionMode.Csv: case ReProcessJobSelectionMode.CrossReference: { var dictIds = GetDocumentIdListFromFile(filePath, Constants.DCN, Constants.DocumentSetName); //put all value in one list. Since there is only one production set, it should all be the same collectionId var ids = new List <string>(); foreach (var dictId in dictIds) { ids.AddRange(dictId.Value); } foreach (var v in GetProductionDocumentListForIdList( ids, Constants.DCN, matterId, baseJobConfig, redactableCollectionId, jobId)) { yield return(v); } break; } case ReProcessJobSelectionMode.All: IEnumerable <ReconversionProductionDocumentBEO> reconversionProductionDocumentBeos = null; if (!string.IsNullOrEmpty(filters)) { var documentVaultManager = new DocumentVaultManager(); documentVaultManager.Init(matterId); IEnumerable <DocumentConversionLogBeo> documentConversionLogBeos = documentVaultManager.GetConversionResultsWithFilters(matterId, jobId, null, null, filters ); var docidList = documentConversionLogBeos.Select( documentConversionLogBeo => documentConversionLogBeo.DocId.ToString(CultureInfo.InvariantCulture)).ToList(); reconversionProductionDocumentBeos = GetProductionDocumentListForIdList( docidList, Constants.DocId, matterId, baseJobConfig, redactableCollectionId, jobId); } else { reconversionProductionDocumentBeos = GetProductionDocumentListForIdList ( null, "ALL", matterId, baseJobConfig, redactableCollectionId, jobId); } if (reconversionProductionDocumentBeos == null) { yield return(null); } foreach (var reConversionProductionBeo in reconversionProductionDocumentBeos) { yield return(reConversionProductionBeo); } break; } }
/// <summary> /// Overlay- Check ContentFile (i.e same file as used during Append) /// </summary> /// <param name="collectionId"></param> /// <param name="documentId"></param> /// <param name="textFilePath"></param> /// <param name="newTextFile"></param> /// <returns></returns> private string GetExistingContentFile(string collectionId, string documentId) { string contentFilePath = null; DocumentVaultManager docVaultManager = new DocumentVaultManager(); var collectionGUILD = new Guid(collectionId); RVWDocumentBEO document = null; using (EVTransactionScope transScope = new EVTransactionScope(System.Transactions.TransactionScopeOption.Suppress)) { document = docVaultManager.GetDocumentFileDetails(m_Dataset.Matter.FolderID, new Guid(collectionId), documentId, 1, string.Empty); } if (document != null && document.DocumentBinary != null && document.DocumentBinary.FileList != null && document.DocumentBinary.FileList.Count > 0) { var contentFile = document.DocumentBinary.FileList.Where(f => f.Type == Constants.ExtractedText_FILE_TYPE); if (contentFile != null && contentFile.FirstOrDefault() != null) { contentFilePath = (!string.IsNullOrEmpty(contentFile.FirstOrDefault().Path) ? contentFile.FirstOrDefault().Path : string.Empty); } } return contentFilePath; }
public bool UpdateProducedImageFilePath(string documentId, string collectionId, long matterId, List<string> producedImages,string userId) { var fileCount = 0; var documentTextEntities = new List<DocumentTextEntity>(); producedImages.Sort(); foreach (var imageFile in producedImages) { fileCount = fileCount + 1; documentTextEntities.Add(new DocumentTextEntity { CollectionId = new Guid(collectionId), CreatedBy = userId, DocumentReferenceId = documentId, SequenceId = fileCount, DocumentTextType = new DocumentTextTypeEntity { TextTypeId = 2, TextTypeName = ConDocumentTypeName }, DocumentText = imageFile }); } var documentMasterRecords = new List<DocumentMasterEntity> { new DocumentMasterEntity { DocumentReferenceId = documentId, CollectionId = new Guid(collectionId) } }; var documentVaultManager = new DocumentVaultManager(); return documentVaultManager.BulkUpdateImagesInDocumentText(matterId, documentMasterRecords, documentTextEntities,2); }
/// <summary> /// Get Native File Path /// </summary> private String GetNativeFilePath(String documentId) { string nativeFile = string.Empty; var documentVaultManager = new DocumentVaultManager(); using (EVTransactionScope transScope = new EVTransactionScope(System.Transactions.TransactionScopeOption.Suppress)) { nativeFile = documentVaultManager.GetNativeFilePath(m_Dataset.Matter.FolderID, new Guid(m_JobParameter.CollectionId), documentId); } return nativeFile; }
/// <summary> /// Gets the production document list. /// </summary> /// <param name="filePath">The file path.</param> /// <param name="selectionMode">The selection mode.</param> /// <param name="matterId">The matter id.</param> /// <param name="baseJobConfig">The base job config.</param> /// <param name="redactableCollectionId">The redactable collection id.</param> /// <param name="jobId"></param> /// <param name="filters"> </param> /// <returns></returns> public virtual IEnumerable<ReconversionProductionDocumentBEO> GetProductionDocumentList( string filePath, ReProcessJobSelectionMode selectionMode, long matterId, ProductionDetailsBEO baseJobConfig, string redactableCollectionId, int jobId,string filters=null) { switch (selectionMode) { case ReProcessJobSelectionMode.Selected: { var docidList = GetDocumentIdListFromFile(filePath, Constants.DocId); foreach (var v in GetProductionDocumentListForIdList( docidList, Constants.DocId, matterId, baseJobConfig, redactableCollectionId, jobId)) yield return v; break; } case ReProcessJobSelectionMode.Csv: case ReProcessJobSelectionMode.CrossReference: { var dictIds = GetDocumentIdListFromFile(filePath, Constants.DCN, Constants.DocumentSetName); //put all value in one list. Since there is only one production set, it should all be the same collectionId var ids = new List<string>(); foreach (var dictId in dictIds) { ids.AddRange(dictId.Value); } foreach (var v in GetProductionDocumentListForIdList( ids, Constants.DCN, matterId, baseJobConfig, redactableCollectionId, jobId)) yield return v; break; } case ReProcessJobSelectionMode.All: IEnumerable<ReconversionProductionDocumentBEO> reconversionProductionDocumentBeos = null; if (!string.IsNullOrEmpty(filters)) { var documentVaultManager = new DocumentVaultManager(); documentVaultManager.Init(matterId); IEnumerable<DocumentConversionLogBeo> documentConversionLogBeos = documentVaultManager.GetConversionResultsWithFilters(matterId, jobId, null, null, filters ); var docidList = documentConversionLogBeos.Select( documentConversionLogBeo => documentConversionLogBeo.DocId.ToString(CultureInfo.InvariantCulture)).ToList(); reconversionProductionDocumentBeos = GetProductionDocumentListForIdList( docidList, Constants.DocId, matterId, baseJobConfig, redactableCollectionId, jobId); } else { reconversionProductionDocumentBeos = GetProductionDocumentListForIdList ( null, "ALL", matterId, baseJobConfig, redactableCollectionId, jobId); } if (reconversionProductionDocumentBeos == null) yield return null; foreach (var reConversionProductionBeo in reconversionProductionDocumentBeos) yield return reConversionProductionBeo; break; } }
/// <summary> /// Get document count in Volume /// </summary> private int GetVolumeDocumentCount(string volumePath) { var docManager = new DocumentVaultManager(); return docManager.GetVolumeDocumentCount(Convert.ToInt64(_mProductionDocumentDetail.MatterId), _mProductionDocumentDetail.ProductionCollectionId, volumePath); }
/// <summary> /// Get Document Control Number for Documents /// </summary> /// <param name="nearDuplicationResultDocuments"></param> /// <returns></returns> private List<DocumentMasterEntity> GetDocumentControlNumberForDocuments( IEnumerable<NearDuplicationResultInfo> nearDuplicationResultDocuments) { try { List<string> documentReferenceIds = nearDuplicationResultDocuments.Select(resultDocument => resultDocument.DocumentId).ToList(); var documentVaultManager = new DocumentVaultManager(); IEnumerable<DocumentMasterEntity> documentsDetailInfo = documentVaultManager.BulkGetDcnForDocuments(_jobParameter.MatterId, _jobParameter.CollectionId, documentReferenceIds); return documentsDetailInfo.ToList(); } catch (Exception ex) { ReportToDirector(ex); ex.Trace().Swallow(); } return null; }
/// <summary> /// Update Fields in Database /// </summary> private bool UpdateNearDuplicationFieldsInDatabase() { bool status = false; try { Tracer.Info( "Near Duplication EV Update Worker: Update fields in database, started time {0} for job run id :{1}", DateTime.Now, PipelineId); var documentVaultManager = new DocumentVaultManager(); status = documentVaultManager.BulkUpsertDocumentsFields( _jobParameter.MatterId.ToString(CultureInfo.InvariantCulture), _jobParameter.CollectionId, _documentsFields); Tracer.Info( "Near Duplication EV Update Worker: Update fields in database, completed time {0} for job run id :{1}", DateTime.Now, PipelineId); } catch (Exception ex) { ReportToDirector(ex); ex.Trace().Swallow(); } return status; }
/// <summary> /// Gets the reconversion document beos for job id. /// </summary> /// <param name="matterId">The matter id.</param> /// <param name="jobId">The job id.</param> /// <param name="filters">The filters.</param> /// <returns></returns> public static IEnumerable<ReconversionDocumentBEO> GetReconversionDocumentBeosForJobId(long matterId, long jobId, string filters) { IDataReader dataReader = null; if (!string.IsNullOrEmpty(filters)) { //user can filter the conversion results then do select all //filters has filter key : value with comma a delimiter var documentVaultManager = new DocumentVaultManager(); documentVaultManager.Init(matterId); dataReader = documentVaultManager.GetConversionResultsDataReader(matterId, jobId, null, null, filters); } else { var evDbManager = new EVDbManager(matterId); const string sqlCommand = @"SELECT dm.DocID,dm.DocTitle,dm.DocReferenceID, dm.CollectionID, ps.DCN ,T.DocText FROM [dbo].[DOC_ProcessSet] AS ps INNER JOIN [dbo].[DOC_DocumentMaster] AS dm ON ps.[DocID] = dm.[DocID] LEFT OUTER JOIN dbo.DOC_DocumentText T ON DM.DocID = T.DocID AND T.TextTypeID = 2 WHERE ps.JobID = @JobID ORDER BY DM.DocTitle"; var dbCommand = evDbManager.CreateTextCommand(sqlCommand); dbCommand.CommandTimeout = 0; evDbManager.AddInParameter(dbCommand, "JobID", DbType.Int64, jobId); dataReader = evDbManager.ExecuteDataReader(dbCommand); } Debug.Assert(dataReader!=null); ReconversionDocumentBEO reconversionDocumentBeo = null; while (dataReader.Read()) { string docRefId = dataReader["DocReferenceID"].ToString(); string collectionId = dataReader["CollectionID"].ToString(); string dcn = dataReader["DCN"].ToString(); //new document (need to check this due to that multiple rows are returned in case of one document with multiple file path associated) if (reconversionDocumentBeo == null || !docRefId.Equals(reconversionDocumentBeo.DocumentId) || !collectionId.Equals(reconversionDocumentBeo.CollectionId) || !dcn.Equals(reconversionDocumentBeo.DCNNumber)) { if (reconversionDocumentBeo != null) { //query sorts the results in DCN order //accumulate the file list of the document (DCN) then yield //Example:(DCN File1),(DCN,File2) and (DCN001, File3) //yield DCN,<File1,File2,File3> yield return reconversionDocumentBeo; } reconversionDocumentBeo = new ReconversionDocumentBEO() { DocumentId = docRefId, CollectionId = collectionId, DCNNumber = dcn }; } reconversionDocumentBeo.FileList.Add(dataReader[Constants.ColumnDocText].ToString()); //add file path to list of file path for the document } dataReader.Close(); if (reconversionDocumentBeo != null) yield return reconversionDocumentBeo; }
/// <summary> /// Tag the documents with not reviewed tag /// </summary> /// <param name="reviewsetRecord">Reviewset Record</param> /// <param name="tempList">List of documents added to reviewset</param> private void TagDocumentsNotReviewed(DocumentRecordCollection reviewsetRecord, List <ReviewsetDocumentBEO> tempList) { reviewsetRecord.ShouldNotBe(null); tempList.ShouldNotBe(null); var matterId = reviewsetRecord.ReviewsetDetails.MatterId.ToString(CultureInfo.InvariantCulture); var collectionId = reviewsetRecord.ReviewsetDetails.CollectionId; //var currentUser = EVSessionManager.Get<UserSessionBEO>(Constants.UserSessionInfo); var documentTagObjects = new List <DocumentTagBEO>(); var _binderDetail = BinderVaultManagerInstance.GetBinderSpecificDetails(matterId, reviewsetRecord.ReviewsetDetails.BinderId); _binderDetail.ShouldNotBe(null); _binderDetail.NotReviewedTagId.ShouldBeGreaterThan(0); _binderDetail.ReviewedTagId.ShouldBeGreaterThan(0); reviewsetRecord.ReviewsetDetails.NotReviewedTagId = _binderDetail.NotReviewedTagId; reviewsetRecord.ReviewsetDetails.ReviewedTagId = _binderDetail.ReviewedTagId; var docsInfo = ConvertToBulkDocumentInfoBEO(tempList); //dictionary to hold list of documents to update var documentList = docsInfo.ToDictionary(a => a.DocumentId, a => a); //get Effective Tags for the give tag var effectiveTagList = BulkTagBO.GetEfectiveTags(matterId, new Guid(collectionId), _binderDetail.BinderId, _binderDetail.NotReviewedTagId, Constants.One).ToList(); var currentState = new List <DocumentTagBEO>(); var newState = new List <DocumentTagBEO>(); //get the list of tags with current status for the documents to be tagged currentState.AddRange(DocumentVaultManager.GetDocumentTags(matterId, new Guid(collectionId), documentList.Keys.ToList())); //for every tag from the effective list of tags to be updated foreach (var tag in effectiveTagList) { newState.AddRange( documentList.Values.Select( x => new DocumentTagBEO { TagId = tag.TagId, Status = tag.TagState, DocumentId = x.DocumentId, DCN = x.DCN, TagTypeSpecifier = tag.type, TagName = tag.TagName })); } //get all the documents that is not part of current documents list and update to vault var vaultChanges = newState.Except(currentState, new DocumentTagComparer()).Distinct().ToList(); //Remove the entries that are already untagged but are marked for untagging vaultChanges.RemoveAll(document => document.Status == Constants.Untagged && currentState.Exists( y => y.TagId == document.TagId && String.Compare(y.DocumentId, document.DocumentId, StringComparison.OrdinalIgnoreCase) == 0) == false); /* The following statement will take the untagged documents in the new state and * make it as list of tagged documents so that except operator in the next statement * remove all the tagged documents in the current state that have * been untagged now.*/ var newstateUntaggedDocuments = newState.Where(t => t.Status != Constants.Tagged).Select(t => new DocumentTagBEO { TagId = t.TagId, DocumentId = t.DocumentId, Status = Constants.Tagged }).ToList(); //Determine Tag changes to update in search index..This has to be supplied for IndexTaggerWorker to take care in search-engine var indexChanges = reviewsetRecord.DocumentTags = currentState.FindAll(currentStateOfDocument => (newstateUntaggedDocuments.Find(newStateOfDocument => currentStateOfDocument.TagId == newStateOfDocument.TagId && currentStateOfDocument.DocumentId == newStateOfDocument.DocumentId && currentStateOfDocument.Status == newStateOfDocument.Status) == null)).Union(newState). Distinct(new DocumentTagBEO()).ToList(); DocumentVaultManager.UpdateDocumentTags(matterId, new Guid(collectionId), _binderDetail.BinderId, vaultChanges, indexChanges, _createdBy); Send(reviewsetRecord); }