From e9e7e21f155fa3f547d7acc8df6fb5ba1692a219 Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Fri, 3 Jan 2014 15:59:04 +0100 Subject: fix #3494: EC attributes disappear on refresh The lazy loading of attributes appeared after they had been removed from the database. --- main/src/cgeo/geocaching/DataStore.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'main/src/cgeo/geocaching/DataStore.java') diff --git a/main/src/cgeo/geocaching/DataStore.java b/main/src/cgeo/geocaching/DataStore.java index 662ce8b..4543451 100644 --- a/main/src/cgeo/geocaching/DataStore.java +++ b/main/src/cgeo/geocaching/DataStore.java @@ -1162,15 +1162,19 @@ public class DataStore { } private static void saveAttributesWithoutTransaction(final Geocache cache) { - String geocode = cache.getGeocode(); + final String geocode = cache.getGeocode(); + + // The attributes must be fetched first because lazy loading may load + // a null set otherwise. + final List attributes = cache.getAttributes(); database.delete(dbTableAttributes, "geocode = ?", new String[]{geocode}); - if (cache.getAttributes().isEmpty()) { + if (attributes.isEmpty()) { return; } SQLiteStatement statement = PreparedStatements.getInsertAttribute(); final long timestamp = System.currentTimeMillis(); - for (String attribute : cache.getAttributes()) { + for (final String attribute : attributes) { statement.bindString(1, geocode); statement.bindLong(2, timestamp); statement.bindString(3, attribute); -- cgit v1.1