コード例 #1
0
        public ImportResultContract ProcessSession(string sessionId, long?projectId, int userId, string uploadMessage,
                                                   ProjectTypeContract projectType, FulltextStoreTypeContract storeType,
                                                   IList <PermissionFromAuthContract> autoImportPermissions)
        {
            if (!m_activeSessionManager.ContainsSessionId(sessionId))
            {
                return(new ImportResultContract {
                    Success = false
                });
            }

            ResourceSessionDirector director = m_activeSessionManager.GetDirectorBySessionId(sessionId);

            director.SetSessionInfoValue(SessionInfo.Message, uploadMessage);
            director.SetSessionInfoValue(SessionInfo.CreateTime, DateTime.UtcNow);
            director.SetSessionInfoValue(SessionInfo.ProjectId, projectId);
            director.SetSessionInfoValue(SessionInfo.UserId, userId);
            director.SetSessionInfoValue(SessionInfo.AutoImportPermissions, autoImportPermissions);
            director.SetSessionInfoValue(SessionInfo.ProjectType, projectType);
            director.SetSessionInfoValue(SessionInfo.StoreType, storeType);
            bool result = m_resourceProcessorManager.ProcessSessionResources(director);
            ImportResultContract importResult = new ImportResultContract(
                director.GetSessionInfoValue <long>(SessionInfo.ProjectId),
                result
                );

            m_activeSessionManager.FinalizeSession(sessionId);
            return(importResult);
        }
コード例 #2
0
        public bool ProcessSessionResources(ResourceSessionDirector resourceDirector)
        {
            if (resourceDirector.Resources.Any(x => x.ResourceType == ResourceType.ExtractableArchive))
            {
                ProcessExtractableArchive(resourceDirector);
            }

            if (resourceDirector.Resources.Any(x => x.ResourceType == ResourceType.SourceDocument))
            {
                ProcessXmlConversion(resourceDirector); //call of library to convert docx to xml resources which are added to resources in paramater
            }
            ProcessMetaData(resourceDirector);          //obtain entity information from processing metadata

            ProcessTransformations(resourceDirector);   //Process Transformations

            if (resourceDirector.Resources.Any(x => x.ResourceType == ResourceType.Audio))
            {
                GenerateFullBooksResources(resourceDirector);                                      //GenerateFull audio records
            }
            var existTask    = Task.Factory.StartNew(() => ProcessExistDbStore(resourceDirector)); //saves xmls to Exist
            var resourceTask = Task.Factory.StartNew(() => ProcessFileDbStore(resourceDirector));  //saves images, docx etc on physical disk

            Task.WaitAll(existTask, resourceTask);

            ProcessRelationalDbStore(resourceDirector); //if everything was ok then saves entity into relational database
            //TODO add try catch with rollback and return false
            return(true);
        }
コード例 #3
0
 private void ProcessMetaData(ResourceSessionDirector resourceDirector)
 {
     try
     {
         m_metadataProcessor.Process(resourceDirector);
     }
     catch (Exception e)
     {
         if (m_log.IsErrorEnabled)
         {
             m_log.Error("Error processing XMD metadata", e);
         }
         throw;
     }
 }
コード例 #4
0
 private void ProcessRelationalDbStore(ResourceSessionDirector resourceDirector)
 {
     try
     {
         m_relationalDbStoreProcessor.Process(resourceDirector);
     }
     catch (Exception e)
     {
         if (m_log.IsErrorEnabled)
         {
             m_log.Error("Error storing data to relational database", e);
         }
         throw;
     }
 }
コード例 #5
0
 private void ProcessFileDbStore(ResourceSessionDirector resourceDirector)
 {
     try
     {
         m_fileDbStoreProcessor.Process(resourceDirector);
     }
     catch (Exception e)
     {
         if (m_log.IsErrorEnabled)
         {
             m_log.Error("Error storing data to file storage", e);
         }
         throw;
     }
 }
コード例 #6
0
 private void ProcessXmlConversion(ResourceSessionDirector resourceDirector)
 {
     try
     {
         m_xmlConversionProcessor.Process(resourceDirector);
     }
     catch (Exception e)
     {
         if (m_log.IsErrorEnabled)
         {
             m_log.Error("Error processing DOCX file to XML", e);
         }
         throw;
     }
 }
コード例 #7
0
        public ResourceSessionDirector GetDirectorBySessionId(string sessionId)
        {
            ResourceSessionDirector result;

            lock (m_lock)
            {
                if (m_resourceDirectors.TryGetValue(sessionId, out result))
                {
                    return(result);
                }

                result = new ResourceSessionDirector(sessionId, m_rootFolderPath, m_resourceTypeResolverManager);
                m_resourceDirectors.Add(sessionId, result);
            }

            return(result);
        }
コード例 #8
0
        public bool ProcessSession(string sessionId, string uploadMessage)
        {
            lock (m_lock)
            {
                if (!m_resourceDirectors.ContainsKey(sessionId))
                {
                    return(false);
                }
            }
            ResourceSessionDirector director = GetDirectorBySessionId(sessionId);

            director.SetSessionInfoValue(SessionInfo.Message, uploadMessage);
            director.SetSessionInfoValue(SessionInfo.CreateTime, DateTime.UtcNow);
            bool result = m_resourceProcessorManager.ProcessSessionResources(director);

            FinalizeSession(sessionId);
            return(result);
        }
コード例 #9
0
 private void ProcessXmlConversion(ResourceSessionDirector resourceDirector)
 {
     m_xmlConversionProcessor.Process(resourceDirector);
 }
コード例 #10
0
 private void ProcessRelationalDbStore(ResourceSessionDirector resourceDirector)
 {
     m_relationalDbStoreProcessor.Process(resourceDirector);
 }
コード例 #11
0
 private void ProcessMetaData(ResourceSessionDirector resourceDirector)
 {
     m_metadataProcessor.Process(resourceDirector);
 }
コード例 #12
0
 private void ProcessFileDbStore(ResourceSessionDirector resourceDirector)
 {
     m_fileDbStoreProcessor.Process(resourceDirector);
 }
コード例 #13
0
 private void ProcessExistDbStore(ResourceSessionDirector resourceDirector)
 {
     m_existDbStoreProcessor.Process(resourceDirector);
 }
コード例 #14
0
 private void ProcessExtractableArchive(ResourceSessionDirector resourceDirector)
 {
     m_extractableArchiveProcessor.Process(resourceDirector);
 }
コード例 #15
0
 private void ProcessTransformations(ResourceSessionDirector resourceDirector)
 {
     m_transformationsProcessor.Process(resourceDirector);
 }
コード例 #16
0
 private void GenerateFullBooksResources(ResourceSessionDirector resourceDirector)
 {
     m_audiobookArchiveProcessor.Process(resourceDirector);
 }
コード例 #17
0
        public void AddResource(UploadResourceContract resourceInfoSkeleton)
        {
            ResourceSessionDirector director = GetDirectorBySessionId(resourceInfoSkeleton.SessionId);

            director.AddResourceAndFillResourceTypeByExtension(resourceInfoSkeleton.FileName, resourceInfoSkeleton.Data);
        }
コード例 #18
0
        public void AddResource(string sessionId, string fileName, Stream data)
        {
            ResourceSessionDirector director = m_activeSessionManager.GetDirectorBySessionId(sessionId);

            director.AddResourceAndFillResourceTypeByExtension(fileName, data);
        }