/// <summary> /// Creates task creating model classes from database specified in connection string in configuration. /// </summary> /// <returns>Task ready to start.</returns> public static Task <ModelCreator.ResultInformation> GetModelCreatorTask() { // This is because UnityEngine methods can be only called from main thread var powerShellPath = Configuration.PowerShellPath(false); var databaseProvider = Configuration.DatabaseProvider(false); var connectionString = Configuration.ConnectionString(false); var pathToModelDirectory = $@"{Application.dataPath}/Model"; return(new Task <ModelCreator.ResultInformation>(() => { var modelCreator = new ModelCreator(powerShellPath); modelCreator.OutputReceived += OnModelCreatorOutput; var result = modelCreator.Create(databaseProvider, connectionString); if (result.ExitStatus == ExitStatus.ExitSuccess) { ReplaceConnectionStringInModelClasses(connectionString, pathToModelDirectory); } return result; })); }
public void Create_ResultProperties_To_Model() { var path = "test path"; var properties = new EntryAttributeDictionary( new Dictionary <string, Core.Proxies.AttributeValueList>() { { "dn", new string[] { "ou=some, ou=dn" } }, { "cn", new string[] { "example" } }, { "objectclass", new string[] { "testuser" } }, { "objectsid", new Core.Proxies.AttributeValueList(new List <object> { new byte[] { 0x31, 0x41 } }) }, { "userprincipalname", new string[] { "testuser" } }, { "samaccountname", new string[] { "testuser" } }, { "mail", new string[] { "*****@*****.**" } }, { "alt-mails", new string[] { "*****@*****.**", "*****@*****.**", "*****@*****.**" } } } ); var b = Creator.Create <MyTestModel>(properties, path); Assert.Equal(properties, b.Attributes); Assert.Equal(path, b.DistinguishedName); }
private static int Main(string[] args) { var customCulture = (System.Globalization.CultureInfo)Thread.CurrentThread.CurrentCulture.Clone(); customCulture.NumberFormat.NumberDecimalSeparator = "."; Thread.CurrentThread.CurrentCulture = customCulture; if (args.Length != 9) { DisplayUsage(); Console.ReadKey(); return(-1); } try { PrepareParameters(args); PrintParameters(args); if (DatabaseUtils.CheckIfExists(args)) { Console.WriteLine("Experiment already exists in database!"); return(0); } var sw = new Stopwatch(); sw.Start(); Console.WriteLine("----- Generating data ------"); var dataGenerator = new DataGenerator(); dataGenerator.GenerateTrainingData(); dataGenerator.GenerateTestData(); Console.WriteLine("----- Classification data ------"); var dataClassificator = new C45BinaryClassificator(dataGenerator.TrainingData.ToArray()); dataClassificator.Learn(); Console.WriteLine("----- Creating model ------"); var modelCreator = new ModelCreator(dataClassificator.OutputPath); modelCreator.Create(); sw.Stop(); Console.WriteLine("----- Calculating statistics ------"); // Calculating jaccard index for training data var statistics = new StatisticsCalculator(); statistics.CalculateStatistics(dataClassificator.DecisionTree, modelCreator.UniqueConstraints, dataGenerator); // Saving data to database DatabaseUtils.SaveToDatabase(dataClassificator, modelCreator, statistics, dataGenerator, sw.ElapsedMilliseconds); } catch (ArgumentException ex) { Console.WriteLine(ex.Message); DatabaseUtils.SaveErrorToDatabase(ex.Message); return(-1); } catch (FormatException) { const string message = "Error parsing input parameters"; DatabaseUtils.SaveErrorToDatabase(message); Console.WriteLine(message); return(-1); } return(0); }