Beispiel #1
0
        /// <summary> Build the modules for the non-folder specific builder modules </summary>
        /// <param name="InstanceName"> Name of the current instance, which tells where the plug-in assemblies may be located </param>
        /// <returns> Either null, or a list of errors encountered </returns>
        public List <string> Builder_Modules_From_Settings(string InstanceName)
        {
            // Build the return value
            List <string> errors = new List <string>();
            string        errorMessage;

            // Clear existing modules
            preProcessModules.Clear();
            processItemModules.Clear();
            deleteItemModules.Clear();
            postProcessModules.Clear();
            allFolderModules.Clear();
            AssemblyClassToModule.Clear();

            // Create all the pre-process modules
            foreach (Builder_Module_Setting preSetting in settings.PreProcessModulesSettings)
            {
                // Look for the standard
                if (String.IsNullOrEmpty(preSetting.Assembly))
                {
                    switch (preSetting.Class)
                    {
                    case "SobekCM.Builder_Library.Modules.PreProcess.ProcessPendingFdaReportsModule":
                        iPreProcessModule thisModule = new ProcessPendingFdaReportsModule();
                        if ((!String.IsNullOrEmpty(preSetting.Argument1)) || (!String.IsNullOrEmpty(preSetting.Argument2)) || (!String.IsNullOrEmpty(preSetting.Argument3)))
                        {
                            if (thisModule.Arguments == null)
                            {
                                thisModule.Arguments = new List <string>();
                            }
                            thisModule.Arguments.Add(String.IsNullOrEmpty(preSetting.Argument1) ? String.Empty : preSetting.Argument1);
                            thisModule.Arguments.Add(String.IsNullOrEmpty(preSetting.Argument2) ? String.Empty : preSetting.Argument2);
                            thisModule.Arguments.Add(String.IsNullOrEmpty(preSetting.Argument3) ? String.Empty : preSetting.Argument3);
                        }
                        preProcessModules.Add(thisModule);
                        continue;
                    }
                }

                object preAsObj = Get_Module(preSetting, InstanceName, out errorMessage);
                if ((preAsObj == null) && (errorMessage.Length > 0))
                {
                    errors.Add(errorMessage);
                }
                else
                {
                    iPreProcessModule preAsPre = preAsObj as iPreProcessModule;
                    if (preAsPre == null)
                    {
                        errors.Add(preSetting.Class + " loaded from assembly but does not implement the IPreProcessModules interface!");
                    }
                    else
                    {
                        if ((!String.IsNullOrEmpty(preSetting.Argument1)) || (!String.IsNullOrEmpty(preSetting.Argument2)) || (!String.IsNullOrEmpty(preSetting.Argument3)))
                        {
                            if (preAsPre.Arguments == null)
                            {
                                preAsPre.Arguments = new List <string>();
                            }
                            preAsPre.Arguments.Add(String.IsNullOrEmpty(preSetting.Argument1) ? String.Empty : preSetting.Argument1);
                            preAsPre.Arguments.Add(String.IsNullOrEmpty(preSetting.Argument2) ? String.Empty : preSetting.Argument2);
                            preAsPre.Arguments.Add(String.IsNullOrEmpty(preSetting.Argument3) ? String.Empty : preSetting.Argument3);
                        }

                        preProcessModules.Add(preAsPre);
                    }
                }
            }

            // Create all the post-process modules
            foreach (Builder_Module_Setting postSetting in settings.PostProcessModulesSettings)
            {
                // Look for the standard
                if (String.IsNullOrEmpty(postSetting.Assembly))
                {
                    switch (postSetting.Class)
                    {
                    case "SobekCM.Builder_Library.Modules.PostProcess.BuildAggregationBrowsesModule":
                        iPostProcessModule thisModule = new BuildAggregationBrowsesModule();
                        if ((!String.IsNullOrEmpty(postSetting.Argument1)) || (!String.IsNullOrEmpty(postSetting.Argument2)) || (!String.IsNullOrEmpty(postSetting.Argument3)))
                        {
                            if (thisModule.Arguments == null)
                            {
                                thisModule.Arguments = new List <string>();
                            }
                            thisModule.Arguments.Add(String.IsNullOrEmpty(postSetting.Argument1) ? String.Empty : postSetting.Argument1);
                            thisModule.Arguments.Add(String.IsNullOrEmpty(postSetting.Argument2) ? String.Empty : postSetting.Argument2);
                            thisModule.Arguments.Add(String.IsNullOrEmpty(postSetting.Argument3) ? String.Empty : postSetting.Argument3);
                        }
                        postProcessModules.Add(thisModule);
                        continue;
                    }
                }

                object postAsObj = Get_Module(postSetting, InstanceName, out errorMessage);
                if ((postAsObj == null) && (errorMessage.Length > 0))
                {
                    errors.Add(errorMessage);
                }
                else
                {
                    iPostProcessModule postAsPost = postAsObj as iPostProcessModule;
                    if (postAsPost == null)
                    {
                        errors.Add(postSetting.Class + " loaded from assembly but does not implement the IPostProcessModules interface!");
                    }
                    else
                    {
                        if ((!String.IsNullOrEmpty(postSetting.Argument1)) || (!String.IsNullOrEmpty(postSetting.Argument2)) || (!String.IsNullOrEmpty(postSetting.Argument3)))
                        {
                            if (postAsPost.Arguments == null)
                            {
                                postAsPost.Arguments = new List <string>();
                            }
                            postAsPost.Arguments.Add(String.IsNullOrEmpty(postSetting.Argument1) ? String.Empty : postSetting.Argument1);
                            postAsPost.Arguments.Add(String.IsNullOrEmpty(postSetting.Argument2) ? String.Empty : postSetting.Argument2);
                            postAsPost.Arguments.Add(String.IsNullOrEmpty(postSetting.Argument3) ? String.Empty : postSetting.Argument3);
                        }

                        postProcessModules.Add(postAsPost);
                    }
                }
            }

            // Create all the item processing modules (for new or updated item)
            foreach (Builder_Module_Setting itemSetting in settings.ItemProcessModulesSettings)
            {
                iSubmissionPackageModule itemModule = Get_Submission_Module(itemSetting, InstanceName, out errorMessage);
                if ((itemModule == null) && (!String.IsNullOrEmpty(errorMessage)))
                {
                    errors.Add(errorMessage);
                }
                else
                {
                    processItemModules.Add(itemModule);
                }
            }

            // Create all the item processing modules (for deleting items)
            foreach (Builder_Module_Setting itemSetting in settings.ItemDeleteModulesSettings)
            {
                iSubmissionPackageModule itemModule = Get_Submission_Module(itemSetting, InstanceName, out errorMessage);
                if ((itemModule == null) && (!String.IsNullOrEmpty(errorMessage)))
                {
                    errors.Add(errorMessage);
                }
                else
                {
                    deleteItemModules.Add(itemModule);
                }
            }

            // Create the folder modules - look at every folder
            foreach (Builder_Source_Folder thisFolder in settings.IncomingFolders)
            {
                // If not linked to a module set, do nothing
                if (thisFolder.Builder_Module_Set == null)
                {
                    errors.Add("Folder has no module set, so no processing will occur ( " + thisFolder.Folder_Name + " )");
                    continue;
                }

                // Step through all the folder builer modules and if it hasn't been built yet, do so now
                foreach (Builder_Module_Setting folderSetting in thisFolder.Builder_Module_Set.Builder_Modules)
                {
                    string        key        = folderSetting.Key;
                    iFolderModule thisModule = null;

                    //// For testing purposes
                    //if ((folderSetting.Assembly == "WolfsonianBuilderModule.dll") || (folderSetting.Assembly == "WolfsonianBuilderModule"))
                    //{
                    //    folderSetting.Assembly = null;
                    //    thisModule = new WolfsonianBuilderModule.WolfsonianObjectProcessorModule();
                    //}

                    // Does this already exist?
                    if (!AssemblyClassToModule.ContainsKey(key))
                    {
                        // Look for the standard options
                        if (String.IsNullOrEmpty(folderSetting.Assembly))
                        {
                            switch (folderSetting.Class)
                            {
                            case "SobekCM.Builder_Library.Modules.Folders.MoveAgedPackagesToProcessModule":
                                thisModule = new MoveAgedPackagesToProcessModule();
                                break;

                            case "SobekCM.Builder_Library.Modules.Folders.ApplyBibIdRestrictionModule":
                                thisModule = new ApplyBibIdRestrictionModule();
                                break;

                            case "SobekCM.Builder_Library.Modules.Folders.ValidateAndClassifyModule":
                                thisModule = new ValidateAndClassifyModule();
                                break;

                            case "SobekCM.Builder_Library.Modules.Folders.UpdateNonBibFolders":
                                thisModule = new UpdateNonBibFolders();
                                break;
                            }

                            if (thisModule != null)
                            {
                                if ((!String.IsNullOrEmpty(folderSetting.Argument1)) || (!String.IsNullOrEmpty(folderSetting.Argument2)) || (!String.IsNullOrEmpty(folderSetting.Argument3)))
                                {
                                    if (thisModule.Arguments == null)
                                    {
                                        thisModule.Arguments = new List <string>();
                                    }
                                    thisModule.Arguments.Add(String.IsNullOrEmpty(folderSetting.Argument1) ? String.Empty : folderSetting.Argument1);
                                    thisModule.Arguments.Add(String.IsNullOrEmpty(folderSetting.Argument2) ? String.Empty : folderSetting.Argument2);
                                    thisModule.Arguments.Add(String.IsNullOrEmpty(folderSetting.Argument3) ? String.Empty : folderSetting.Argument3);
                                }
                                allFolderModules.Add(thisModule);
                                AssemblyClassToModule[folderSetting.Key] = thisModule;
                                continue;
                            }
                        }

                        object folderAsObj = Get_Module(folderSetting, InstanceName, out errorMessage);
                        if ((folderAsObj == null) && (errorMessage.Length > 0))
                        {
                            errors.Add(errorMessage);
                        }
                        else
                        {
                            iFolderModule folderAsFolder = folderAsObj as iFolderModule;
                            if (folderAsFolder == null)
                            {
                                errors.Add(folderSetting.Class + " loaded from assembly but does not implement the IFolderModule interface!");
                            }
                            else
                            {
                                if ((!String.IsNullOrEmpty(folderSetting.Argument1)) || (!String.IsNullOrEmpty(folderSetting.Argument2)) || (!String.IsNullOrEmpty(folderSetting.Argument3)))
                                {
                                    if (folderAsFolder.Arguments == null)
                                    {
                                        folderAsFolder.Arguments = new List <string>();
                                    }
                                    folderAsFolder.Arguments.Add(String.IsNullOrEmpty(folderSetting.Argument1) ? String.Empty : folderSetting.Argument1);
                                    folderAsFolder.Arguments.Add(String.IsNullOrEmpty(folderSetting.Argument2) ? String.Empty : folderSetting.Argument2);
                                    folderAsFolder.Arguments.Add(String.IsNullOrEmpty(folderSetting.Argument3) ? String.Empty : folderSetting.Argument3);
                                }

                                allFolderModules.Add(folderAsFolder);
                                AssemblyClassToModule[folderSetting.Key] = folderAsFolder;
                            }
                        }
                    }
                }
            }


            return(errors);
        }
Beispiel #2
0
        private iSubmissionPackageModule Get_Submission_Module(Builder_Module_Setting ItemSetting, string InstanceName, out string ErrorMessage)
        {
            ErrorMessage = String.Empty;

            // Look for the standard
            if (String.IsNullOrEmpty(ItemSetting.Assembly))
            {
                iSubmissionPackageModule thisModule = null;
                switch (ItemSetting.Class)
                {
                case "SobekCM.Builder_Library.Modules.Items.ConvertOfficeFilesToPdfModule":
                    thisModule = new ConvertOfficeFilesToPdfModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.ExtractTextFromPdfModule":
                    thisModule = new ExtractTextFromPdfModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.CreatePdfThumbnailModule":
                    thisModule = new CreatePdfThumbnailModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.ExtractTextFromHtmlModule":
                    thisModule = new ExtractTextFromHtmlModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.ExtractTextFromXmlModule":
                    thisModule = new ExtractTextFromXmlModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.OcrTiffsModule":
                    thisModule = new OcrTiffsModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.CleanDirtyOcrModule":
                    thisModule = new CleanDirtyOcrModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.CheckForSsnModule":
                    thisModule = new CheckForSsnModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.CreateImageDerivativesModule":
                    thisModule = new CreateImageDerivativesModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.CreateImageDerivativesLegacyModule":
                    thisModule = new CreateImageDerivativesLegacyModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.CopyToArchiveFolderModule":
                    thisModule = new CopyToArchiveFolderModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.MoveFilesToImageServerModule":
                    thisModule = new MoveFilesToImageServerModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.ReloadMetsAndBasicDbInfoModule":
                    thisModule = new ReloadMetsAndBasicDbInfoModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.UpdateJpegAttributesModule":
                    thisModule = new UpdateJpegAttributesModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.AttachAllNonImageFilesModule":
                    thisModule = new AttachAllNonImageFilesModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.AddNewImagesAndViewsModule":
                    thisModule = new AddNewImagesAndViewsModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.AttachImagesAllModule":
                    thisModule = new AttachImagesAllModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.EnsureMainThumbnailModule":
                    thisModule = new EnsureMainThumbnailModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.GetPageCountFromPdfModule":
                    thisModule = new GetPageCountFromPdfModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.UpdateWebConfigModule":
                    thisModule = new UpdateWebConfigModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.SaveServiceMetsModule":
                    thisModule = new SaveServiceMetsModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.SaveMarcXmlModule":
                    thisModule = new SaveMarcXmlModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.SaveToDatabaseModule":
                    thisModule = new SaveToDatabaseModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.SaveToSolrLuceneModule":
                    thisModule = new SaveToSolrLuceneModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.CleanWebResourceFolderModule":
                    thisModule = new CleanWebResourceFolderModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.CreateStaticVersionModule":
                    thisModule = new CreateStaticVersionModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.AddTrackingWorkflowModule":
                    thisModule = new AddTrackingWorkflowModule();
                    break;

                case "SobekCM.Builder_Library.Modules.Items.DeleteItemModule":
                    thisModule = new DeleteItemModule();
                    break;
                }

                if (thisModule != null)
                {
                    if ((!String.IsNullOrEmpty(ItemSetting.Argument1)) || (!String.IsNullOrEmpty(ItemSetting.Argument2)) || (!String.IsNullOrEmpty(ItemSetting.Argument3)))
                    {
                        if (thisModule.Arguments == null)
                        {
                            thisModule.Arguments = new List <string>();
                        }
                        thisModule.Arguments.Add(String.IsNullOrEmpty(ItemSetting.Argument1) ? String.Empty : ItemSetting.Argument1);
                        thisModule.Arguments.Add(String.IsNullOrEmpty(ItemSetting.Argument2) ? String.Empty : ItemSetting.Argument2);
                        thisModule.Arguments.Add(String.IsNullOrEmpty(ItemSetting.Argument3) ? String.Empty : ItemSetting.Argument3);
                    }
                    return(thisModule);
                }
            }

            object itemAsObj = Get_Module(ItemSetting, InstanceName, out ErrorMessage);

            if ((itemAsObj == null) && (ErrorMessage.Length > 0))
            {
                return(null);
            }

            iSubmissionPackageModule itemAsItem = itemAsObj as iSubmissionPackageModule;

            if (itemAsItem == null)
            {
                ErrorMessage = ItemSetting.Class + " loaded from assembly but does not implement the ISubmissionPackageModules interface!";
                return(null);
            }

            if ((!String.IsNullOrEmpty(ItemSetting.Argument1)) || (!String.IsNullOrEmpty(ItemSetting.Argument2)) || (!String.IsNullOrEmpty(ItemSetting.Argument3)))
            {
                if (itemAsItem.Arguments == null)
                {
                    itemAsItem.Arguments = new List <string>();
                }
                itemAsItem.Arguments.Add(String.IsNullOrEmpty(ItemSetting.Argument1) ? String.Empty : ItemSetting.Argument1);
                itemAsItem.Arguments.Add(String.IsNullOrEmpty(ItemSetting.Argument2) ? String.Empty : ItemSetting.Argument2);
                itemAsItem.Arguments.Add(String.IsNullOrEmpty(ItemSetting.Argument3) ? String.Empty : ItemSetting.Argument3);
            }

            return(itemAsItem);
        }