Exemple #1
0
        public void SetupTest()
        {
            string solutionDirectoryPath = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory())));

            _InterfaceDefinitionDirectoryPath = Path.Combine(solutionDirectoryPath, @"_TestData\InterfaceBooster\InterfaceDefinition");
            _InterfaceDefinitionXmlFilePath   = Path.Combine(_InterfaceDefinitionDirectoryPath, "interfaceDefinition.xml");
            _InterfaceDefinitionData          = InterfaceDefinitionDataController.Load(_InterfaceDefinitionXmlFilePath);
        }
Exemple #2
0
        public void Dispose()
        {
            _IsInitialized           = false;
            _InterfaceDefinitionData = null;
            _Broadcaster             = null;
            _SyneryClient            = null;
            EnvironmentVariables     = null;

            if (_SyneryDB != null)
            {
                _SyneryDB.Dispose();
            }
        }
 private void SaveDefintion(string interfaceDefinitionFilePath, InterfaceDefinitionData data)
 {
     using (StreamWriter writer = new StreamWriter(interfaceDefinitionFilePath, false, USED_ENCODING))
     {
         using (XmlWriter xmlWriter = XmlWriter.Create(writer, new XmlWriterSettings()
         {
             Indent = true, NewLineHandling = NewLineHandling.Entitize
         }))
         {
             XmlSerializer s = new XmlSerializer(data.GetType());
             s.Serialize(xmlWriter, data);
         }
     }
 }
        public static void Save(string interfaceDefinitionFilePath, InterfaceDefinitionData definitionData)
        {
            // Validate parameters
            if (interfaceDefinitionFilePath == null)
            {
                throw new ArgumentNullException("interfaceDefinitionFilePath", "The path of the interface definition file is required.");
            }
            if (definitionData == null)
            {
                throw new ArgumentNullException("definitionData", "The Interface Defintion data is required.");
            }

            InterfaceDefinitionDataController controller = new InterfaceDefinitionDataController(interfaceDefinitionFilePath);

            controller.SaveDefintion(interfaceDefinitionFilePath, definitionData);
        }
        private InterfaceDefinitionData LoadDefinition()
        {
            InterfaceDefinitionData data = new InterfaceDefinitionData();

            using (StreamReader reader = new StreamReader(_InterfaceDefinitionFilePath, USED_ENCODING))
            {
                XDocument doc  = XDocument.Load(_InterfaceDefinitionFilePath);
                XElement  root = doc.Element("InterfaceDefinition");

                data.Id      = new Guid(GetRequiredAttributeValue(root, "id"));
                data.Details = LoadDetails(root.Element("Details"));
                data.Jobs    = LoadJobs(root.Element("Jobs"));

                LoadRequiredPlugins(data, root.Element("RequiredPlugins"));
            }

            return(data);
        }
        /// <summary>
        /// Loads the data of an Interface definition.
        /// Can throw exceptions if the loading fails.
        /// </summary>
        /// <param name="interfaceDefinitionFilePath">the path of the XML file</param>
        /// <returns></returns>
        public static InterfaceDefinitionData Load(string interfaceDefinitionFilePath)
        {
            // Validate parameters
            if (interfaceDefinitionFilePath == null)
            {
                throw new ArgumentNullException("interfaceDefinitionFilePath", "The path of the interface definition file is required.");
            }
            if (File.Exists(interfaceDefinitionFilePath) == false)
            {
                throw new ArgumentException(String.Format("No interface definition found at {0}.", interfaceDefinitionFilePath), "interfaceDefinitionFilePath");
            }

            InterfaceDefinitionDataController controller = new InterfaceDefinitionDataController(interfaceDefinitionFilePath);

            InterfaceDefinitionData data = controller.LoadDefinition();

            // store the interface definition root directory path
            data.RootDirectoryPath = Path.GetDirectoryName(interfaceDefinitionFilePath);

            return(data);
        }
 /// <summary>
 /// loads the data of all required plugins and appends them to the given <paramref name="data"/>.
 /// </summary>
 /// <param name="data"></param>
 /// <param name="root"></param>
 private void LoadRequiredPlugins(InterfaceDefinitionData data, XElement root)
 {
     data.RequiredPlugins.ProviderPluginInstances = LoadProviderPluginInstances(root.Element("ProviderPlugins"));
     data.RequiredPlugins.LibraryPlugins          = LoadLibraryPlugins(root.Element("LibraryPlugins"));
 }
Exemple #8
0
        /// <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);
        }
        public void Setup()
        {
            // Prepare the paths of the temporary XML file and the expected XML file
            string solutionDirectoryPath = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory())));

            _XmlFilePath         = Path.Combine(solutionDirectoryPath, @"_TestData\InterfaceBooster\InterfaceDefinition\saveInterfaceDefinition_TestFile.xml");
            _ExpectedXmlFilePath = Path.Combine(solutionDirectoryPath, @"_TestData\InterfaceBooster\InterfaceDefinition\saveInterfaceDefinition_ExpectedContent.xml");

            // Delete the XML file if it already exists
            if (File.Exists(_XmlFilePath))
            {
                File.Delete(_XmlFilePath);
            }

            _InterfaceDefinitionData = new InterfaceDefinitionData();

            // Details

            _InterfaceDefinitionData.Id                             = new Guid("f3b58f84-cbc0-4560-856d-f6c2b2feea5b");
            _InterfaceDefinitionData.Details.Name                   = "PROFFIX CSV Article Import";
            _InterfaceDefinitionData.Details.Description            = "Imports some articles from a comma separated value file to PROFFIX.";
            _InterfaceDefinitionData.Details.Author                 = "Roger Guillet";
            _InterfaceDefinitionData.Details.DateOfCreation         = new DateTime(2014, 2, 7);
            _InterfaceDefinitionData.Details.DateOfLastChange       = new DateTime(2014, 2, 26);
            _InterfaceDefinitionData.Details.Version                = new Version(1, 0, 0, 1);
            _InterfaceDefinitionData.Details.RequiredRuntimeVersion = new Version(1, 0, 0, 0);

            // Provider Plugins

            _InterfaceDefinitionData.RequiredPlugins.ProviderPluginInstances.Add(new ProviderPluginInstanceReference()
            {
                SyneryIdentifier   = "PROFFIX",
                IdPlugin           = new Guid("485eccb4-3920-4dc3-9ed4-27f65e8b3c91"),
                PluginName         = "PROFFIX Database",
                IdPluginInstance   = new Guid("b139306d-a688-43ae-a9dd-4e692fc2caea"),
                PluginInstanceName = "4.0.0000.0001",
            });

            _InterfaceDefinitionData.RequiredPlugins.ProviderPluginInstances.Add(new ProviderPluginInstanceReference()
            {
                SyneryIdentifier   = "CSV",
                IdPlugin           = new Guid("66CE1D53-14B3-420E-949F-EB94A3D69072"),
                PluginName         = "CSV Provider Plugin",
                IdPluginInstance   = new Guid("F897A501-60D9-4AE5-B214-920F450E9323"),
                PluginInstanceName = "CSV Version 1.0",
            });

            // Library Plugins

            _InterfaceDefinitionData.RequiredPlugins.LibraryPlugins.Add(new LibraryPluginReference()
            {
                SyneryIdentifier = "String",
                IdPlugin         = new Guid("74A8005D-C9F3-455F-94FC-04846493AB7B"),
                PluginName       = "String Helpers",
            });

            // Jobs

            var job1 = new InterfaceDefinitionJobData()
            {
                Id          = new Guid("79f8ca0f-c785-4f35-810e-835bc216f6b6"),
                Name        = "Run CSV Import",
                Description = "Executes the import of some articles to PROFFIX.",
                EstimatedDurationRemarks = "This import will only take a few seconds",
            };

            job1.IncludeFiles.Add(new IncludeFile()
            {
                Alias = "h", RelativePath = "helperFunctions.syn"
            });

            var job2 = new InterfaceDefinitionJobData()
            {
                Id          = new Guid("2D74CCFB-B1B3-4625-8763-99CFEB077207"),
                Name        = "Check for doublets",
                Description = "Executes a check for some doublets in PROFFIX.",
                EstimatedDurationRemarks = "This check will only take a few seconds",
            };

            job2.IncludeFiles.Add(new IncludeFile()
            {
                Alias = "h", RelativePath = "helperFunctions.syn"
            });
            job2.IncludeFiles.Add(new IncludeFile()
            {
                Alias = "px_con", RelativePath = "proffixConnection.syn"
            });

            _InterfaceDefinitionData.Jobs.Add(job1);
            _InterfaceDefinitionData.Jobs.Add(job2);
        }