co2DataProject/src/Co2Data.java

94 lines
2.5 KiB
Java
Raw Normal View History

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
}