public void SetupTest() { string solutionDirectoryPath = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory()))); string pluginMainDirectoryPath = Path.Combine(solutionDirectoryPath, @"_TestData\InterfaceBooster\ProviderPluginDirectory"); ProviderPluginInstanceReference simpleDummyReference = new ProviderPluginInstanceReference(); simpleDummyReference.SyneryIdentifier = "DummyOne"; simpleDummyReference.IdPlugin = new Guid("485eccb4-3920-4dc3-9ed4-27f65e8b3c91"); simpleDummyReference.PluginName = "ReferencePluginName"; simpleDummyReference.IdPluginInstance = new Guid("58e6a1b5-9eb5-45ab-8c9b-8b267e2d09e8"); simpleDummyReference.PluginInstanceName = "ReferencePluginInstanceName"; // activate provider plugin instance IProviderPluginManager providerPluginManager = new ProviderPluginManager(pluginMainDirectoryPath); providerPluginManager.Activate(simpleDummyReference); _SyneryMemory = new SyneryMemory(null, new DefaultBroadcaster(), providerPluginManager, null); _Client = new ConnectTaskDeclarationInterpretationClient(_SyneryMemory); _Code = @" CONNECT ""DummyOne"" AS \\Connections\DummyConnection SET ( Database.Connection.Server = ""Testserver"", Database.Connection.Database = ""TestDb"", Database.Connection.User = ""TestUser"", Database.Connection.Password = ""TestPassword"", Proffix.Tables.ShowAdditionalTables = TRUE, Proffix.Tables.ShowSystemTables = TRUE ) END "; }
/// <summary> /// Initialize the interface definition, the database, the plugin managers, the SyneryMemory and the SyneryInterpreter /// This method must be called before running a job. /// </summary> /// <param name="environmentVariables">At least Broadcaster and InterfaceDefinitionDirectoryPath are required!</param> /// <returns>true = success / false = error (see broadcasted messages for details)</returns> public bool Initialize(ExecutionVariables environmentVariables) { IProviderPluginManager providerPluginManager; ILibraryPluginManager libraryPluginManager; EnvironmentVariables = environmentVariables; // check required environment variables if (EnvironmentVariables == null) { throw new ArgumentNullException("runtimeEnvironment", "The EnvironmentVariables are required."); } if (EnvironmentVariables.Broadcaster == null) { throw new ArgumentNullException("A Broadcaster is required"); } if (EnvironmentVariables.InterfaceDefinitionDirectoryPath == null) { throw new ArgumentNullException("The InterfaceDefinitionDirectoryPath is required"); } // set defaults if no values given if (EnvironmentVariables.InterfaceDefinitionCodeDirectoryPath == null) { EnvironmentVariables.InterfaceDefinitionCodeDirectoryPath = Path.Combine(EnvironmentVariables.InterfaceDefinitionDirectoryPath, DEFAULT_SYNERY_CODE_DIRECTORY_RELATIVE_PATH); } if (EnvironmentVariables.DatabaseDirectoryPath == null) { EnvironmentVariables.DatabaseDirectoryPath = Path.Combine(EnvironmentVariables.InterfaceDefinitionDirectoryPath, DEFAULT_SYNERY_DATABASE_DIRECTORY_RELATIVE_PATH); } if (EnvironmentVariables.FilesystemDirectoryPath == null) { EnvironmentVariables.FilesystemDirectoryPath = Path.Combine(EnvironmentVariables.InterfaceDefinitionDirectoryPath, DEFAULT_FILESYSTEM_DIRECTORY_RELATIVE_PATH); } if (EnvironmentVariables.ProviderPluginDirectoryPath == null) { EnvironmentVariables.ProviderPluginDirectoryPath = Path.Combine(EnvironmentVariables.InterfaceDefinitionDirectoryPath, DEFAULT_PROVIDER_PLUGINS_DIRECTORY_RELATIVE_PATH); } if (EnvironmentVariables.LibraryPluginDirectoryPath == null) { EnvironmentVariables.LibraryPluginDirectoryPath = Path.Combine(EnvironmentVariables.InterfaceDefinitionDirectoryPath, DEFAULT_LIBRARY_PLUGINS_DIRECTORY_RELATIVE_PATH); } // create a local reference _Broadcaster = EnvironmentVariables.Broadcaster; // initialize the interface definition try { string interfaceDefinitionFilePath = Path.Combine(EnvironmentVariables.InterfaceDefinitionDirectoryPath, INTERFACE_DEFINITION_XML_FILENAME); _InterfaceDefinitionData = InterfaceDefinitionDataController.Load(interfaceDefinitionFilePath); } catch (Exception ex) { _Broadcaster.Error(ex); return(false); } _Broadcaster.Info("Interface definition data successfully loaded."); // initialize the Synery Database try { if (Directory.Exists(EnvironmentVariables.DatabaseDirectoryPath) == false) { Directory.CreateDirectory(EnvironmentVariables.DatabaseDirectoryPath); } _SyneryDB = new SyneryDB(EnvironmentVariables.DatabaseDirectoryPath); } catch (SyneryDBException ex) { _Broadcaster.Error(ex, "SyneryDB"); return(false); } catch (Exception ex) { _Broadcaster.Error(ex); return(false); } // initialize the ProviderPluginManager try { providerPluginManager = new ProviderPluginManager(EnvironmentVariables.ProviderPluginDirectoryPath); // activate the provider plugin instance references from the interface definition providerPluginManager.Activate(_InterfaceDefinitionData.RequiredPlugins.ProviderPluginInstances); } catch (ProviderPluginManagerException ex) { _Broadcaster.Error(ex, "ProviderPluginManager"); return(false); } catch (Exception ex) { _Broadcaster.Error(ex); return(false); } // initialize the LibraryPluginManager try { libraryPluginManager = new LibraryPluginManager(EnvironmentVariables.LibraryPluginDirectoryPath); // activate the provider plugin instance references from the interface definition libraryPluginManager.Activate(_InterfaceDefinitionData.RequiredPlugins.LibraryPlugins); } catch (LibraryPluginManagerException ex) { _Broadcaster.Error(ex, "LibraryPluginManager"); return(false); } catch (Exception ex) { _Broadcaster.Error(ex); return(false); } // initialize the SyneryMemory _SyneryMemory = new SyneryMemory(_SyneryDB, _Broadcaster, providerPluginManager, libraryPluginManager); // initialize the SyneryInterpreter _SyneryClient = new InterpretationClient(_SyneryMemory); // success _IsInitialized = true; return(true); }