Created
September 14, 2015 20:16
-
-
Save davidrobert/d8b6bb9a9224162e728c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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