package com.qksnap.www.snap.autoupdater; import java.io.BufferedReader; import java.io.File; 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.ArrayList; import java.util.List; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.JSONValue; import com.qksnap.www.snap.gui.SplashScreen; import com.qksnap.www.snap.gui.events.Download; import com.qksnap.www.snap.gui.events.Download.DownloadType; import com.qksnap.www.snap.util.Config; public class Updater { /** * Start our setup for checking for updates. * @param frame */ private String serverVer; public Updater() { init(); } /** Begin checking for updates **/ private void init() { getJson(); SplashScreen.getSingleton().drawText(0,"Checking Launcher Version."); if (launcherUpdateNeeded()) { System.out.println("yes" + Config.currentVersion + " " + serverVer); new Download().startDownload(DownloadType.LAUNCHER); } } /** Is a launcher update needed? **/ private boolean launcherUpdateNeeded() { return !Config.currentVersion.equals(serverVer); } private void getJson(){ JSONObject jsonObject; try { jsonObject = readJsonFromUrl(Config.JSON_LINK); serverVer = (String) jsonObject.get("launchv"); List<String> dlLinks = new ArrayList<String>(); JSONArray array = (JSONArray)jsonObject.get("contents"); for (int i=0; i < array.size(); i++) { JSONObject list = (JSONObject) ((JSONObject)array.get(i)); dlLinks.add(list.get("link").toString()); } Config.setDLLinks(dlLinks); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private 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 JSONObject readJsonFromUrl(String url) throws IOException { InputStream is = new URL(url).openStream(); try { BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); String jsonText = readAll(rd); JSONObject jsonObject = (JSONObject) JSONValue.parse(jsonText); return jsonObject; } finally { is.close(); } } }