package pgdp.streams ;
import java.io.File ;
import java.io.IOException ;
import java.nio.file.Files ;
import java.time.LocalDate ;
import java.util.Arrays ;
import java.util.List ;
import java.util.Map ;
import java.util.Set ;
import java.util.function.Function ;
import java.util.stream.Collectors ;
import java.util.stream.Stream ;
public abstract class Temperatures {
protected List< Temperature> data;
public Temperatures
( String filepath
) { data
= parseCsvFile
( new File ( filepath
) ) ; }
public Stream< Temperature> stream( ) {
return data.stream ( ) ;
}
static private List
< Temperature
> parseCsvFile
( final File csvFile
) { try {
return Files.lines ( csvFile.toPath ( ) ) .skip ( 1 ) // skip header of csv file
.map ( lineToTemperature) // convert line to DateTemperature
.filter ( elem -> elem != null ) // filter null values due to parsing errors
.collect ( Collectors.toList ( ) ) ;
}
}
static private Function
< String , Temperature
> lineToTemperature
= ( line
) -> { try {
final String [ ] fields
= line.
split ( "," ) ; // a CSV with comma-separated lines final LocalDate date = LocalDate.parse ( fields[ 0 ] ) ;
final double avgTemperature
= Double .
parseDouble ( fields
[ 1 ] ) ; // Skipping uncertainty
final String city
= fields
[ 3 ] ; final String country
= fields
[ 4 ] ; final double latitude
= Double .
parseDouble ( fields
[ 5 ] .
substring ( 0 , fields
[ 5 ] .
length ( ) - 1 ) ) ; final double longitude
= Double .
parseDouble ( fields
[ 6 ] .
substring ( 0 , fields
[ 6 ] .
length ( ) - 1 ) ) ; return new Temperature( date, avgTemperature, city, country, latitude, longitude) ;
return null ;
}
} ;
}
cGFja2FnZSBwZ2RwLnN0cmVhbXM7CgppbXBvcnQgamF2YS5pby5GaWxlOwppbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKaW1wb3J0IGphdmEubmlvLmZpbGUuRmlsZXM7CmltcG9ydCBqYXZhLnRpbWUuTG9jYWxEYXRlOwppbXBvcnQgamF2YS51dGlsLkFycmF5czsKaW1wb3J0IGphdmEudXRpbC5MaXN0OwppbXBvcnQgamF2YS51dGlsLk1hcDsKaW1wb3J0IGphdmEudXRpbC5TZXQ7CmltcG9ydCBqYXZhLnV0aWwuZnVuY3Rpb24uRnVuY3Rpb247CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLlN0cmVhbTsKCnB1YmxpYyBhYnN0cmFjdCBjbGFzcyBUZW1wZXJhdHVyZXMgewogICAgcHJvdGVjdGVkIExpc3Q8VGVtcGVyYXR1cmU+IGRhdGE7CgogICAgcHVibGljIFRlbXBlcmF0dXJlcyhTdHJpbmcgZmlsZXBhdGgpIHsKICAgICAgICBkYXRhID0gcGFyc2VDc3ZGaWxlKG5ldyBGaWxlKGZpbGVwYXRoKSk7CiAgICB9CiAgICAKICAgIHB1YmxpYyBTdHJlYW08VGVtcGVyYXR1cmU+IHN0cmVhbSgpIHsKICAgICAgICByZXR1cm4gZGF0YS5zdHJlYW0oKTsKICAgIH0KCiAgICBzdGF0aWMgcHJpdmF0ZSBMaXN0PFRlbXBlcmF0dXJlPiBwYXJzZUNzdkZpbGUoZmluYWwgRmlsZSBjc3ZGaWxlKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIEZpbGVzLmxpbmVzKGNzdkZpbGUudG9QYXRoKCkpLnNraXAoMSkgLy8gc2tpcCBoZWFkZXIgb2YgY3N2IGZpbGUKICAgICAgICAgICAgICAgICAgICAubWFwKGxpbmVUb1RlbXBlcmF0dXJlKSAvLyBjb252ZXJ0IGxpbmUgdG8gRGF0ZVRlbXBlcmF0dXJlCiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihlbGVtIC0+IGVsZW0gIT0gbnVsbCkgLy8gZmlsdGVyIG51bGwgdmFsdWVzIGR1ZSB0byBwYXJzaW5nIGVycm9ycwogICAgICAgICAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOwogICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkZpbGUgIiArIGNzdkZpbGUgKyAiIG5vdCBmb3VuZC4iKTsKICAgICAgICB9CiAgICB9CgogICAgc3RhdGljIHByaXZhdGUgRnVuY3Rpb248U3RyaW5nLCBUZW1wZXJhdHVyZT4gbGluZVRvVGVtcGVyYXR1cmUgPSAobGluZSkgLT4gewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGZpbmFsIFN0cmluZ1tdIGZpZWxkcyA9IGxpbmUuc3BsaXQoIiwiKTsgLy8gYSBDU1Ygd2l0aCBjb21tYS1zZXBhcmF0ZWQgbGluZXMKICAgICAgICAgICAgZmluYWwgTG9jYWxEYXRlIGRhdGUgPSBMb2NhbERhdGUucGFyc2UoZmllbGRzWzBdKTsKICAgICAgICAgICAgZmluYWwgZG91YmxlIGF2Z1RlbXBlcmF0dXJlID0gRG91YmxlLnBhcnNlRG91YmxlKGZpZWxkc1sxXSk7CiAgICAgICAgICAgIC8vIFNraXBwaW5nIHVuY2VydGFpbnR5CiAgICAgICAgICAgIGZpbmFsIFN0cmluZyBjaXR5ID0gZmllbGRzWzNdOwogICAgICAgICAgICBmaW5hbCBTdHJpbmcgY291bnRyeSA9IGZpZWxkc1s0XTsKICAgICAgICAgICAgZmluYWwgZG91YmxlIGxhdGl0dWRlID0gRG91YmxlLnBhcnNlRG91YmxlKGZpZWxkc1s1XS5zdWJzdHJpbmcoMCwgZmllbGRzWzVdLmxlbmd0aCgpIC0gMSkpOwogICAgICAgICAgICBmaW5hbCBkb3VibGUgbG9uZ2l0dWRlID0gRG91YmxlLnBhcnNlRG91YmxlKGZpZWxkc1s2XS5zdWJzdHJpbmcoMCwgZmllbGRzWzZdLmxlbmd0aCgpIC0gMSkpOwogICAgICAgICAgICByZXR1cm4gbmV3IFRlbXBlcmF0dXJlKGRhdGUsIGF2Z1RlbXBlcmF0dXJlLCBjaXR5LCBjb3VudHJ5LCBsYXRpdHVkZSwgbG9uZ2l0dWRlKTsKICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICB9OwoKICAKfQ==
compilation info
Main.java:15: error: class Temperatures is public, should be declared in a file named Temperatures.java
public abstract class Temperatures {
^
Main.java:16: error: cannot find symbol
protected List<Temperature> data;
^
symbol: class Temperature
location: class Temperatures
Main.java:22: error: cannot find symbol
public Stream<Temperature> stream() {
^
symbol: class Temperature
location: class Temperatures
Main.java:26: error: cannot find symbol
static private List<Temperature> parseCsvFile(final File csvFile) {
^
symbol: class Temperature
location: class Temperatures
Main.java:37: error: cannot find symbol
static private Function<String, Temperature> lineToTemperature = (line) -> {
^
symbol: class Temperature
location: class Temperatures
Main.java:47: error: cannot find symbol
return new Temperature(date, avgTemperature, city, country, latitude, longitude);
^
symbol: class Temperature
location: class Temperatures
6 errors
stdout