data.GoogleActDataGetter.java Source code

Java tutorial

Introduction

Here is the source code for data.GoogleActDataGetter.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package data;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.stream.JsonReader;
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;

/**
 *
 * @author Muhe
 */
public class GoogleActDataGetter {

    private final static Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);

    private class DataGSON {
        private String t;
        private String l;
    }

    /*public class StockValue {
    public String tickerSymbol;
    public double value;
    }*/

    public double readActualData(String tickerSymbol) throws IOException, NumberFormatException {
        StringBuilder urlBuilder = new StringBuilder();

        urlBuilder.append("http://finance.google.com/finance/info?client=ig&q=");

        urlBuilder.append(tickerSymbol);

        URL urlGoogle = new URL(urlBuilder.toString());
        BufferedReader in = new BufferedReader(new InputStreamReader(urlGoogle.openStream()));

        in.skip(3);

        Gson gson = new GsonBuilder().create();
        JsonReader reader = new JsonReader(in);
        reader.setLenient(true);
        DataGSON[] p = gson.fromJson(reader, DataGSON[].class);

        in.close();

        return Double.parseDouble(p[0].l.replaceAll(",", ""));
    }

    public Map<String, Double> readActualData(String[] tickerSymbols) throws IOException, NumberFormatException {
        StringBuilder urlBuilder = new StringBuilder();

        urlBuilder.append("http://finance.google.com/finance/info?client=ig&q=");

        for (String tickerSymbol : tickerSymbols) {
            urlBuilder.append(tickerSymbol);
            urlBuilder.append(",");
        }
        urlBuilder.deleteCharAt(urlBuilder.length() - 1); //remove last ,

        URL urlGoogle = new URL(urlBuilder.toString());
        BufferedReader in = new BufferedReader(new InputStreamReader(urlGoogle.openStream()));

        in.skip(3);

        Gson gson = new GsonBuilder().create();
        JsonReader reader = new JsonReader(in);
        reader.setLenient(true);
        DataGSON[] dataFromGSON = gson.fromJson(reader, DataGSON[].class);

        in.close();

        Map<String, Double> valuesMap;
        valuesMap = new HashMap(dataFromGSON.length);

        for (DataGSON entryGSON : dataFromGSON) {
            String tickerSymbol = entryGSON.t;
            String strValue = entryGSON.l.replaceAll(",", "");
            valuesMap.put(tickerSymbol, Double.parseDouble(strValue));
        }

        return valuesMap;
    }
}