예제 #1
0
        private string generateFilename()
        {
            switch (_fileStructure)
            {
            case FileStructure.DagBestanden:
                return(string.Format("K{0} {1}.vlg", VLogArchiefDenHaag.VriNameToFullNumber(_vri), _lastVLogDataDt.ToString("yyyy-MM-dd")));    //"K025 2018-06-15.vlg";

            case FileStructure.Eenbestand:
                return(string.Format("K{0} {1} - {2}.vlg",
                                     VLogArchiefDenHaag.VriNameToFullNumber(_vri),
                                     _firstVLogDataDt.ToString("yyyy-MM-dd_HHmm"),
                                     _lastVLogDataDt.ToString("yyyy-MM-dd_HHmm")));     //"K025 2018-06-15_1300 - 2018-06-15_1800.vlg";
            }
            return("");
        }
예제 #2
0
        /// <summary>
        /// Verzamelen van V-Log data in dagbestanden
        /// </summary>
        /// <param name="rootDir">archief map Den Haag structuur</param>
        /// <param name="vri">kruispuntnummer</param>
        /// <param name="begin"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public FileCollection Collect(string rootDir, string vri, TimeRefLocation begin, TimeRefLocation end, FileStructure fileStructure)
        {
            //verzamelen van V-Log data in dagbestanden
            //  - data vanaf begin opslaan tot end
            //  - V-Log data opslaan in dagbestanden

            _dataFiles         = new FileCollection();
            _vri               = vri;
            _collectedVLogData = new StringBuilder();
            _lastVLogDataDt    = new DateTime();
            _fileStructure     = fileStructure;
            _beginVLogDt       = begin.DtTimeRefVLog;
            _endVLogDt         = end.DtTimeRefVLog;

            //doorlopen V-Log data en doorgeven
            VLogArchiefDenHaag.ProcesData(rootDir, vri, begin, end, VLogArchiefDenHaag.procesMode.excludeToTimeRef, receiveData);

            //laatste data opslaan
            endData();

            return(_dataFiles);
        }
예제 #3
0
        public string GetCsvResult(DateTime from, DateTime to)
        {
            StringBuilder result = new StringBuilder();

            if (uitvoerSettingsCsv.Filter == null || uitvoerSettingsCsv.Filter.Weekdagen == null || uitvoerSettingsCsv.Filter.Weekdagen.Length != 7)
            {
                return("ERROR weekdagen");
            }

            if (periodResults.Count == 0)
            {
                //geen resultaten
                return("");
            }
            else
            {
                int  aantalDetectoren = periodResults[0].Result.Length;
                bool vlgcfgOk         = vlogConfig != null && vlogConfig.Valid && (vlogConfig.Dp.Length == aantalDetectoren);

                if (uitvoerSettingsCsv.AlleenKoplussen && !vlgcfgOk)
                {
                    //kan geen koplussen bepalen, dus ook geen informatie weer geven
                    return("");
                }

                //bepalen welke detectie koplussen betreft
                bool[] koplussen = new bool[0];
                if (uitvoerSettingsCsv.AlleenKoplussen)
                {
                    koplussen = new bool[vlogConfig.Dp.Length];
                    for (int i = 0; i < vlogConfig.Dp.Length; i++)
                    {
                        koplussen[i] = (vlogConfig.Dp[i].type & 0x0101) == 0x0101; //kop + detectielus
                    }
                }

                //header
                result.Append(VLogArchiefDenHaag.VriNameToFullKName(vriName));
                for (int i = 0; i < aantalDetectoren; i++)
                {
                    if (uitvoerSettingsCsv.AlleenKoplussen && koplussen[i] == false)
                    {
                        continue;
                    }
                    if (vlgcfgOk)
                    {
                        result.AppendFormat(";{0}", vlogConfig.Dp[i].name);           //indien VLog correct, de naamgeving weergeven
                    }
                    else
                    {
                        result.AppendFormat(";[{0}]", i); //geen vlog, dan index nr weergeven
                    }
                }
                result.AppendLine();

                //data per periode
                int      aantalDetRegel = 0;
                DateTime nextPrStart    = startMomentPeriod(from);
                foreach (PeriodResultTellen pr in periodResults)
                {
                    aantalDetRegel = pr.Result.Length;
                    if (aantalDetRegel != aantalDetectoren)
                    {
                        continue;                                     //indien aantal detectoren is gewijzigd, geen uitvoer meer uitsturen
                    }
                    //checken of er gaten in de perioden zitten
                    while (nextPrStart < pr.PeriodStart) //gat = genereren lege regels (tussen begin datum en eerste pr of tussen pr's in)
                    {
                        //lege regel toevoegen
                        if (uitvoerSettingsCsv.Filter.ValidInFilter(nextPrStart))
                        {
                            result.AppendFormat("{0}", nextPrStart.ToString("yyyy-MM-dd HH:mm"));
                            for (int i = 0; i < aantalDetRegel; i++)
                            {
                                if (uitvoerSettingsCsv.AlleenKoplussen && koplussen[i] == false)
                                {
                                    continue;
                                }
                                result.Append(";"); //gehele periode ongeldige telling
                            }
                            result.AppendLine();
                        }

                        nextPrStart += intervalMin;
                    }
                    nextPrStart = pr.PeriodStart + pr.PeriodLength;

                    if (uitvoerSettingsCsv.Filter.ValidInFilter(pr.PeriodStart))
                    {
                        result.AppendFormat("{0}", pr.PeriodStart.ToString("yyyy-MM-dd HH:mm"));
                        if (pr.DataComplete)
                        {
                            for (int i = 0; i < aantalDetRegel; i++)
                            {
                                if (uitvoerSettingsCsv.AlleenKoplussen && koplussen[i] == false)
                                {
                                    continue;
                                }
                                if (pr.DetError[i])
                                {
                                    result.Append(";");                 //individuele fout in detector: ongeldige telling
                                }
                                else
                                {
                                    result.AppendFormat(";{0}", pr.Result[i]);
                                }
                            }
                        }
                        else
                        {
                            for (int i = 0; i < aantalDetRegel; i++)
                            {
                                if (uitvoerSettingsCsv.AlleenKoplussen && koplussen[i] == false)
                                {
                                    continue;
                                }
                                result.Append(";"); //gehele periode ongeldige telling
                            }
                        }
                        result.AppendLine();
                    }
                }
                if (nextPrStart < to)
                {
                    //gat = genereren lege regels (tussen laatste pr en einddatum)
                    while (nextPrStart < to)
                    {
                        if (uitvoerSettingsCsv.Filter.ValidInFilter(nextPrStart))
                        {
                            //lege regel toevoegen
                            result.AppendFormat("{0}", nextPrStart.ToString("yyyy-MM-dd HH:mm"));
                            for (int i = 0; i < aantalDetRegel; i++)
                            {
                                if (uitvoerSettingsCsv.AlleenKoplussen && koplussen[i] == false)
                                {
                                    continue;
                                }
                                result.Append(";"); //gehele periode ongeldige telling
                            }
                            result.AppendLine();
                        }

                        nextPrStart += intervalMin;
                    }
                }
            }

            return(result.ToString());
        }