From 7cb97b0e6bc70be1d84a8cfb51dcac28e75ec6aa Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sat, 6 Dec 2025 08:23:02 +0100 Subject: [PATCH] Cleanup: use try-with-resources. --- .../data/CustomSQLiteOpenHelperTest.java | 48 ++++++++++--------- .../file/importer/GPXTrackImporterTest.java | 22 ++++----- .../opentracks/ui/util/ThemeUtils.java | 26 ++++------ .../dennisguse/opentracks/util/FileUtils.java | 12 ++--- 4 files changed, 49 insertions(+), 59 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/data/CustomSQLiteOpenHelperTest.java b/src/androidTest/java/de/dennisguse/opentracks/data/CustomSQLiteOpenHelperTest.java index 289b969e7..864c61f1b 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/data/CustomSQLiteOpenHelperTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/data/CustomSQLiteOpenHelperTest.java @@ -100,18 +100,18 @@ public class CustomSQLiteOpenHelperTest { // Open database with SQL upgrade Map tableByUpgrade; Map indicesByUpgrade; - try (SQLiteDatabase dbUpgraded = new CustomSQLiteOpenHelper(context, DATABASE_NAME).getReadableDatabase()) { - tableByUpgrade = getSQL(dbUpgraded, "table"); - indicesByUpgrade = getSQL(dbUpgraded, "index"); + try (CustomSQLiteOpenHelper dbUpgraded = new CustomSQLiteOpenHelper(context, DATABASE_NAME)) { + tableByUpgrade = getSQL(dbUpgraded.getReadableDatabase(), "table"); + indicesByUpgrade = getSQL(dbUpgraded.getReadableDatabase(), "index"); } context.deleteDatabase(DATABASE_NAME); // Open database via creation script Map tablesByCreate; Map indicesByCreate; - try (SQLiteDatabase dbCreated = new CustomSQLiteOpenHelper(context, DATABASE_NAME).getReadableDatabase()) { - tablesByCreate = getSQL(dbCreated, "table"); - indicesByCreate = getSQL(dbCreated, "index"); + try (CustomSQLiteOpenHelper dbCreated = new CustomSQLiteOpenHelper(context, DATABASE_NAME)) { + tablesByCreate = getSQL(dbCreated.getReadableDatabase(), "table"); + indicesByCreate = getSQL(dbCreated.getReadableDatabase(), "index"); } @@ -134,14 +134,16 @@ public class CustomSQLiteOpenHelperTest { @Test public void onDowngrade_ToVersion23() { // Create most recent database schema - new CustomSQLiteOpenHelper(context, DATABASE_NAME).getReadableDatabase().close(); + try(CustomSQLiteOpenHelper db = new CustomSQLiteOpenHelper(context, DATABASE_NAME)) { + db.getReadableDatabase(); + } // Downgrade schema to version 23 (base version) Map tablesByDowngrade; Map indicesByDowngrade; - try (SQLiteDatabase db = new CustomSQLiteOpenHelper(context, DATABASE_NAME, 23).getReadableDatabase()) { - tablesByDowngrade = getSQL(db, "table"); - indicesByDowngrade = getSQL(db, "index"); + try (CustomSQLiteOpenHelper db = new CustomSQLiteOpenHelper(context, DATABASE_NAME, 23)) { + tablesByDowngrade = getSQL(db.getReadableDatabase(), "table"); + indicesByDowngrade = getSQL(db.getReadableDatabase(), "index"); } // then - verify table structure @@ -155,9 +157,9 @@ public class CustomSQLiteOpenHelperTest { @Test public void track_uuid_unique() { - try (SQLiteDatabase db = new CustomSQLiteOpenHelper(context, DATABASE_NAME).getWritableDatabase()) { - db.execSQL("INSERT INTO tracks (uuid) VALUES (0x00)"); - db.execSQL("INSERT INTO tracks (uuid) VALUES (0x00)"); + try (CustomSQLiteOpenHelper db = new CustomSQLiteOpenHelper(context, DATABASE_NAME)) { + db.getWritableDatabase().execSQL("INSERT INTO tracks (uuid) VALUES (0x00)"); + db.getWritableDatabase().execSQL("INSERT INTO tracks (uuid) VALUES (0x00)"); fail("unique constraint not enforced"); } catch (SQLiteConstraintException e) { assertTrue(e.getMessage().contains("UNIQUE constraint failed: tracks.uuid")); @@ -168,7 +170,8 @@ public class CustomSQLiteOpenHelperTest { public void upgrade_data_to_30() { // given: a track in version 29 createVersion23(); - try (SQLiteDatabase db29 = new CustomSQLiteOpenHelper(context, DATABASE_NAME, 29).getWritableDatabase()) { + try (CustomSQLiteOpenHelper db = new CustomSQLiteOpenHelper(context, DATABASE_NAME, 29)) { + SQLiteDatabase db29 = db.getWritableDatabase(); db29.beginTransaction(); db29.execSQL("INSERT INTO tracks (_id) VALUES (1)"); @@ -201,7 +204,8 @@ public class CustomSQLiteOpenHelperTest { } // when / then - try (SQLiteDatabase db30 = new CustomSQLiteOpenHelper(context, DATABASE_NAME, 30).getWritableDatabase()) { + try (CustomSQLiteOpenHelper db = new CustomSQLiteOpenHelper(context, DATABASE_NAME, 30)) { + SQLiteDatabase db30 = db.getWritableDatabase(); { // Track 1 SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder(); @@ -261,7 +265,7 @@ public class CustomSQLiteOpenHelperTest { private void createVersion23() { // Manually create database schema with version 23 (base version) - SQLiteDatabase dbBase = new SQLiteOpenHelper(context, DATABASE_NAME, null, 23) { + try(SQLiteOpenHelper dbBase = new SQLiteOpenHelper(context, DATABASE_NAME, null, 23) { @Override public void onCreate(SQLiteDatabase db) { } @@ -269,12 +273,10 @@ public class CustomSQLiteOpenHelperTest { @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } - }.getWritableDatabase(); - - dbBase.execSQL(TRACKS_CREATE_TABLE_V23); - dbBase.execSQL(TRACKPOINTS_CREATE_TABLE_V23); - dbBase.execSQL(WAYPOINTS_CREATE_TABLE_V23); - - dbBase.close(); + }) { + dbBase.getWritableDatabase().execSQL(TRACKS_CREATE_TABLE_V23); + dbBase.getWritableDatabase().execSQL(TRACKPOINTS_CREATE_TABLE_V23); + dbBase.getWritableDatabase().execSQL(WAYPOINTS_CREATE_TABLE_V23); + } } } \ No newline at end of file diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporterTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporterTest.java index 32f0b912a..bf0cd2d24 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporterTest.java @@ -314,19 +314,19 @@ public class GPXTrackImporterTest { // given XMLImporter importer = new XMLImporter(new GPXTrackImporter(context, trackImporter)); InputStream inputStream = InstrumentationRegistry.getInstrumentation().getContext().getResources().openRawResource(de.dennisguse.opentracks.test.R.raw.gpx_timezone); - InputStream inputStreamExpected = InstrumentationRegistry.getInstrumentation().getContext().getResources().openRawResource(de.dennisguse.opentracks.test.R.raw.gpx_timezone); + try(InputStream inputStreamExpected = InstrumentationRegistry.getInstrumentation().getContext().getResources().openRawResource(de.dennisguse.opentracks.test.R.raw.gpx_timezone)) { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + // when + // 1. import + importTrackId = importer.importFile(inputStream).get(0); + Track importedTrack = contentProviderUtils.getTrack(importTrackId); - // when - // 1. import - importTrackId = importer.importFile(inputStream).get(0); - Track importedTrack = contentProviderUtils.getTrack(importTrackId); + TrackExporter trackExporter = TrackFileFormat.GPX.createTrackExporter(context, contentProviderUtils); + trackExporter.writeTrack(List.of(importedTrack), outputStream); - TrackExporter trackExporter = TrackFileFormat.GPX.createTrackExporter(context, contentProviderUtils); - trackExporter.writeTrack(List.of(importedTrack), outputStream); - - // then - assertEquals(new String(inputStreamExpected.readAllBytes(), StandardCharsets.UTF_8), outputStream.toString()); + // then + assertEquals(new String(inputStreamExpected.readAllBytes(), StandardCharsets.UTF_8), outputStream.toString()); + } } } \ No newline at end of file diff --git a/src/main/java/de/dennisguse/opentracks/ui/util/ThemeUtils.java b/src/main/java/de/dennisguse/opentracks/ui/util/ThemeUtils.java index 90da61ff4..b767036e6 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/util/ThemeUtils.java +++ b/src/main/java/de/dennisguse/opentracks/ui/util/ThemeUtils.java @@ -42,27 +42,21 @@ public class ThemeUtils { } public static int getFontSizeSmallInPx(Context context) { - TypedArray typedArray = context.obtainStyledAttributes(R.style.TextAppearance_MaterialComponents_Body2, new int[]{android.R.attr.textSize}); - int fontSize = typedArray.getDimensionPixelSize(0, 12); - typedArray.recycle(); - return fontSize; + try(TypedArray typedArray = context.obtainStyledAttributes(R.style.TextAppearance_MaterialComponents_Body2, new int[]{android.R.attr.textSize})) { + return typedArray.getDimensionPixelSize(0, 12); + } } public static int getFontSizeMediumInPx(Context context) { - TypedArray typedArray = context.obtainStyledAttributes(R.style.TextAppearance_MaterialComponents_Body1, new int[]{android.R.attr.textSize}); - int fontSize = typedArray.getDimensionPixelSize(0, 15); - typedArray.recycle(); - return fontSize; + try(TypedArray typedArray = context.obtainStyledAttributes(R.style.TextAppearance_MaterialComponents_Body1, new int[]{android.R.attr.textSize})) { + return typedArray.getDimensionPixelSize(0, 15); + } } - /** - * Gets the photo height. - */ public static int getPhotoHeight(Context context) { - int[] attrs = new int[]{android.R.attr.listPreferredItemHeight}; - TypedArray typeArray = context.obtainStyledAttributes(attrs); - int height = typeArray.getDimensionPixelSize(0, 128); - typeArray.recycle(); - return 2 * height; + try(TypedArray typeArray = context.obtainStyledAttributes(new int[]{android.R.attr.listPreferredItemHeight})) { + int height = typeArray.getDimensionPixelSize(0, 128); + return 2 * height; + } } } diff --git a/src/main/java/de/dennisguse/opentracks/util/FileUtils.java b/src/main/java/de/dennisguse/opentracks/util/FileUtils.java index b6e39e285..b0e82e63d 100644 --- a/src/main/java/de/dennisguse/opentracks/util/FileUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/FileUtils.java @@ -189,16 +189,10 @@ public class FileUtils { return name; } - /** - * Copy a File (src) to a File (dst). - * - * @param src source file. - * @param dst destination file. - */ public static void copy(FileDescriptor src, File dst) { - try (FileChannel in = new FileInputStream(src).getChannel(); - FileChannel out = new FileOutputStream(dst).getChannel()) { - in.transferTo(0, in.size(), out); + try (FileInputStream in = new FileInputStream(src); + FileOutputStream out = new FileOutputStream(dst)) { + in.getChannel().transferTo(0, in.getChannel().size(), out.getChannel()); } catch (Exception e) { // post to log Log.e(TAG, e.getMessage());