Ejemplo n.º 1
0
        private static int Run(CmdOptions opts)
        {
            var prescriptionPath = DatasetGeneratorPrescriptionPath(opts);

            if (!File.Exists(prescriptionPath))
            {
                Console.WriteLine($"Dataset generator prescription file {prescriptionPath} does not exist.");
                return(1);
            }

            var prescription = JsonConvert.DeserializeObject <Prescription>(
                File.ReadAllText(prescriptionPath),
                new JsonSerializerSettings()
            {
                DefaultValueHandling = DefaultValueHandling.Populate
            });

            var datasetsPath = Program.DatasetsPath(opts);

            if (!Directory.Exists(datasetsPath))
            {
                Directory.CreateDirectory(datasetsPath);
            }

            var  allDatasetGeneratorTypes = GetDatasetGeneratorTypes();
            Type datasetGeneratorType;

            if (allDatasetGeneratorTypes.TryGetValue(prescription.DatasetGeneratorName, out datasetGeneratorType) == false)
            {
                Console.WriteLine($"Dataset generator {prescription.DatasetGeneratorName} does not exist.");
                return(1);
            }

            var datasetGenerator = (IDatasetGenerator)Activator.CreateInstance(datasetGeneratorType);

            var datasetName = Path.GetFileNameWithoutExtension(opts.PrescriptionFile);
            var datasetPath = Program.DatasetPath(opts, datasetName);

            if (Directory.Exists(datasetPath))
            {
                Directory.Delete(datasetPath, true);
            }

            Directory.CreateDirectory(datasetPath);

            var instanceWriter = new JsonInputWriter();
            var instanceIndex  = 0;

            foreach (var instance in datasetGenerator.GenerateInstances(prescription, prescriptionPath))
            {
                var instanceChecker = new InstanceChecker();
                var instanceStatus  = instanceChecker.Check(instance);
                if (instanceStatus != InstanceChecker.InstanceStatus.Ok)
                {
                    Console.WriteLine($"Instance check: {instanceStatus}");
                    return(1);
                }

                instance.TimeForExtendedInstance = TimeForExtendedInstance(instance);

                instanceWriter.WriteToPath(
                    instance,
                    Path.Combine(datasetPath, $"{instanceIndex}.json"));
                instanceIndex++;
            }

            Console.WriteLine($"Dataset {opts.PrescriptionFile} generated.");

            return(0);
        }
Ejemplo n.º 2
0
 public static string DatasetGeneratorPrescriptionPath(CmdOptions opts)
 {
     return(Path.Combine(Program.DatasetGeneratorsPrescriptionPath(opts), opts.PrescriptionFile));
 }
Ejemplo n.º 3
0
 public static string DatasetGeneratorsPrescriptionPath(CmdOptions opts)
 {
     return(Path.Combine(opts.DataRootPath, "dataset-generators-prescriptions"));
 }
Ejemplo n.º 4
0
 public static string DatasetPath(CmdOptions opts, string datasetName)
 {
     return(Path.Combine(Program.DatasetsPath(opts), datasetName));
 }
Ejemplo n.º 5
0
 public static string DatasetsPath(CmdOptions opts)
 {
     return(Path.Combine(opts.DataRootPath, "datasets"));
 }