/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package neembuu.release1.versioning; import java.util.Date; import java.util.logging.Level; import neembuu.release1.app.Application; import davidepastore.StringUtils; import neembuu.release1.api.log.LoggerUtil; import neembuu.release1.api.ui.MainComponent; import neembuu.release1.settings.OnlineSettingImpl; /** This thread checks for new updates at every launch. * * @author vigneshwaran */ public class CheckUpdate extends Thread { private final MainComponent mc; public CheckUpdate(MainComponent mc) { this.mc = mc; } public static void checkLater(MainComponent mc){ CheckUpdate cu = new CheckUpdate(mc); cu.start(); } //variables to store current and available version static long availablever, currentver; static Date availableDate(){ return d(availablever); } static Date currentDate(){ return d(currentver); } /** * * @return whether the Neembuu is uptodate or not. If not, launch Update Notification window.. */ public boolean isCurrentVersion() { //Get the version.xml and read the version value. LoggerUtil.L().info("Checking for new version..."); try { String respxml = OnlineSettingImpl.getRaw("version.xml"); if(respxml==null)return true; availablever = getReleaseDateFromXML(respxml); LoggerUtil.L().log(Level.INFO, "Available version: {0}", d(availablever)); currentver = Application.releaseTime(); LoggerUtil.L().log(Level.INFO, "Current version: {0}", d(currentver)); //Compare both if (availablever > currentver) { return false; } } catch (Exception ex) { LoggerUtil.L().log(Level.INFO, "Exception while checking update\n{0}", ex); } return true; } /** * * @param str * @return the value between <version> and </version> tags from the specified string. */ public static long getReleaseDateFromXML(String str) { long ver = 0; String valStr = StringUtils.getSimpleXMLData(str, "releasedate"); try { ver = Long.parseLong(valStr); } catch (Exception any) { LoggerUtil.L().severe(any.toString()); } return ver; } @Override public void run() { if (!(isCurrentVersion())) { LoggerUtil.L().info("New version found.."); new NotifyUpdate(mc).setVisible(true); } } private static Date d(long t){ return new Date(t); } }