feat: File processing.
This commit is contained in:
parent
f0b7096865
commit
2025cca693
9 changed files with 162 additions and 0 deletions
33
src/main/java/eu/ztsh/lfr/model/Temperatures.java
Normal file
33
src/main/java/eu/ztsh/lfr/model/Temperatures.java
Normal file
|
@ -0,0 +1,33 @@
|
|||
package eu.ztsh.lfr.model;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Temperatures extends ConcurrentHashMap<String, ConcurrentMap<Integer, YearDataAccumulator>> {
|
||||
|
||||
public void addData(DataRow dataRow) {
|
||||
putIfAbsent(dataRow.city(), new ConcurrentHashMap<>());
|
||||
var city = get(dataRow.city());
|
||||
city.putIfAbsent(dataRow.year(), new YearDataAccumulator());
|
||||
city.get(dataRow.year()).add(dataRow.temperature());
|
||||
}
|
||||
|
||||
public Averages getAverages() {
|
||||
var computed = entrySet().stream()
|
||||
.map(entry -> {
|
||||
var newEntry = entry.getValue().entrySet().stream()
|
||||
.map(yearEntry -> {
|
||||
var average = new Average();
|
||||
average.setYear(yearEntry.getKey().toString());
|
||||
average.setAverageTemperature(yearEntry.getValue().getAverage());
|
||||
return average;
|
||||
})
|
||||
.toList();
|
||||
return Map.entry(entry.getKey(), newEntry);
|
||||
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
||||
return new Averages(computed);
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue