Skip to content

Commit a44deaf

Browse files
committed
fix for deleting the last layer in a geopackage not reloading the geopackage detail view
1 parent 3ccce42 commit a44deaf

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

mapcache/src/main/java/mil/nga/mapcache/GeoPackageMapFragment.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1028,7 +1028,7 @@ public void onClick(boolean active, GeoPackageTable table) {
10281028
}
10291029
};
10301030

1031-
// Listener to forward a button click layer detail page to the appropriate dialog function
1031+
// (Delete) Listener to forward a button click layer detail page to the appropriate dialog function
10321032
DetailActionListener detailActionListener = new DetailActionListener(){
10331033
@Override
10341034
public void onClick(View view, int actionType, String gpName, String layerName) {
@@ -1193,13 +1193,24 @@ public void onDeleteLayer(String gpName, String layerName){
11931193
// layers live data is updated
11941194

11951195

1196+
// Get current geopackage database object in case removing layer deletes the last layer of the gp
1197+
GeoPackageDatabase currentDb = geoPackageViewModel.getGeoByName(gpName);
1198+
GeoPackageTable removableTable = currentDb.getTableByName(layerName);
11961199

11971200
// First remove it from the active layers
11981201
geoPackageViewModel.removeActiveLayer(gpName, layerName);
11991202
// Ask the repository to delete the layer
12001203
GeoPackageDatabase db = geoPackageViewModel.removeLayerFromGeo(gpName, layerName);
12011204
if(db != null){
12021205
createGeoPackageDetailAdapter(db);
1206+
} else{
1207+
// If the layer that was deleted was the last one in the geopackage, the remove layer
1208+
// method will return null. In that case, use our original DB object with the deleted
1209+
// layer to populate the detail adapter view
1210+
if(currentDb != null && removableTable != null) {
1211+
currentDb.remove(removableTable);
1212+
createGeoPackageDetailAdapter(currentDb);
1213+
}
12031214
}
12041215
}
12051216

mapcache/src/main/java/mil/nga/mapcache/data/GeoPackageDatabases.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,10 @@ public void removeTable(GeoPackageTable table, boolean preserveOverlays) {
338338
if (database != null) {
339339
database.remove(table);
340340
removeTableFromPreferences(table);
341+
if (database.isEmpty()) {
342+
databases.remove(database.getDatabase());
343+
removeDatabaseFromPreferences(database.getDatabase(), preserveOverlays);
344+
}
341345
if (!preserveOverlays && table.getType() == GeoPackageTableType.FEATURE) {
342346
List<GeoPackageFeatureOverlayTable> deleteFeatureOverlays = new ArrayList<GeoPackageFeatureOverlayTable>();
343347
int count = 0;

0 commit comments

Comments
 (0)