control update for serverconfig
This commit is contained in:
parent
fc22892a66
commit
4c2bf8f8bf
2 changed files with 104 additions and 8 deletions
|
@ -287,10 +287,17 @@ public class DownloadWorker extends Worker {
|
||||||
String profileLocation = mServerConfig.getProfilesUrl() + fileName;
|
String profileLocation = mServerConfig.getProfilesUrl() + fileName;
|
||||||
URL profileUrl = new URL(profileLocation);
|
URL profileUrl = new URL(profileLocation);
|
||||||
int size = (int) (profileFile.exists() ? profileFile.length() : 0);
|
int size = (int) (profileFile.exists() ? profileFile.length() : 0);
|
||||||
|
|
||||||
|
try {
|
||||||
downloadProgressListener.onDownloadStart(fileName, DownloadType.PROFILE);
|
downloadProgressListener.onDownloadStart(fileName, DownloadType.PROFILE);
|
||||||
downloadFile(profileUrl, profileFile, size, false, DownloadType.PROFILE);
|
downloadFile(profileUrl, profileFile, size, false, DownloadType.PROFILE);
|
||||||
downloadProgressListener.onDownloadFinished();
|
downloadProgressListener.onDownloadFinished();
|
||||||
done.add(profileUrl);
|
done.add(profileUrl);
|
||||||
|
} catch (IOException e) {
|
||||||
|
// no need to block other updates
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
throw new RuntimeException(e.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,20 @@
|
||||||
package btools.routingapp;
|
package btools.routingapp;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.res.AssetManager;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.zip.ZipEntry;
|
||||||
|
import java.util.zip.ZipInputStream;
|
||||||
|
|
||||||
public class ServerConfig {
|
public class ServerConfig {
|
||||||
|
private static String mServerConfigName = "serverconfig.txt";
|
||||||
|
|
||||||
private String mSegmentUrl = "https://brouter.de/brouter/segments4/";
|
private String mSegmentUrl = "https://brouter.de/brouter/segments4/";
|
||||||
private String mLookupsUrl = "https://brouter.de/brouter/profiles2/";
|
private String mLookupsUrl = "https://brouter.de/brouter/profiles2/";
|
||||||
private String mProfilesUrl = "https://brouter.de/brouter/profiles2/";
|
private String mProfilesUrl = "https://brouter.de/brouter/profiles2/";
|
||||||
|
@ -16,10 +23,19 @@ public class ServerConfig {
|
||||||
private String[] mProfiles = new String[0];
|
private String[] mProfiles = new String[0];
|
||||||
|
|
||||||
public ServerConfig(Context ctx) {
|
public ServerConfig(Context ctx) {
|
||||||
File configFile = new File(ConfigHelper.getBaseDir(ctx), "/brouter/segments4/serverconfig.txt");
|
File configFile = new File(ConfigHelper.getBaseDir(ctx), "/brouter/segments4/" + mServerConfigName);
|
||||||
if (configFile.exists()) {
|
readConfigFile(configFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerConfig(Context context, File file) {
|
||||||
|
readConfigFile(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void readConfigFile(File file) {
|
||||||
|
if (file.exists()) {
|
||||||
|
BufferedReader br = null;
|
||||||
try {
|
try {
|
||||||
BufferedReader br = new BufferedReader(new FileReader(configFile));
|
br = new BufferedReader(new FileReader(file));
|
||||||
for (; ; ) {
|
for (; ; ) {
|
||||||
String line = br.readLine();
|
String line = br.readLine();
|
||||||
if (line == null) break;
|
if (line == null) break;
|
||||||
|
@ -35,12 +51,85 @@ public class ServerConfig {
|
||||||
mProfiles = line.substring(15).split(",");
|
mProfiles = line.substring(15).split(",");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
br.close();
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (br != null) br.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void checkForUpdate(Context context, File path, String assetZip) {
|
||||||
|
if (assetZip != null) {
|
||||||
|
writeTmpFromAsset(context, path, assetZip);
|
||||||
|
|
||||||
|
File configFileOld = new File(ConfigHelper.getBaseDir(context), "/brouter/segments4/" + mServerConfigName);
|
||||||
|
File configFileNew = new File(ConfigHelper.getBaseDir(context), "/brouter/segments4/" + mServerConfigName + ".tmp");
|
||||||
|
if (configFileOld.length() != configFileNew.length()) {
|
||||||
|
ServerConfig serverConfigOld = new ServerConfig(context, configFileOld);
|
||||||
|
ServerConfig serverConfigNew = new ServerConfig(context, configFileNew);
|
||||||
|
if (serverConfigOld.getSegmentUrl().equals(serverConfigNew.getSegmentUrl()) &&
|
||||||
|
serverConfigOld.getProfilesUrl().equals(serverConfigNew.getProfilesUrl()) &&
|
||||||
|
serverConfigOld.getLookupUrl().equals(serverConfigNew.getLookupUrl())
|
||||||
|
) {
|
||||||
|
// replace when servers wasn't changed
|
||||||
|
configFileOld.delete();
|
||||||
|
configFileNew.renameTo(configFileOld);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
configFileNew.delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void writeTmpFromAsset(Context context, File path, String assetZip) {
|
||||||
|
InputStream is = null;
|
||||||
|
try {
|
||||||
|
AssetManager assetManager = context.getAssets();
|
||||||
|
is = assetManager.open(assetZip);
|
||||||
|
ZipInputStream zis = new ZipInputStream(is);
|
||||||
|
byte[] data = new byte[1024];
|
||||||
|
for (; ; ) {
|
||||||
|
ZipEntry ze = zis.getNextEntry();
|
||||||
|
if (ze == null)
|
||||||
|
break;
|
||||||
|
if (ze.isDirectory()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String name = ze.getName();
|
||||||
|
if (name.equals(mServerConfigName)) {
|
||||||
|
File outfile = new File(path, name + ".tmp");
|
||||||
|
if (!outfile.exists() && outfile.getParentFile() != null) {
|
||||||
|
outfile.getParentFile().mkdirs();
|
||||||
|
FileOutputStream fos = new FileOutputStream(outfile);
|
||||||
|
|
||||||
|
for (; ; ) {
|
||||||
|
int len = zis.read(data, 0, 1024);
|
||||||
|
if (len < 0)
|
||||||
|
break;
|
||||||
|
fos.write(data, 0, len);
|
||||||
|
}
|
||||||
|
fos.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
zis.closeEntry();
|
||||||
|
}
|
||||||
|
zis.close();
|
||||||
|
} catch (IOException io) {
|
||||||
|
throw new RuntimeException("error expanding " + assetZip + ": " + io);
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (is != null) is.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSegmentUrl() {
|
public String getSegmentUrl() {
|
||||||
|
|
Loading…
Reference in a new issue