package com.nutiteq.advancedmap3; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.FutureTask; public class GetCartoDBLayerGroupID { private URL url; private HttpURLConnection conn; private BufferedReader reader; public String getLayerGroupID(URL url) throws InterruptedException, ExecutionException { this.url = url; ExecutorService exService = Executors.newSingleThreadExecutor(); FutureTask<String> futureTask = new FutureTask<String>( new GetIDTask()); exService.execute(futureTask); return futureTask.get(); } class GetIDTask implements Callable<String> { public String call() { String layerGroupID = ""; try { conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(30000); conn.setReadTimeout(30000); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.connect(); reader = new BufferedReader(new InputStreamReader( conn.getInputStream(), "UTF-8"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } String result = sb.toString(); JSONObject json = new JSONObject(result); layerGroupID = json.getString("layergroupid"); if (layerGroupID == null) { layerGroupID = ""; } } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } finally { if (conn != null) { conn.disconnect(); } if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return layerGroupID; } } }