Package UtilServices

Source Code of UtilServices.Weather

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package UtilServices;

import UtilClasses.Forecast;
import UtilClasses.PrevisaoMetereologica;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.LinkedHashSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;

/**
*
* @author LAP01
*/
public class Weather {
   
   
     public static PrevisaoMetereologica getWeatherByRegion(String region) {
       
        try {
           
            PrevisaoMetereologica previsao = new PrevisaoMetereologica();
            LinkedHashSet<Forecast> forecasts = new LinkedHashSet<Forecast>();

            URL url = new URL("http://www.google.com/ig/api?weather=Aveiro&hl=pt-pt");
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
           
            XMLInputFactory inputFactory = XMLInputFactory.newInstance();
            inputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, true);

            XMLStreamReader streamReader = inputFactory.createXMLStreamReader(in);
           
            do{              
                int eventType = streamReader.next();

                if( eventType == XMLStreamConstants.START_ELEMENT ){
                   
                    //Current conditions
                    if( streamReader.getLocalName().equals("current_conditions") ){    
                        previsao = readCurrentConditions(streamReader);                     
                    }                 
                    //Forecasts
                    else if( streamReader.getLocalName().equals("forecast_conditions") ){
                        forecasts.add( readForecast(streamReader) );
                    }
                   
                }
               
            }while( streamReader.hasNext() );
           
            previsao.setForecasts(forecasts);
                       
            return previsao;
           
        } catch (XMLStreamException ex) {
            Logger.getLogger(Weather.class.getName()).log(Level.SEVERE, null, ex);
        } catch (MalformedURLException ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace(System.out);
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace(System.out);
        }
        return null;
    }
    
    private static PrevisaoMetereologica readCurrentConditions(XMLStreamReader streamReader) throws XMLStreamException {
       
        PrevisaoMetereologica previsao = new PrevisaoMetereologica();
        int eventType = 0;
       
        do{
                          
            eventType = streamReader.next();
          
            if( eventType == XMLStreamConstants.START_ELEMENT  ){

                if( streamReader.getLocalName().equals("condition") ){

                    previsao.setCondicao(streamReader.getAttributeValue(null,"data"));
                }
                else if( streamReader.getLocalName().equals("temp_c") ){
                    previsao.setTemperatura(streamReader.getAttributeValue(null,"data"));
                }
                else if( streamReader.getLocalName().equals("humidity") ){
                    previsao.setHumidade(streamReader.getAttributeValue(null,"data"));
                }
                else if( streamReader.getLocalName().equals("icon") ){
                    previsao.setIcon(streamReader.getAttributeValue(null,"data"));
                }
                else if( streamReader.getLocalName().equals("wind_condition") ){
                    previsao.setCondicao_vento(streamReader.getAttributeValue(null,"data"));
                }
               
            }
           
        } while( streamReader.hasNext()
            && !( eventType == XMLStreamConstants.END_ELEMENT && streamReader.getLocalName().equals("current_conditions") )          
        );
       
       
        return previsao;
    }
   
   
    private static Forecast readForecast(XMLStreamReader streamReader) throws XMLStreamException {
       
        Forecast forecast = new Forecast();
        int eventType = 0;
       
        do{
                          
            eventType = streamReader.next();
           
            if( eventType == XMLStreamConstants.START_ELEMENT ){
                if( streamReader.getLocalName().equals("day_of_week") ){
                    forecast.setDia(streamReader.getAttributeValue(null,"data"));
                }
                else if( streamReader.getLocalName().equals("low") ){
                    forecast.setMin( streamReader.getAttributeValue(null,"data") );
                }
                else if( streamReader.getLocalName().equals("high") ){
                    forecast.setMax( streamReader.getAttributeValue(null,"data") );
                }
                else if( streamReader.getLocalName().equals("icon") ){
                    forecast.setIcon( streamReader.getAttributeValue(null,"data") );
                }
                else if( streamReader.getLocalName().equals("condition") ){
                    forecast.setCondicao( streamReader.getAttributeValue(null,"data") );
                }
            }
        } while( streamReader.hasNext()
            && !( eventType == XMLStreamConstants.END_ELEMENT && streamReader.getLocalName().equals("forecast_conditions") )
        );
       
        return forecast;
    }
   
}
TOP

Related Classes of UtilServices.Weather

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.