package org.panbox.desktop.common.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import org.apache.log4j.Logger;
import org.panbox.OS;
import org.panbox.desktop.common.PanboxDesktopConstants;
public class VersionUtils {
private final static Logger logger = Logger.getLogger(VersionUtils.class);
public static boolean isNewerVersionAvailable() {
byte[] currentVersion = formatVersionString(getVersion());
byte[] remoteVersion = formatVersionString(getRemoteVersion(OS.getOperatingSystem()));
for (int i = 0; i < 3; i++) {
if (remoteVersion[i] > currentVersion[i]) {
return true;
}
}
return false;
}
public static byte[] formatVersionString(String version) {
byte[] formatVersion = new byte[3];
String[] versionStringParts = version.split("\\.");
if (versionStringParts.length != 3) {
return new byte[] { 0, 0, 0 };
}
for (int i = 0; i < 3; i++) {
formatVersion[i] = Byte.parseByte(versionStringParts[i]);
}
return formatVersion;
}
public static String getVersion() {
String ret = "";
for (int i = 0; i < PanboxDesktopConstants.PANBOX_VERSION.length; i++) {
ret += (char) PanboxDesktopConstants.PANBOX_VERSION[i];
}
return ret;
}
public static String getRemoteVersion(OS.OperatingSystem os) {
String filename = "VERSION";
switch (os) {
case WIN32:
filename = "VERSION.win32";
break;
case LINUX32:
case LINUX64:
filename = "VERSION.linux";
break;
case ANDROID:
filename = "VERSION.android";
break;
case OSX32:
// TODO: Add later on MacOSX support
return "0.0.0";
}
URL url;
try {
url = new URL("https://raw.githubusercontent.com/Sirrix-AG/PanBox/master/" + filename);
URLConnection uc = url.openConnection();
InputStreamReader input = new InputStreamReader(uc.getInputStream());
BufferedReader in = new BufferedReader(input);
String inputLine = in.readLine();
if (inputLine != null) {
logger.debug("VersionUtils : getRemoteVersion : Found remote version: " + inputLine);
return inputLine;
}
} catch (IOException e) {
logger.error("VersionUtils : getRemoteVersion : Error while reading remote version.", e);
}
return "0.0.0";
}
}