Ejemplo n.º 1
0
        public bool Import([NotNull] CsvImportOptions calcDirectoryOptions, [CanBeNull] out DateBasedProfile newProfile)
        {
            _calculationProfiler.StartPart(Utili.GetCurrentMethodAndClass());
            string csvFilename = calcDirectoryOptions.Input;

            newProfile = null;
            if (csvFilename == null)
            {
                Logger.Error("No file was set.");
                return(false);
            }

            if (!File.Exists(csvFilename))
            {
                Logger.Error("File does not exist");
                return(false);
            }

            if (calcDirectoryOptions.Delimiter == null)
            {
                Logger.Error("No delimiter set.");
                return(false);
            }
            Logger.Info("Loading...");
            CSVImporter ci = new CSVImporter(true)
            {
                FileName        = csvFilename,
                TimeColumn      = 1,
                HeaderLineCount = 1,
                Separator       = calcDirectoryOptions.Delimiter[0],
                Column          = 2
            };

            ci.RefreshEntries();
            if (ci.Entries.Count == 0)
            {
                throw new LPGException("Not a single entry was found");
            }
            Logger.Info("PreviewText from the import:");
            Logger.Info(ci.PreviewText, true);
            //asd

            var sim = new Simulator(_connectionString);

            Logger.Info("Loading finished.");

            Logger.Info("Importing " + ci.Entries.Count + " datapoints...");
            var dbp = sim.DateBasedProfiles.CreateNewItem(sim.ConnectionString);

            for (var i = 0; i < ci.Entries.Count; i++)
            {
                var ce   = ci.Entries[i];
                var date = ce.Time;
                dbp.AddNewDatePoint(date, ce.Value, false);
            }
            dbp.Datapoints.Sort();
            dbp.SaveToDB();
            newProfile = dbp;
            Logger.Info("Imported all data points.");

            _calculationProfiler.StopPart(Utili.GetCurrentMethodAndClass());
            return(true);
        }