protected override void BeginWork()
        {
            try
            {
                base.BeginWork();
                ProfileBEO       = Utils.SmartXmlDeserializer(BootParameters) as ProfileBEO;
                DcbOpticonJobBEO = PopulateImportRequest(ProfileBEO);

                if (DcbOpticonJobBEO.ImportImages)
                {
                    ImageSetId = GetImageSetId();
                }

                OpenDCB();


                numberOfDocumentsInDcb = DcbFacade.GetNumberOfDocuments();
                Tracer.Info("DCB Slicer: BeginWork found {0} documents to fetch", numberOfDocumentsInDcb);
            }
            catch (Exception ex)
            {
                LogMessage(false, "DcbSlicer failed to initialize. Error: " + ex.Message);
                throw;
            }
        }
Ejemplo n.º 2
0
        protected override void EndWork()
        {
            base.EndWork();

            if (DcbFacade != null)
            {
                DcbFacade.Dispose();
            }

            // This supposed to be called only once per process using DcbFacade
            //DcbFacade.Terminate();
        }
 private void OpenDCB()
 {
     DcbFacade = new DcbFacade();
     if (DcbOpticonJobBEO.DcbCredentialList == null || 0 == DcbOpticonJobBEO.DcbCredentialList.Count)
     {
         OpenDCBWithoutCreds();
     }
     else
     {
         OpenDCBWithCreds();
     }
 }
        private void OpenDCBWithCreds()
        {
            //Adding one more empty pair to handle the case where user passes credentials for the
            //unsecured dcbs
            DcbOpticonJobBEO.DcbCredentialList.Add(Convert.ToString((char)174));

            //If it is a secured dcb
            foreach (var usernamepasswordpair in DcbOpticonJobBEO.DcbCredentialList)
            {
                if (usernamepasswordpair == null)
                {
                    continue;
                }
                var uidpwd   = usernamepasswordpair.Split(new[] { (char)174 });
                var login    = uidpwd[0];
                var password = (uidpwd.Length > 1) ? uidpwd[1] : "";
                if (!string.IsNullOrEmpty(password))
                {
                    password = ApplicationConfigurationManager.Decrypt(password,
                                                                       ApplicationConfigurationManager.GetValue(UNPWEncryption, UNPWDataSecurity));
                }

                try
                {
                    Tracer.Debug("DcbSlicer: Opening secured DCB database {0}", DcbOpticonJobBEO.DcbSourcePath);
                    DcbFacade.OpenDCB(DcbOpticonJobBEO.DcbSourcePath, login, password);
                    DcbCredentials = new DcbCredentials {
                        Login = login, Password = password
                    };
                    return;
                }
                catch (Dcb2EvException ex)
                {
                    if (ex.ErrorCode != (int)DcbFacadeErrorCodes.AccessDenied)
                    {
                        throw;
                    }
                    ex.Trace().Swallow();
                }
            }
            var message = String.Format("Tried all login/password pairs for {0} and none worked",
                                        DcbOpticonJobBEO.DcbSourcePath);

            throw new Dcb2EvException(message, (int)DcbFacadeErrorCodes.AccessDenied);
        }
Ejemplo n.º 5
0
 private void IncludeDcbFieldsForContentInFieldMapping()
 {
     foreach (string contentfld in DcbOpticonJobBEO.ContentFields.Field)
     {
         if (null == DcbOpticonJobBEO.FieldMappings.Find(o => o.SourceFieldName == contentfld))
         {
             FieldMapBEO fieldMap = new FieldMapBEO
             {
                 SourceFieldName = contentfld,
                 SourceFieldID   =
                     DcbFacade.GetFields().Items.Find(o => o.Name == contentfld).Code,
                 DatasetFieldTypeID = Constants.ContentFieldType,
                 DatasetFieldID     = _contentFieldId,
                 DatasetFieldName   = _contentFieldName
             };
             DcbOpticonJobBEO.FieldMappings.Add(fieldMap);
         }
     }
 }
Ejemplo n.º 6
0
        private void OpenDCB(DcbCredentials dcbCredentials)
        {
            if (null != DcbFacade)
            {
                return; // Already opened
            }

            DcbFacade = new DcbFacade();
            if (null == dcbCredentials)
            {
                Tracer.Debug("DcbParser: Opening unsecured DCB database {0}", DcbOpticonJobBEO.DcbSourcePath);
                DcbFacade.OpenDCB(DcbOpticonJobBEO.DcbSourcePath, null, null);
            }
            else
            {
                Tracer.Debug("DcbParser: Opening secured DCB database {0}", DcbOpticonJobBEO.DcbSourcePath);
                DcbFacade.OpenDCB(DcbOpticonJobBEO.DcbSourcePath, dcbCredentials.Login, dcbCredentials.Password);
            }

            //Fix for UI bug
            IncludeDcbFieldsForContentInFieldMapping();
        }
Ejemplo n.º 7
0
        private DcbDatabaseTags FetchDatabaseLevelTags()
        {
            // If there are database level tags - fetch and store them to be sent with the first document
            if (!DcbOpticonJobBEO.IncludeTags)
            {
                return(null);
            }

            List <string> compositeTagNames = DcbFacade.GetDatabaseTags();

            if (0 == compositeTagNames.Count)
            {
                return(null);
            }

            DcbDatabaseTags dcbDatabaseTags = new DcbDatabaseTags()
            {
                compositeTagNames = compositeTagNames,
                DatasetId         = DcbOpticonJobBEO.TargetDatasetId,
                MatterId          = DcbOpticonJobBEO.MatterId
            };

            return(dcbDatabaseTags);
        }
Ejemplo n.º 8
0
        protected void FetchDocumentFromDCB(int documentNumber,
                                            List <DocumentDetail> documentDetailList, FamiliesInfo familiesInfo, JobWorkerLog <DcbParserLogInfo> dcbParserLogEntry)
        {
            #region Precondition asserts
            documentDetailList.ShouldNotBe(null);
            dcbParserLogEntry.ShouldNotBe(null);
            #endregion
            RVWDocumentBEO evDocument = new RVWDocumentBEO();
            try
            {
                //Get the document from DcbFacade
                Document currentDcbDocument = DcbFacade.GetDocument(documentNumber);

                //Throw exception if GetDocument fails
                currentDcbDocument.ShouldNotBe(null);

                //Create the target EV document
                evDocument.DocumentId = Guid.NewGuid().ToString().Replace("-", "").ToUpper();
                dcbParserLogEntry.LogInfo.DocumentId = evDocument.DocumentId;
                evDocument.CollectionId = DcbOpticonJobBEO.TargetDatasetId;
                evDocument.MatterId     = DcbOpticonJobBEO.MatterId;

                //Add the fields required for casemap
                RVWDocumentFieldBEO evDocumentAccessionNumField = new RVWDocumentFieldBEO
                {
                    FieldId       = Convert.ToInt32(DcbOpticonJobBEO.SysDocId),
                    FieldName     = EVSystemFields.DcbId,
                    IsSystemField = true,
                    IsRequired    = true,
                    FieldValue    = Convert.ToString(currentDcbDocument.UUID, CultureInfo.InvariantCulture)
                };
                evDocument.FieldList.Add(evDocumentAccessionNumField);
                evDocument.FieldList.Add(_evDocumentSysImportTypeField);

                //Set the fields from field mapping except content field
                foreach (FieldMapBEO fieldMap in DcbOpticonJobBEO.FieldMappings)
                {
                    Field dcbField = currentDcbDocument.FieldItems.Find(o => (o.Code == fieldMap.SourceFieldID));

                    //Profile fieldmapping has duplicates
                    RVWDocumentFieldBEO evDocumentFieldBEO = evDocument.FieldList.Find(o => o.FieldId.Equals(fieldMap.DatasetFieldID));
                    if ((null != dcbField) && (evDocumentFieldBEO == null) && (fieldMap.DatasetFieldID != _contentFieldId))
                    {
                        RVWDocumentFieldBEO evDocuemtnField = new RVWDocumentFieldBEO
                        {
                            FieldId   = fieldMap.DatasetFieldID,
                            FieldName = fieldMap.DatasetFieldName
                        };


                        FieldBEO evfieldDef = _dataset.DatasetFieldList.Find(o => o.ID == evDocuemtnField.FieldId);
                        evDocuemtnField.FieldValue = evfieldDef.FieldType.DataTypeId == Constants.DateDataType
                                                         ? GetDateFiedlValue(dcbField, dcbParserLogEntry)
                                                         : Regex.Replace(dcbField.Value, "\r\n", "\n");
                        evDocument.FieldList.Add(evDocuemtnField);
                    }
                }

                //Separate logic for content
                StringBuilder sbContent = new StringBuilder();
                if (DcbOpticonJobBEO.ContentFields != null)
                {
                    foreach (string contentfield in DcbOpticonJobBEO.ContentFields.Field)
                    {
                        Field dcbContentField = currentDcbDocument.FieldItems.Find(o => (o.Name.Equals(contentfield)));
                        if (null != dcbContentField)
                        {
                            sbContent.Append(dcbContentField.Value);
                        }
                    }
                }
                string text = sbContent.ToString().Replace("\r\n", "\n");
                //evDocument.DocumentBinary.Content = Regex.Replace(sbContent.ToString(), "\r\n", "\n");

                if (!DumpTextToFile(evDocument, text, dcbParserLogEntry))
                {
                    return;
                }

                //Set the native file path if selected
                evDocument.NativeFilePath = GetNativeFilePath(currentDcbDocument);

                if (!String.IsNullOrEmpty(evDocument.NativeFilePath) && File.Exists(evDocument.NativeFilePath))
                {
                    FileInfo fileInfo = new FileInfo(evDocument.NativeFilePath);
                    //Tracer.Trace("DcbParcer located native document {0} for DocumentId = {1} and the file length is {2}",
                    //    evDocument.NativeFilePath, evDocument.DocumentId, fileInfo.Length);
                    if (fileInfo.Length > 0)
                    {
                        evDocument.FileSize = (int)Math.Ceiling(fileInfo.Length / 1024.0);
                    }
                    else
                    {
                        evDocument.FileSize = 0;
                    }

                    evDocument.MD5HashValue = DocumentHashHelper.GetMD5HashValue(evDocument.NativeFilePath);
                    evDocument.SHAHashValue = DocumentHashHelper.GetSHAHashValue(evDocument.NativeFilePath);
                }

                //Set the MIME type
                string extn    = string.Empty;
                string newExtn = string.Empty;
                extn = Path.GetExtension(evDocument.NativeFilePath);
                if (!String.IsNullOrEmpty(extn))
                {
                    newExtn = extn.Remove(0, 1);
                }
                evDocument.MimeType      = GetMimeType(newExtn);
                evDocument.FileExtension = extn;

                string createdByGuid = String.Empty;
                if (null != ProfileBEO && null != ProfileBEO.CreatedBy)
                {
                    createdByGuid = ProfileBEO.CreatedBy;
                }
                evDocument.CreatedBy  = createdByGuid;
                evDocument.ModifiedBy = createdByGuid;

                if (File.Exists(evDocument.NativeFilePath))
                {
                    //Calculating size of file in KB
                    FileInfo fileInfo = new FileInfo(evDocument.NativeFilePath);
                    evDocument.FileSize = (int)Math.Ceiling(fileInfo.Length / Constants.KBConversionConstant);

                    if (evDocument.DocumentBinary == null)
                    {
                        evDocument.DocumentBinary = new RVWDocumentBinaryBEO();
                    }
                    RVWExternalFileBEO nativeFile = new RVWExternalFileBEO
                    {
                        Type = NATIVE_FILE_TYPE,
                        Path = evDocument.NativeFilePath
                    };
                    evDocument.DocumentBinary.FileList.Add(nativeFile);
                }

                DocumentDetail documentDetail = new DocumentDetail
                {
                    // CorrId is the same as TaskId and it is 1 based.
                    CorrelationId = checked (documentNumber + 1).ToString(CultureInfo.InvariantCulture),
                    IsNewDocument = true,
                    docType       = DocumentsetType.NativeSet,
                    document      = evDocument
                };
                documentDetailList.Add(documentDetail);

                //Add Tags
                if (DcbOpticonJobBEO.IncludeTags && null != currentDcbDocument.TagItems && currentDcbDocument.TagItems.Count > 0)
                {
                    if (null == documentDetail.DcbTags)
                    {
                        documentDetail.DcbTags = new List <DcbTags>();
                    }
                    DcbDocumentTags dcbDocumentTags = new DcbDocumentTags
                    {
                        compositeTagNames = currentDcbDocument.TagItems,
                        DatasetId         = DcbOpticonJobBEO.TargetDatasetId,
                        MatterId          = DcbOpticonJobBEO.MatterId,
                        DocumentId        = evDocument.DocumentId
                    };
                    documentDetail.DcbTags.Add(dcbDocumentTags);
                }

                // Add notes
                AddComments(documentDetail, evDocument, currentDcbDocument);

                //Add Images
                if (DcbOpticonJobBEO.ImportImages)
                {
                    RVWDocumentBEO images = ImportDocumentImages(evDocument.DocumentId, currentDcbDocument);
                    if (null != images)
                    {
                        DocumentDetail imageDocumentDetail = new DocumentDetail
                        {
                            // CorrId is the same as TaskId and it is 1 based.
                            CorrelationId = checked (documentNumber + 1).ToString(CultureInfo.InvariantCulture),
                            IsNewDocument = true,
                            docType       = DocumentsetType.ImageSet,
                            document      = images
                        };
                        documentDetailList.Add(imageDocumentDetail);
                        dcbParserLogEntry.LogInfo.AddedImages = images.DocumentBinary.FileList.Count;
                    }

                    //Add Redlines
                    //ImportDocumentRedlines();
                }

                //Add Document Relation
                if (DcbOpticonJobBEO.IsImportFamilies)
                {
                    ImportDocumentRelationship(evDocument.DocumentId, currentDcbDocument, familiesInfo);
                }
                #region Postcondition asserts
                documentDetailList.ShouldNotBe(null);
                #endregion
            }
            catch (Exception ex)
            {
                //TaskLogInfo.AddParameters(Constants.ErrorDoAtomicWork + "<br/>" + ex.Message);
                //TaskLogInfo.StackTrace = ex.Source + "<br/>" + ex.Message + "<br/>" + ex.StackTrace;
                //TaskLogInfo.IsError = true;

                ex.Trace().Swallow();
                dcbParserLogEntry.Success = false;
                if (ex.ToUserString().Contains(Constants.DiskFullErrorMessage))
                {
                    dcbParserLogEntry.LogInfo.Message = "There is not enough space on the disk";
                    throw;
                }
                else
                {
                    dcbParserLogEntry.LogInfo.Message = ex.ToUserString();
                }
            }
        }
 private void OpenDCB()
 {
     DcbFacade = new DcbFacade();
     if (DcbOpticonJobBEO.DcbCredentialList == null || 0 == DcbOpticonJobBEO.DcbCredentialList.Count)
     {
         OpenDCBWithoutCreds();
     }
     else
     {
         OpenDCBWithCreds();
     }
 }
Ejemplo n.º 10
0
        private void OpenDCB(DcbCredentials dcbCredentials)
        {
            if (null != DcbFacade)
            {
                return; // Already opened
            }

            DcbFacade = new DcbFacade();
            if (null == dcbCredentials)
            {
                Tracer.Debug("DcbParser: Opening unsecured DCB database {0}", DcbOpticonJobBEO.DcbSourcePath);
                DcbFacade.OpenDCB(DcbOpticonJobBEO.DcbSourcePath, null, null);
            }
            else
            {
                Tracer.Debug("DcbParser: Opening secured DCB database {0}", DcbOpticonJobBEO.DcbSourcePath);
                DcbFacade.OpenDCB(DcbOpticonJobBEO.DcbSourcePath, dcbCredentials.Login, dcbCredentials.Password);
            }

            //Fix for UI bug
            IncludeDcbFieldsForContentInFieldMapping();
        }
Ejemplo n.º 11
0
 private void OpenDCBWithoutCreds()
 {
     Tracer.Debug("DcbSlicer: Opening unsecured DCB database {0}", DcbOpticonJobBEO.DcbSourcePath);
     DcbFacade.OpenDCB(DcbOpticonJobBEO.DcbSourcePath, null, null);
 }