-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFileWeatherSource.cs
More file actions
72 lines (50 loc) · 2.14 KB
/
FileWeatherSource.cs
File metadata and controls
72 lines (50 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Threading.Tasks;
namespace WeatherDataCollector {
//CLASS TO GET WEATHER DATA FROM XML FILE
internal class FileWeatherSource : IWeatherDataSource {
//RETURNS THE DATA IF THE FILE CAN BE READ
//OTHERWISE IT RETURNS A DEFAULT VALUE
public WeatherData SendWeatherData() {
if (ReadXMLFile (out XmlDocument xmlFile)) {
return CreateWeatherData(xmlFile);
} else {
return new WeatherData(999, "NA");
}
}
//TRIES TO READ THE XML FILE AND IF POSSIBLE RETURNS IT
public bool ReadXMLFile (out XmlDocument xmlFile) {
xmlFile = null;
string projectDirectory = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName;
string folderPath = Path.Combine(projectDirectory, "Data");
string filePath = Path.Combine(folderPath, "Weather_Data_File.xml");
if (File.Exists(filePath)) {
try {
xmlFile = new XmlDocument();
xmlFile.Load(filePath);
Console.WriteLine(xmlFile.OuterXml);
return true;
}
catch (Exception exception){
Console.WriteLine("Error while loading XML file: " + exception.Message);
return false;
}
}
else {
Console.WriteLine("XML file not found at: " + filePath + " this path!");
return false;
}
}
//CREATES WeatherData FROM AN XML FILE
public WeatherData CreateWeatherData (XmlDocument xmlFile) {
string description = xmlFile.DocumentElement["Description"].InnerText;
double temperature = Convert.ToDouble(xmlFile.DocumentElement["Temperature"].InnerText);
WeatherData newWeatherData = new WeatherData(temperature, description);
return newWeatherData;
}
}
}