aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorMichael Keppler <michael.keppler@gmx.de>2014-04-28 09:04:29 +0200
committerMichael Keppler <michael.keppler@gmx.de>2014-04-28 09:04:29 +0200
commite9fdf1928397d2f31bc5f94030fe4f546c195cfe (patch)
tree2fdabf0e42f622bb6082627f31bda7a0fb3470c3 /main
parent35358ed4fe5ecd28033f6b5a6f1f723eaf2acf5a (diff)
parentc1e5ee007e857460cd5b430a92bfa1b919de4931 (diff)
downloadcgeo-e9fdf1928397d2f31bc5f94030fe4f546c195cfe.zip
cgeo-e9fdf1928397d2f31bc5f94030fe4f546c195cfe.tar.gz
cgeo-e9fdf1928397d2f31bc5f94030fe4f546c195cfe.tar.bz2
Merge remote-tracking branch 'origin/release'
Conflicts: main/src/cgeo/geocaching/DataStore.java
Diffstat (limited to 'main')
-rw-r--r--main/src/cgeo/geocaching/DataStore.java82
-rw-r--r--main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java14
2 files changed, 54 insertions, 42 deletions
diff --git a/main/src/cgeo/geocaching/DataStore.java b/main/src/cgeo/geocaching/DataStore.java
index 0adefb8..32a4b64 100644
--- a/main/src/cgeo/geocaching/DataStore.java
+++ b/main/src/cgeo/geocaching/DataStore.java
@@ -23,6 +23,7 @@ import cgeo.geocaching.utils.Log;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jdt.annotation.NonNull;
@@ -833,18 +834,20 @@ public class DataStore {
* introduced with release on 2012-05-24.
*/
private static void removeDoubleUnderscoreMapFiles() {
- File[] geocodeDirs = LocalStorage.getStorage().listFiles();
- final FilenameFilter filter = new FilenameFilter() {
- @Override
- public boolean accept(File dir, String filename) {
- return filename.startsWith("map_") && filename.contains("__");
- }
- };
- for (final File dir : geocodeDirs) {
- final File[] wrongFiles = dir.listFiles(filter);
- if (wrongFiles != null) {
- for (final File wrongFile : wrongFiles) {
- FileUtils.deleteIgnoringFailure(wrongFile);
+ final File[] geocodeDirs = LocalStorage.getStorage().listFiles();
+ if (ArrayUtils.isNotEmpty(geocodeDirs)) {
+ final FilenameFilter filter = new FilenameFilter() {
+ @Override
+ public boolean accept(File dir, String filename) {
+ return filename.startsWith("map_") && filename.contains("__");
+ }
+ };
+ for (final File dir : geocodeDirs) {
+ final File[] wrongFiles = dir.listFiles(filter);
+ if (wrongFiles != null) {
+ for (final File wrongFile : wrongFiles) {
+ FileUtils.deleteIgnoringFailure(wrongFile);
+ }
}
}
}
@@ -865,43 +868,48 @@ public class DataStore {
* the read-write database to use
*/
private static void removeObsoleteCacheDirectories(final SQLiteDatabase db) {
- final Pattern oldFilePattern = Pattern.compile("^[GC|TB|EC|GK|O][A-Z0-9]{4,7}$");
- final SQLiteStatement select = db.compileStatement("select count(*) from " + dbTableCaches + " where geocode = ?");
final File[] files = LocalStorage.getStorage().listFiles();
- final ArrayList<File> toRemove = new ArrayList<File>(files.length);
- for (final File file : files) {
- if (file.isDirectory()) {
- final String geocode = file.getName();
- if (oldFilePattern.matcher(geocode).find()) {
- select.bindString(1, geocode);
- if (select.simpleQueryForLong() == 0) {
- toRemove.add(file);
+ if (ArrayUtils.isNotEmpty(files)) {
+ final Pattern oldFilePattern = Pattern.compile("^[GC|TB|EC|GK|O][A-Z0-9]{4,7}$");
+ final SQLiteStatement select = db.compileStatement("select count(*) from " + dbTableCaches + " where geocode = ?");
+ final ArrayList<File> toRemove = new ArrayList<File>(files.length);
+ for (final File file : files) {
+ if (file.isDirectory()) {
+ final String geocode = file.getName();
+ if (oldFilePattern.matcher(geocode).find()) {
+ select.bindString(1, geocode);
+ if (select.simpleQueryForLong() == 0) {
+ toRemove.add(file);
+ }
}
}
}
- }
- // Use a background thread for the real removal to avoid keeping the database locked
- // if we are called from within a transaction.
- new Thread(new Runnable() {
- @Override
- public void run() {
- for (final File dir : toRemove) {
- Log.i("Removing obsolete cache directory for " + dir.getName());
- LocalStorage.deleteDirectory(dir);
+ // Use a background thread for the real removal to avoid keeping the database locked
+ // if we are called from within a transaction.
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ for (final File dir : toRemove) {
+ Log.i("Removing obsolete cache directory for " + dir.getName());
+ LocalStorage.deleteDirectory(dir);
+ }
}
- }
- }).start();
+ }).start();
+ }
}
/*
* Remove empty directories created in the secondary storage area.
*/
private static void removeSecEmptyDirs() {
- for (final File file : LocalStorage.getStorageSec().listFiles()) {
- if (file.isDirectory()) {
- // This will silently fail if the directory is not empty.
- FileUtils.deleteIgnoringFailure(file);
+ final File[] files = LocalStorage.getStorageSec().listFiles();
+ if (ArrayUtils.isNotEmpty(files)) {
+ for (final File file : files) {
+ if (file.isDirectory()) {
+ // This will silently fail if the directory is not empty.
+ FileUtils.deleteIgnoringFailure(file);
+ }
}
}
}
diff --git a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java
index c5ef40c..9f09991 100644
--- a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java
+++ b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapProvider.java
@@ -12,6 +12,7 @@ import cgeo.geocaching.maps.mapsforge.v024.MapsforgeMapItemFactory024;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.Log;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.mapsforge.android.maps.mapgenerator.MapGeneratorInternal;
import org.mapsforge.map.reader.MapDatabase;
@@ -59,14 +60,17 @@ public final class MapsforgeMapProvider extends AbstractMapProvider {
if (directory.isDirectory()) {
try {
ArrayList<String> mapFileList = new ArrayList<String>();
- for (File file : directory.listFiles()) {
- if (file.getName().endsWith(".map")) {
- if (MapsforgeMapProvider.isValidMapFile(file.getAbsolutePath())) {
- mapFileList.add(file.getAbsolutePath());
+ final File[] files = directory.listFiles();
+ if (ArrayUtils.isNotEmpty(files)) {
+ for (File file : files) {
+ if (file.getName().endsWith(".map")) {
+ if (MapsforgeMapProvider.isValidMapFile(file.getAbsolutePath())) {
+ mapFileList.add(file.getAbsolutePath());
+ }
}
}
+ Collections.sort(mapFileList, String.CASE_INSENSITIVE_ORDER);
}
- Collections.sort(mapFileList, String.CASE_INSENSITIVE_ORDER);
return mapFileList;
} catch (Exception e) {
Log.e("MapsforgeMapProvider.getOfflineMaps: ", e);