using System.Configuration; using System.IO; using System.Xml; namespace BeWoFileExporter { public static class Utils { public static string GetFileRootDirectoryPath() { var fileRootDirectoryPath = new AppSettingsReader().GetValue("FileRootDirectory", typeof(string)).ToString(); return fileRootDirectoryPath; } public static string GetMultitenancyDirectoryPath() { var multitenancyDirectoryPath = new AppSettingsReader().GetValue("MultitenancyDirectory", typeof(string)).ToString(); if(!Directory.Exists(multitenancyDirectoryPath)) { Directory.CreateDirectory(multitenancyDirectoryPath); } return multitenancyDirectoryPath; } public static void CheckForFileRootDirectory(string tenant, string fileRootDirectoryPath) { var tenantPath = Path.Combine(GetFileRootDirectoryPath(), tenant); if(!Directory.Exists(fileRootDirectoryPath)) { Directory.CreateDirectory(fileRootDirectoryPath); } if(!Directory.Exists(tenantPath)) { Directory.CreateDirectory(tenantPath); } } public static string GetFilePath(string tenant, string oid) { var rootDirectory = GetFileRootDirectoryPath(); return Path.Combine(rootDirectory, Path.Combine(tenant, oid)); } public static string GetConnectionStringValue(string variableName, string connectionString) { if(connectionString != null && connectionString.Contains(";")) { var split = connectionString.Split(';'); foreach(var keyValuePairString in split) { var keyToValue = keyValuePairString.Split('='); if(keyToValue.Length == 2 && keyToValue[0].Trim() == variableName) { return keyToValue[1]; } } } return null; } public static string GetConnectionStringFromConfigFile(string pathToConfigFile) { var xmlDocument = new XmlDocument(); xmlDocument.Load(pathToConfigFile); var configuration = xmlDocument.ChildNodes.Item(1); if(configuration?.Name == "configuration") { var hibernateConfiguration = configuration.ChildNodes.Item(1); if(hibernateConfiguration?.Name == "hibernate-configuration") { var sessionFactory = hibernateConfiguration.ChildNodes.Item(0); if(sessionFactory?.Name == "session-factory") { var properties = sessionFactory.ChildNodes; foreach(XmlNode property in properties) { if(property?.Attributes?["name"]?.Value == "connection.connection_string") { return property.InnerText; } } } } } return null; } } }