2024-11-26 09:16:45 +01:00
|
|
|
import java.io.BufferedReader;
|
|
|
|
import java.io.InputStreamReader;
|
|
|
|
import java.net.HttpURLConnection;
|
|
|
|
import java.net.URL;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
public class Co2Data {
|
|
|
|
private Date date;
|
2024-11-26 11:47:06 +01:00
|
|
|
private int time;
|
2024-11-26 09:16:45 +01:00
|
|
|
private int co2Level;
|
|
|
|
|
|
|
|
// Constructor
|
|
|
|
public Co2Data(Date date, int co2Level) {
|
|
|
|
this.date = date;
|
|
|
|
this.co2Level = co2Level;
|
2024-11-26 11:47:06 +01:00
|
|
|
this.time = date.getHour() * 100 + date.getMinute();
|
2024-11-26 09:16:45 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// Getters and Setters
|
|
|
|
public Date getDate() {
|
|
|
|
return date;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setDate(Date date) {
|
|
|
|
this.date = date;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getCo2Level() {
|
|
|
|
return co2Level;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setCo2Level(int co2Level) {
|
|
|
|
this.co2Level = co2Level;
|
|
|
|
}
|
|
|
|
|
2024-11-26 11:47:06 +01:00
|
|
|
public int getTime() {
|
|
|
|
return time;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setTime(int time) {
|
|
|
|
this.time = time;
|
|
|
|
}
|
|
|
|
|
2024-11-26 09:16:45 +01:00
|
|
|
// Fetch and parse data from a CSV URL
|
2024-11-26 11:47:06 +01:00
|
|
|
public static List<Co2Data> getData(URL url) {
|
2024-11-26 09:16:45 +01:00
|
|
|
List<Co2Data> dataList = new ArrayList<>();
|
|
|
|
|
|
|
|
try {
|
|
|
|
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
|
|
|
conn.setRequestMethod("GET");
|
|
|
|
conn.setRequestProperty("Accept", "text/csv");
|
|
|
|
|
|
|
|
if (conn.getResponseCode() != 200) {
|
|
|
|
throw new RuntimeException("Failed : HTTP Error code : " + conn.getResponseCode());
|
|
|
|
}
|
|
|
|
|
|
|
|
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
|
|
|
|
br.readLine(); // Skip header line
|
|
|
|
|
|
|
|
String output;
|
2024-11-26 11:47:06 +01:00
|
|
|
System.out.println(url);
|
2024-11-26 09:16:45 +01:00
|
|
|
while ((output = br.readLine()) != null) {
|
|
|
|
Co2Data data = parseData(output);
|
|
|
|
if (data != null) {
|
|
|
|
dataList.add(data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
conn.disconnect();
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
System.out.println("Error in data fetching: " + e);
|
|
|
|
}
|
|
|
|
|
|
|
|
return dataList;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Helper method to parse CSV data and create a Co2Data object
|
|
|
|
private static Co2Data parseData(String line) {
|
|
|
|
try {
|
|
|
|
String[] parts = line.split(",");
|
|
|
|
String dateStr = parts[0].trim(); // assuming date is in the first column
|
|
|
|
int co2Level = Integer.parseInt(parts[1].trim()); // assuming CO2 level is in the second column
|
2024-11-26 11:47:06 +01:00
|
|
|
Date date = new Date(dateStr);
|
2024-11-26 09:16:45 +01:00
|
|
|
|
|
|
|
return new Co2Data(date, co2Level);
|
|
|
|
} catch (Exception e) {
|
|
|
|
System.out.println("Error parsing data line: " + e);
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
2024-11-26 11:47:06 +01:00
|
|
|
|
2024-11-26 09:16:45 +01:00
|
|
|
}
|