Skip to content

Instantly share code, notes, and snippets.

@davidrobert
Created September 14, 2015 20:16
Show Gist options
  • Save davidrobert/d8b6bb9a9224162e728c to your computer and use it in GitHub Desktop.
Save davidrobert/d8b6bb9a9224162e728c to your computer and use it in GitHub Desktop.
package br.com.while42.fipe2sql;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.Calendar;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Main {
public static void main(String[] args) throws JSONException, IOException {
// Recupera todas as marcas
JSONArray jsonMarcas = readJsonArrayFromUrl("http://fipeapi.appspot.com/api/1/motos/marcas.json");
for (int idxMarca = 0; idxMarca < jsonMarcas.length(); idxMarca++) {
JSONObject objMarca = jsonMarcas.getJSONObject(idxMarca);
String marca = objMarca.get("name").toString();
String idMarca = objMarca.get("id").toString();
// System.out.println("ID: " + idMarca + " MARCA: " + marca);
// Recupera todos os modelos de cada marca
JSONArray jsonVeiculo = readJsonArrayFromUrl("http://fipeapi.appspot.com/api/1/motos/veiculos/" + idMarca
+ ".json");
for (int idxVeiculo = 0; idxVeiculo < jsonVeiculo.length(); idxVeiculo++) {
JSONObject objVeiculo = jsonVeiculo.getJSONObject(idxVeiculo);
String idVeiculo = objVeiculo.get("id").toString();
try {
// Recupera todos os modelos (ano) de cada veiculo
JSONArray jsonModelo = readJsonArrayFromUrl("http://fipeapi.appspot.com/api/1/motos/veiculo/"
+ idMarca + "/" + idVeiculo + ".json");
for (int idxModelo = 0; idxModelo < jsonModelo.length(); idxModelo++) {
JSONObject objModelo = jsonModelo.getJSONObject(idxModelo);
String idModelo = objModelo.get("id").toString();
try {
// Recupera os detalhes de cada modelo
String urlDetalhes = "http://fipeapi.appspot.com/api/1/motos/veiculo/" + idMarca + "/"
+ idVeiculo + "/" + idModelo + ".json";
JSONObject objDetalhes = readJsonFromUrl(urlDetalhes);
String id = objDetalhes.get("id").toString();
String ano = objDetalhes.get("ano_modelo").toString();
String nomeMarca = objDetalhes.get("marca").toString();
String nome = objDetalhes.get("name").toString();
String preco = objDetalhes.get("preco").toString();
String fipeCodigo = objDetalhes.getString("fipe_codigo").toString();
if (Integer.parseInt(ano) > Calendar.getInstance().get(Calendar.YEAR)) {
ano = "zero";
}
String sql = "INSERT INTO Modelo (id, , id_marca, id_veiculo, id_modelo, marca, nome, ano, preco, fipe_codigo) VALUE ("
+ "\""
+ id
+ "\", \""
+ idMarca
+ "\", \""
+ idVeiculo
+ "\", \""
+ idModelo
+ "\", \""
+ nomeMarca
+ "\", \""
+ nome
+ "\", \""
+ ano
+ "\", \""
+ preco
+ "\", \""
+ fipeCodigo
+ "\");";
System.out.println("-- url: " + urlDetalhes);
System.out.println(sql);
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
private static String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONObject json = new JSONObject(jsonText);
return json;
} finally {
is.close();
}
}
public static JSONArray readJsonArrayFromUrl(String url) throws IOException, JSONException {
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONArray json = new JSONArray(jsonText);
return json;
} finally {
is.close();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment