Java tutorial
/* * Copyright 2014 ParanoidAndroid Project * * This file is part of Paranoid OTA. * * Paranoid OTA is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Paranoid OTA is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Paranoid OTA. If not, see <http://www.gnu.org/licenses/>. */ package com.chintans.venturebox.server; import com.chintans.venturebox.updater.Server; import com.chintans.venturebox.updater.UpdatePackage; import com.chintans.venturebox.updater.Updater; import com.chintans.venturebox.updater.Updater.PackageInfo; import com.chintans.venturebox.util.Version; import org.json.JSONArray; import org.json.JSONObject; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class VentureServer implements Server { private static final String URL = "http://api.venturerom.com/updates/%s"; private String mDevice = null; private String mError = null; private Version mVersion; @Override public String getUrl(String device, Version version) { mDevice = device; mVersion = version; return String.format(URL, new Object[] { device }); } @Override public List<PackageInfo> createPackageInfoList(JSONObject response) throws Exception { mError = null; List<PackageInfo> list = new ArrayList<PackageInfo>(); mError = response.optString("error"); if (mError == null || mError.isEmpty()) { JSONArray updates = response.getJSONArray("updates"); for (int i = updates.length() - 1; i >= 0; i--) { JSONObject file = updates.getJSONObject(i); String filename = file.optString("name"); String stripped = filename.replace(".zip", ""); String[] parts = stripped.split("-"); boolean isNew = parts[parts.length - 1].matches("[-+]?\\d*\\.?\\d+"); if (!isNew) { continue; } Version version = new Version(filename); if (Version.compare(mVersion, version) < 0) { list.add(new UpdatePackage(mDevice, filename, version, file.getString("size"), file.getString("url"), file.getString("md5"), false)); } } } Collections.sort(list, new Comparator<PackageInfo>() { @Override public int compare(Updater.PackageInfo lhs, Updater.PackageInfo rhs) { return Version.compare(lhs.getVersion(), rhs.getVersion()); } }); Collections.reverse(list); return list; } @Override public String getError() { return mError; } }