package net.pms.update;
import java.io.IOException;
import net.pms.util.PmsProperties;
import net.pms.util.Version;
/**
* Data provided by the server for us to update with. Must be synchronized externally.
*
* @author Tim Cox (mail@tcox.org)
*/
public class AutoUpdaterServerProperties {
private static final String KEY_LATEST_VERSION = "LatestVersion";
private static final String DEFAULT_LATEST_VERSION = "0";
private static final String KEY_DOWNLOAD_URL = "DownloadUrl";
private static final String DEFAULT_DOWNLOAD_URL = "";
private final PmsProperties properties = new PmsProperties();
private final OperatingSystem operatingSystem = new OperatingSystem();
public void loadFrom(byte[] data) throws IOException {
properties.clear();
properties.loadFromByteArray(data);
}
public boolean isStateValid() {
return getDownloadUrl().length() > 0 && getLatestVersion().isGreaterThan(new Version("0"));
}
public Version getLatestVersion() {
return new Version(getStringWithDefault(KEY_LATEST_VERSION, DEFAULT_LATEST_VERSION));
}
public String getDownloadUrl() {
return getStringWithDefault(KEY_DOWNLOAD_URL, DEFAULT_DOWNLOAD_URL);
}
private String getStringWithDefault(String key, String defaultValue) {
String platformSpecificKey = getPlatformSpecificKey(key);
if (properties.containsKey(platformSpecificKey)) {
return properties.get(platformSpecificKey);
} else if (properties.containsKey(key)) {
return properties.get(key);
} else {
return defaultValue;
}
}
private String getPlatformSpecificKey(String key) {
return key + "." + operatingSystem.getPlatformName();
}
}