Projekt

Obecné

Profil

Stáhnout (2.73 KB) Statistiky
| Větev: | Tag: | Revize:
1
using Parser_1._0.OutputInfo;
2
using System;
3
using System.Collections.Generic;
4
using System.IO;
5
using Parser_1._0.InputData;
6

    
7
namespace Parser_1._0.Parsers
8
{
9
    class JisParser
10
    {
11

    
12
        static List<JisInfo> ParseJisData(string folder, bool wholeDay = true, int interval = 1)
13
        {
14
            List<JisInfo> list = new List<JisInfo>();
15

    
16
            // najít složku, ve složce sou data co se budou parsovat
17

    
18
            if (!Directory.Exists(folder))
19
                return null;
20

    
21
            // když v jednej složce budou všechny jis data co chci zpracovat
22
            // pro každej soubor budu spouštět parsování
23
            string[] fileEntries = Directory.GetFiles(folder);
24
            foreach (string fileName in fileEntries)
25
            {
26
                List<JisInfo> loadedData = null;
27
                // pokud po jednom dni
28
                if (wholeDay)
29
                    loadedData = ProcessOneJisFileAsDays(folder + "/" + fileName);
30
                // pokud po hodinách
31
                else
32
                {
33
                    // pokud: konec dne nebo konec aktuálního intervalu -> vemu to co sem nasčítal
34
                    throw new NotImplementedException();
35
                }
36

    
37
                list.AddRange(loadedData);
38
            }
39

    
40
            return list;
41
        }
42

    
43
        private static List<JisInfo> ProcessOneJisFileAsDays(string path)
44
        {
45
            List<JisInfo> jisInfo = new List<JisInfo>();
46

    
47
            // načíst data ze souboru
48
            List<JisInstance> list =  CsvDataLoader.LoadJisFile(path);
49

    
50
            int[] recordedAmount = new int[TagInfo.faculties.Length];
51

    
52
            // procházet data ze souboru
53
            int lastDay = list[0].dateTime.Day;
54
            DateTime lastStartTime = list[0].dateTime.Date;
55
            for (int i = 0; i < list.Count; i++)
56
            {
57
                // v každym dni agreguju
58
                int day = list[i].dateTime.Day;
59
                if (lastDay != day)
60
                {
61
                    for (int k = 0; k < TagInfo.faculties.Length; k++)
62
                    {
63
                        JisInfo dayInfo = new JisInfo(TagInfo.faculties[k], recordedAmount[k], lastStartTime, 11);
64
                        jisInfo.Add(dayInfo);
65
                    }
66

    
67
                    recordedAmount = new int[TagInfo.faculties.Length];
68
                }
69

    
70
                // tady nasčítávát podle místa
71
                if (TagInfo.jisPlaces.ContainsKey(list[i].placeTag))
72
                    recordedAmount[TagInfo.jisPlaces[list[i].placeTag]] += list[i].amount;
73
                else
74
                {
75
                    Console.WriteLine("Unknown code " + list[i].placeTag);
76
                }
77

    
78
            }
79

    
80
            throw new NotImplementedException();
81
        }
82
    }
83
}
(1-1/4)