Projekt

Obecné

Profil

Stáhnout (5.49 KB) Statistiky
| Větev: | Tag: | Revize:
1
//
2
// Author: A. Konig
3
//
4

    
5
using System;
6
using System.Collections.Generic;
7
using System.Globalization;
8
using System.IO;
9

    
10
namespace ServerApp.Parser.InputData
11
{
12
    /// <summary>
13
    /// Class responsible for loading data from file
14
    /// </summary>
15
    /// <author>A. Konig</author>
16
    class CsvDataLoader : IDataLoader
17
    {
18
        /// <summary> Culture info for parsing numbers </summary>
19
        static CultureInfo cultureInfo = new CultureInfo("de-DE");
20

    
21
        /// <summary>
22
        /// Load file into string
23
        /// </summary>
24
        /// <param name="path">Paht to file</param>
25
        /// <returns>Null if file does not exist, or file in string</returns>
26
        public string LoadPredictionFile(string path)
27
        {
28
            if (path == null || !File.Exists(path))
29
                return null;
30

    
31
            return File.ReadAllText(path);
32
        }
33

    
34
        /// <summary>
35
        /// Load csv file into array
36
        /// </summary>
37
        /// <param name="name">Path to file</param>
38
        /// <returns>Array with loaded data</returns>
39
        private string[] LoadCsv(string name)
40
        {
41
            if (!File.Exists(name))
42
                return null;
43

    
44
            string[] lines = File.ReadAllLines(name);
45
            return lines;
46
        }
47

    
48
        /// <summary>
49
        /// Load jis data from file
50
        /// </summary>
51
        /// <param name="pathToFile">Path to file</param>
52
        /// <returns></returns>
53
        public List<JisInstance> LoadJisFile(string pathToFile)
54
        {
55
            var lines = LoadCsv(pathToFile);
56
            if (lines == null)
57
                return null;
58

    
59
            List<JisInstance> list = new List<JisInstance>();
60

    
61
            if (lines == null)
62
                return list;
63

    
64
            for (int i = 0; i < lines.Length; i++)
65
            {
66
                var data = lines[i].Split(';');
67

    
68
                if (data.Length < 3)
69
                    continue;
70

    
71
                data[0] = data[0].Substring(1, data[0].Length - 2);
72
                data[1] = data[1].Substring(1, data[1].Length - 2);
73
                
74
                var dateTime = DateTime.ParseExact(data[1], "G", cultureInfo);
75

    
76
                int amount = 0;
77
                int.TryParse(data[2], out amount);
78

    
79
                JisInstance inst = new JisInstance(data[0], dateTime, amount);
80
                list.Add(inst);
81
            }
82

    
83
            return list;
84
        }
85

    
86
        /// <summary>
87
        /// Load login data from file
88
        /// </summary>
89
        /// <param name="pathToFile">Path to file</param>
90
        /// <returns></returns>
91
        public List<LogInInstance> LoadLoginFile(string pathToFile)
92
        {
93
            var lines = LoadCsv(pathToFile);
94
            if (lines == null)
95
                return null;
96

    
97
            List<LogInInstance> list = new List<LogInInstance>();
98

    
99
            if (lines == null)
100
                return list;
101

    
102
            for (int i = 0; i < lines.Length; i++)
103
            {
104
                var data = lines[i].Split(';');
105

    
106
                if (data.Length < 9)
107
                    continue;
108

    
109
                data[0] = data[0].Substring(1, data[0].Length - 2);
110
                data[3] = data[3].Substring(1, data[3].Length - 2);
111
                data[4] = data[4].Substring(1, data[4].Length - 2);
112
                data[5] = data[5].Substring(1, data[5].Length - 2);
113
                data[6] = data[6].Substring(1, data[6].Length - 2);
114
                data[7] = data[7].Substring(1, data[7].Length - 2);
115
                data[8] = data[8].Substring(1, data[8].Length - 2);
116

    
117
                var dateTime = DateTime.ParseExact(data[0], "G", cultureInfo);
118
                var startTime = DateTime.ParseExact(data[3], "t", cultureInfo);
119
                var endTime = DateTime.ParseExact(data[4], "t", cultureInfo);
120

    
121
                int count = 0;
122
                int.TryParse(data[1], out count);
123

    
124
                int lesson = 0;
125
                int.TryParse(data[2], out lesson);
126

    
127
                LogInInstance inst = new LogInInstance(dateTime, count, lesson, startTime, endTime, data[5], data[6], data[7], data[8]);
128
                list.Add(inst);
129
            }
130

    
131
            return list;
132
        }
133

    
134
        /// <summary>
135
        /// Load weather data from file
136
        /// </summary>
137
        /// <param name="pathToFile">Path to file</param>
138
        /// <returns></returns>
139
        public List<WeatherInstance> LoadWeatherFile(string pathToFile)
140
        {
141
            var lines = LoadCsv(pathToFile);
142
            if (lines == null)
143
                return null;
144

    
145
            List<WeatherInstance> list = new List<WeatherInstance>();
146

    
147
            if (lines == null)
148
                return list;
149

    
150
            for (int i = 0; i < lines.Length; i++)
151
            {
152
                var data = lines[i].Split(';');
153
                
154
                if (data.Length < 5)
155
                    continue;
156

    
157
                data[0] = data[0].Substring(1, data[0].Length - 2);
158
                
159
                var dateTime = DateTime.ParseExact(data[0], "G", cultureInfo);
160
                
161
                double temp = 0;
162
                double.TryParse(data[1], out temp);
163
                
164
                double wind = 0;
165
                double.TryParse(data[2], out wind);
166
                
167
                int rain = 0;
168
                int.TryParse(data[3], out rain);
169
                
170
                double lum = 0;
171
                double.TryParse(data[4], out lum);
172

    
173
                WeatherInstance inst = new WeatherInstance(dateTime, temp, wind, rain, lum);
174
                list.Add(inst);
175
            }
176

    
177
            return list;
178
        }
179

    
180
    }
181
}
(1-1/5)