Let's see how to build a simple class to retrieve weather information!
Usage demonstration
Our class will run passing the location of the station we want to observe as a parameter.
import it.octograve.weatherlib.*; public class SimpleWeatherViewer { private static void usage() { System.out.println( "USAGE: java SimpleWeatherViewer" ); System.out.println(); System.out.println( "\teg. java SimpleWeatherViewer Cambridge" ); } public static void main(String[] args) { if (args.length != 1) { usage(); System.exit(1); }
Then we ought to build a StationsList object, to hold all of available stations. The list is fetched from the net when invoking the fetchStationsList() method.
System.out.println("Fetching stations list ..."); StationsList list = null; try { list = StationsList.fetchStationsList(); } catch (WeatherException e) { System.err.println( "Unable to fetch stations list." ); System.exit(1); }
Now we could start to query the list, looking for the station at requested location.
String location = args[0]; Station station = list.getByLocation(location); if (station == null) { System.out.println("'" + location + "' is not a valid location"); usage(); System.exit(1); }
Once a Station object has been found, we could fetch/update its observed weather.
System.out.println("Fetching station's weather ..."); try { station.updateWeather(); } catch (WeatherException e) { System.err.println( "Unable to fetch station's weather." ); System.exit(1); }
At last, let's print some verbose informations.
System.out.println( "Weather informations for " + station.getLocation() ); System.out.println( station.getWeather().toVerboseString() ); } }
And this is what the program prints, providing "Cambridge" as argument.
Fetching stations list ... Fetching station's weather ... Weather informations for Cambridge Thu Jun 07 21:20:19 CEST 2007 Temperature: 13.0 �C DewPoint: 12.0 �C Pressure: 1020.0 MBARS Visibility: EQUALS_TO 8000 METERS Wind: 10 knots, direction NORTH Cloudiness: OVERCAST