Esempio n. 1
0
        /// <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;
            }));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }