Exemplo n.º 1
0
 public FilesReadingParametersViewModel()
 {
     filesReadingParameters = new FilesReadingParameters();
     //InputFilesPath = "E:\\Alejandra\\Documents\\Proyectos\\DHOG\\Pruebas\\20170920";
     ScenarioFolderName       = "BD-Caso_";
     InitialScenarioToCreate  = 1;
     InitialPeriodDB          = 1;
     InflowsReferenceYear     = 1999;
     ReadEcuadorLoad          = true;
     ControlScenariosCreation = false;
     RiverRangesToOmit        = new ObservableCollection <RiversRangeViewModel>()
     {
         new RiversRangeViewModel(300, 500)
     };
 }
Exemplo n.º 2
0
 public AccessDBWriter(FilesReadingParameters filesReadingParameters)
 {
     this.filesReadingParameters = filesReadingParameters;
 }
Exemplo n.º 3
0
        private void ImportSDDPFiles(object sender, DoWorkEventArgs e)
        {
            isImporting = true;
            filesReadingParametersViewModel.SetRiversToOmit();
            FilesReadingParameters filesReadingParameters = filesReadingParametersViewModel.GetDataObject();

            try
            {
                InputFilesReader inputFilesReader = new InputFilesReader(filesReadingParameters);
                filesReadingParametersViewModel.ProgressValue = 0;
                filesReadingParametersViewModel.BusyContent   = MessageUtil.FormatMessage("INFO.FilesReadingParametersLoaded");
                filesReadingParametersViewModel.ProgressValue = 2;

                AccessDBReader accessDBReader = new AccessDBReader();
                AccessDBWriter accessDBWriter = new AccessDBWriter(filesReadingParameters);

                int lastCaseNumber = 1;
                if (filesReadingParameters.CreateScenario)
                {
                    lastCaseNumber = GetLastCaseNumber(filesReadingParameters.ScenarioFolderName);
                }

                String       fileName;
                List <Block> loadBlocks    = null;
                double       progressStep  = 98.0 / (lastCaseNumber * 10);
                double       progressValue = 2 + progressStep;
                for (int caseNumber = 1; caseNumber <= lastCaseNumber; caseNumber++)
                {
                    string scenarioInputPath;
                    if (filesReadingParameters.CreateScenario)
                    {
                        scenarioInputPath = filesReadingParameters.ScenarioFolderName + caseNumber + "\\";
                        filesReadingParameters.InputFilesPath = scenarioInputPath;
                        inputFilesReader = new InputFilesReader(filesReadingParameters);
                    }

                    if (caseNumber == 1)
                    {
                        if (filesReadingParameters.Model.Equals(Model.Middle))
                        {
                            fileName = "dese05co.dat";
                        }
                        else
                        {
                            fileName = "deme05co.dat";
                        }

                        loadBlocks = inputFilesReader.ReadLoadBlocks(fileName);
                        if (loadBlocks != null)
                        {
                            accessDBWriter.WriteLoadBlocks(loadBlocks);
                            filesReadingParametersViewModel.BusyContent = MessageUtil.FormatMessage("INFO.FilesReadingParametersLoaded");
                        }
                    }

                    int    scenario  = -1;
                    string caseTitle = "";
                    if (filesReadingParameters.CreateScenario)
                    {
                        filesReadingParametersViewModel.BusyContent = MessageUtil.FormatMessage("INFO.LoadingCase", caseNumber);
                        caseTitle = MessageUtil.FormatMessage("INFO.CaseTitle", caseNumber);
                    }

                    if (!filesReadingParameters.CreateScenario)
                    {
                        scenario = -1;
                    }
                    else if (filesReadingParameters.AutomaticScenarioCreation)
                    {
                        scenario = -1;
                    }
                    else if (filesReadingParameters.InitialScenarioToCreate != -1)
                    {
                        scenario = filesReadingParameters.InitialScenarioToCreate + caseNumber - 1;
                    }
                    else if (filesReadingParameters.InitialScenarioToCreate == -1 && !filesReadingParameters.AutomaticScenarioCreation)
                    {
                        scenario = caseNumber;
                    }

                    String fileName2;
                    if (filesReadingParameters.Model.Equals(Model.Middle))
                    {
                        fileName = "dese05co.dat";
                    }
                    else
                    {
                        fileName = "deme05co.dat";
                    }

                    if (filesReadingParameters.Model.Equals(Model.Middle))
                    {
                        fileName2 = "dese05ec.dat";
                    }
                    else
                    {
                        fileName2 = "deme05ec.dat";
                    }

                    double[,] load;
                    if (filesReadingParameters.ReadEcuadorLoad)
                    {
                        load = inputFilesReader.ReadPeriodicLoad(fileName, fileName2);
                    }
                    else
                    {
                        load = inputFilesReader.ReadPeriodicLoad(fileName);
                    }
                    accessDBWriter.WritePeriodicLoad(load, filesReadingParameters.CreateScenario, filesReadingParameters.AutomaticScenarioCreation, scenario);
                    filesReadingParametersViewModel.BusyContent   = caseTitle + MessageUtil.FormatMessage("INFO.LoadLoaded");
                    filesReadingParametersViewModel.ProgressValue = progressValue;
                    progressValue += progressStep;

                    Period[] basicPeriod = inputFilesReader.ReadBasicPeriod(load, loadBlocks[0].DurationFactor);
                    accessDBWriter.WriteBasicPeriod(basicPeriod, filesReadingParameters.CreateScenario, filesReadingParameters.AutomaticScenarioCreation, scenario);
                    filesReadingParametersViewModel.BusyContent   = caseTitle + MessageUtil.FormatMessage("INFO.BasicPeriodsLoaded");
                    filesReadingParametersViewModel.ProgressValue = progressValue;
                    progressValue += progressStep;

                    if (filesReadingParameters.Model.Equals(Model.Middle))
                    {
                        fileName = "hinflw_w.dat";
                    }
                    else
                    {
                        fileName = "hinflw.dat";
                    }

                    Dictionary <int, string> riversMapping = accessDBReader.ReadRiversMapping();
                    List <River>             rivers        = null;
                    rivers = inputFilesReader.ReadPeriodicRiversInflows(fileName, riversMapping);
                    if (rivers != null)
                    {
                        accessDBWriter.WritePeriodicRiversInflows(rivers, filesReadingParameters.CreateScenario, filesReadingParameters.AutomaticScenarioCreation, scenario);
                        filesReadingParametersViewModel.BusyContent = caseTitle + MessageUtil.FormatMessage("INFO.InflowsLoaded");
                    }
                    filesReadingParametersViewModel.ProgressValue = progressValue;
                    progressValue += progressStep;

                    List <ConventionalPlant> hydroPlants = accessDBReader.ReadConventionalPlants("recursoHidroBasica", scenario);
                    Dictionary <string, ConventionalPlant> hydroPlantsMapping = accessDBReader.ReadConventionalPlantsMapping("MapeoRecursosHidro", hydroPlants);
                    inputFilesReader.ReadHydroPlantsProductionFactorAndMax("chidroco.dat", hydroPlants, hydroPlantsMapping);
                    accessDBWriter.UpdateHydroPlantsProductionFactorAndMax(hydroPlants, filesReadingParameters.CreateScenario, filesReadingParameters.AutomaticScenarioCreation, scenario);
                    filesReadingParametersViewModel.BusyContent   = caseTitle + MessageUtil.FormatMessage("INFO.HydroPlantsUpdated");
                    filesReadingParametersViewModel.ProgressValue = progressValue;
                    progressValue += progressStep;

                    List <ConventionalPlant> thermalPlants = accessDBReader.ReadConventionalPlants("recursoTermicoBasica", scenario);
                    Dictionary <string, ConventionalPlant> thermalPlantsMapping = accessDBReader.ReadConventionalPlantsMapping("MapeoRecursosTermicos", thermalPlants);
                    inputFilesReader.ReadThermalPlantsParameters("ctermico.dat", thermalPlants, thermalPlantsMapping);
                    accessDBWriter.UpdateThermalPlantsParameters(thermalPlants, filesReadingParameters.CreateScenario, filesReadingParameters.AutomaticScenarioCreation, scenario);
                    filesReadingParametersViewModel.BusyContent   = caseTitle + MessageUtil.FormatMessage("INFO.ThermalPlantsUpdated");
                    filesReadingParametersViewModel.ProgressValue = progressValue;
                    progressValue += progressStep;

                    if (filesReadingParameters.Model.Equals(Model.Middle))
                    {
                        fileName = "pmhiseco.dat";
                    }
                    else
                    {
                        fileName = "pmhimeco.dat";
                    }

                    inputFilesReader.ReadPeriodicPlantsMaintenances(fileName, hydroPlantsMapping);
                    accessDBWriter.WritePeriodicPlantsMaintenances("recursoHidroPeriodo", hydroPlants, filesReadingParameters.CreateScenario, filesReadingParameters.AutomaticScenarioCreation, scenario);
                    filesReadingParametersViewModel.BusyContent   = caseTitle + MessageUtil.FormatMessage("INFO.HydroPlantsMantainancesLoaded");
                    filesReadingParametersViewModel.ProgressValue = progressValue;
                    progressValue += progressStep;

                    if (filesReadingParameters.Model.Equals(Model.Middle))
                    {
                        fileName = "pmtrseco.dat";
                    }
                    else
                    {
                        fileName = "pmtrmeco.dat";
                    }

                    inputFilesReader.ReadPeriodicPlantsMaintenances(fileName, thermalPlantsMapping);
                    accessDBWriter.WritePeriodicPlantsMaintenances("recursoTermicoPeriodo", thermalPlants, filesReadingParameters.CreateScenario, filesReadingParameters.AutomaticScenarioCreation, scenario);
                    filesReadingParametersViewModel.BusyContent   = caseTitle + MessageUtil.FormatMessage("INFO.ThermalPlantsMantainancesLoaded");
                    filesReadingParametersViewModel.ProgressValue = progressValue;
                    progressValue += progressStep;

                    if (filesReadingParameters.Model.Equals(Model.Middle))
                    {
                        fileName = "vminseco.dat";
                    }
                    else
                    {
                        fileName = "vminmeco.dat";
                    }

                    if (filesReadingParameters.Model.Equals(Model.Middle))
                    {
                        fileName2 = "vespseco.dat";
                    }
                    else
                    {
                        fileName2 = "vespmeco.dat";
                    }

                    List <Reservoir> reservoirs = accessDBReader.ReadReservoirs(scenario);
                    Dictionary <string, Reservoir> reservoirsMapping = accessDBReader.ReadReservoirsMapping(reservoirs);
                    inputFilesReader.ReadReservoirsLevels("chidroco.dat", reservoirs, reservoirsMapping);
                    inputFilesReader.ReadPeriodicReservoirsLevels(fileName, LevelType.Min, reservoirsMapping);
                    inputFilesReader.ReadPeriodicReservoirsLevels(fileName2, LevelType.Max, reservoirsMapping);
                    accessDBWriter.UpdateReservoirsLevels(reservoirs, filesReadingParameters.CreateScenario, filesReadingParameters.AutomaticScenarioCreation, scenario);
                    accessDBWriter.WritePeriodicReservoirsLevels(reservoirsMapping.Values.ToList(), filesReadingParameters.CreateScenario, filesReadingParameters.AutomaticScenarioCreation, scenario);
                    filesReadingParametersViewModel.BusyContent   = caseTitle + MessageUtil.FormatMessage("INFO.ReservoirsLevelsLoaded");
                    filesReadingParametersViewModel.ProgressValue = progressValue;
                    progressValue += progressStep;

                    if (filesReadingParameters.Model.Equals(Model.Middle))
                    {
                        fileName = "combseco.dat";
                    }
                    else
                    {
                        fileName = "combmeco.dat";
                    }

                    if (filesReadingParameters.Model.Equals(Model.Middle))
                    {
                        fileName2 = "furaseco.dat";
                    }
                    else
                    {
                        fileName2 = "furameco.dat";
                    }

                    List <Fuel> fuels = accessDBReader.ReadFuels();
                    inputFilesReader.ReadFuelsCosts("ccombuco.dat", fuels);
                    inputFilesReader.ReadPeriodicFuelsCosts(fileName, fuels);
                    inputFilesReader.ReadPeriodicFuelsCapacity(fileName2, fuels);
                    accessDBWriter.UpdateFuelsCosts(fuels);
                    accessDBWriter.WritePeriodicFuelsCostsAndCapacity(fuels, filesReadingParameters.CreateScenario, filesReadingParameters.AutomaticScenarioCreation, scenario);
                    filesReadingParametersViewModel.BusyContent   = caseTitle + MessageUtil.FormatMessage("INFO.FuelsCostsAndCapacityLoaded");
                    filesReadingParametersViewModel.ProgressValue = progressValue;
                    progressValue += progressStep;

                    if (filesReadingParameters.Model.Equals(Model.Middle))
                    {
                        fileName = "fccsseco.dat";
                    }
                    else
                    {
                        fileName = "fccsmeco.dat";
                    }

                    if (filesReadingParameters.Model.Equals(Model.Middle))
                    {
                        fileName2 = "ccse05co.dat";
                    }
                    else
                    {
                        fileName2 = "ccme05co.dat";
                    }

                    List <FuelContract> fuelContracts = accessDBReader.ReadFuelContracts();
                    inputFilesReader.ReadFuelContractsCostsAndCapacity("fuecntco.dat", fuelContracts);
                    inputFilesReader.ReadPeriodicFuelContractsCosts(fileName, fuelContracts);
                    inputFilesReader.ReadPeriodicFuelContractsCapacity(fileName2, fuelContracts);
                    accessDBWriter.UpdateFuelContracts(fuelContracts);
                    accessDBWriter.WritePeriodicFuelContractsCostsAndCapacity(fuelContracts, filesReadingParameters.CreateScenario, filesReadingParameters.AutomaticScenarioCreation, scenario);
                    filesReadingParametersViewModel.BusyContent   = caseTitle + MessageUtil.FormatMessage("INFO.FuelContractsCostsAndCapacityLoaded");
                    filesReadingParametersViewModel.ProgressValue = progressValue;
                    progressValue += progressStep;

                    Errors   += inputFilesReader.Errors;
                    Warnings += inputFilesReader.Wanings;
                }
            }
            catch
            {
                throw;
            }
        }