1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-12-26 10:35:50 +01:00

Use try-with-resources for db access

This commit is contained in:
cpfeiffer 2020-01-29 19:56:29 +01:00
parent f24dc0c1cb
commit 7618ec39a2
5 changed files with 96 additions and 109 deletions

View File

@ -206,7 +206,7 @@ public class ConfigActivity extends AbstractGBActivity {
try { try {
helper = new PackageConfigHelper(getApplicationContext()); helper = new PackageConfigHelper(getApplicationContext());
list = helper.getNotificationConfigurations(); list = helper.getNotificationConfigurations();
} catch (GBException e) { } catch (Exception e) {
GB.toast("error getting configurations", Toast.LENGTH_SHORT, GB.ERROR, e); GB.toast("error getting configurations", Toast.LENGTH_SHORT, GB.ERROR, e);
list = new ArrayList<>(); list = new ArrayList<>();
} }
@ -233,7 +233,7 @@ public class ConfigActivity extends AbstractGBActivity {
try { try {
helper.saveNotificationConfiguration(config); helper.saveNotificationConfiguration(config);
LocalBroadcastManager.getInstance(ConfigActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED)); LocalBroadcastManager.getInstance(ConfigActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED));
} catch (GBException e) { } catch (Exception e) {
GB.toast("error saving notification", Toast.LENGTH_SHORT, GB.ERROR, e); GB.toast("error saving notification", Toast.LENGTH_SHORT, GB.ERROR, e);
} }
refreshList(); refreshList();
@ -259,7 +259,7 @@ public class ConfigActivity extends AbstractGBActivity {
try { try {
helper.deleteNotificationConfiguration((NotificationConfiguration) adapterView.getItemAtPosition(i)); helper.deleteNotificationConfiguration((NotificationConfiguration) adapterView.getItemAtPosition(i));
LocalBroadcastManager.getInstance(ConfigActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED)); LocalBroadcastManager.getInstance(ConfigActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED));
} catch (GBException e) { } catch (Exception e) {
GB.toast("error deleting setting", Toast.LENGTH_SHORT, GB.ERROR, e); GB.toast("error deleting setting", Toast.LENGTH_SHORT, GB.ERROR, e);
} }
refreshList(); refreshList();
@ -508,7 +508,7 @@ public class ConfigActivity extends AbstractGBActivity {
list.clear(); list.clear();
try { try {
list.addAll(helper.getNotificationConfigurations()); list.addAll(helper.getNotificationConfigurations());
} catch (GBException e) { } catch (Exception e) {
GB.toast("error getting configurations", Toast.LENGTH_SHORT, GB.ERROR, e); GB.toast("error getting configurations", Toast.LENGTH_SHORT, GB.ERROR, e);
} }
// null is added to indicate the plus button added handled in PackageAdapter#getView // null is added to indicate the plus button added handled in PackageAdapter#getView

View File

@ -25,9 +25,7 @@ import android.util.Log;
import java.util.ArrayList; import java.util.ArrayList;
import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.GBException; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
import nodomain.freeyourgadget.gadgetbridge.database.DBOpenHelper;
import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.misfit.PlayNotificationRequest; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.misfit.PlayNotificationRequest;
import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;
@ -43,11 +41,15 @@ public class PackageConfigHelper {
public static final String DB_RESPECT_SILENT = "respectSilent"; public static final String DB_RESPECT_SILENT = "respectSilent";
public PackageConfigHelper(Context context) throws GBException { public PackageConfigHelper(Context context) {
initDB(); try {
initDB();
} catch (Exception e) {
GB.log("error getting database", GB.ERROR, e);
}
} }
public void saveNotificationConfiguration(NotificationConfiguration settings) throws GBException { public void saveNotificationConfiguration(NotificationConfiguration settings) throws Exception {
ContentValues values = new ContentValues(6); ContentValues values = new ContentValues(6);
values.put(DB_PACKAGE, settings.getPackageName()); values.put(DB_PACKAGE, settings.getPackageName());
values.put(DB_APPNAME, settings.getAppName()); values.put(DB_APPNAME, settings.getAppName());
@ -56,103 +58,99 @@ public class PackageConfigHelper {
values.put(DB_VIBRATION, settings.getVibration().getValue()); values.put(DB_VIBRATION, settings.getVibration().getValue());
values.put(DB_RESPECT_SILENT, settings.getRespectSilentMode()); values.put(DB_RESPECT_SILENT, settings.getRespectSilentMode());
SQLiteDatabase database = GBApplication.acquireDB().getDatabase(); try (DBHandler db = GBApplication.acquireDB()) {
SQLiteDatabase database = db.getDatabase();
if(settings.getId() == -1) { if (settings.getId() == -1) {
settings.setId(database.insert(DB_TABLE, null, values)); settings.setId(database.insert(DB_TABLE, null, values));
}else{ } else {
database.update(DB_TABLE, values, DB_ID + "=?", new String[]{String.valueOf(settings.getId())}); database.update(DB_TABLE, values, DB_ID + "=?", new String[]{String.valueOf(settings.getId())});
}
} }
GBApplication.releaseDB();
//LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent()); //LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent());
} }
public ArrayList<NotificationConfiguration> getNotificationConfigurations() throws GBException { public ArrayList<NotificationConfiguration> getNotificationConfigurations() throws Exception {
SQLiteDatabase database = GBApplication.acquireDB().getDatabase(); try (DBHandler db = GBApplication.acquireDB()) {
SQLiteDatabase database = db.getDatabase();
Cursor cursor = database.query(DB_TABLE, new String[]{"*"}, null, null, null, null, null); try (Cursor cursor = database.query(DB_TABLE, new String[]{"*"}, null, null, null, null, null)) {
int size = cursor.getCount();
GBApplication.releaseDB(); ArrayList<NotificationConfiguration> list = new ArrayList<>(size);
if (size > 0) {
int size = cursor.getCount(); int appNamePos = cursor.getColumnIndex(DB_APPNAME);
ArrayList<NotificationConfiguration> list = new ArrayList<>(size); int packageNamePos = cursor.getColumnIndex(DB_PACKAGE);
if(size > 0){ int hourPos = cursor.getColumnIndex(DB_HOUR);
int appNamePos = cursor.getColumnIndex(DB_APPNAME); int minPos = cursor.getColumnIndex(DB_MINUTE);
int packageNamePos = cursor.getColumnIndex(DB_PACKAGE); int silentPos = cursor.getColumnIndex(DB_RESPECT_SILENT);
int hourPos = cursor.getColumnIndex(DB_HOUR); int vibrationPos = cursor.getColumnIndex(DB_VIBRATION);
int minPos = cursor.getColumnIndex(DB_MINUTE); int idPos = cursor.getColumnIndex(DB_ID);
int silentPos = cursor.getColumnIndex(DB_RESPECT_SILENT); cursor.moveToFirst();
int vibrationPos = cursor.getColumnIndex(DB_VIBRATION); do {
int idPos = cursor.getColumnIndex(DB_ID); list.add(new NotificationConfiguration(
cursor.moveToFirst(); (short) cursor.getInt(minPos),
do { (short) cursor.getInt(hourPos),
list.add(new NotificationConfiguration( cursor.getString(packageNamePos),
(short)cursor.getInt(minPos), cursor.getString(appNamePos),
(short)cursor.getInt(hourPos), cursor.getInt(silentPos) == 1,
cursor.getString(packageNamePos), PlayNotificationRequest.VibrationType.fromValue((byte) cursor.getInt(vibrationPos)),
cursor.getString(appNamePos), cursor.getInt(idPos)
cursor.getInt(silentPos) == 1, ));
PlayNotificationRequest.VibrationType.fromValue((byte)cursor.getInt(vibrationPos)), Log.d("Settings", "setting #" + cursor.getPosition() + ": " + cursor.getInt(silentPos));
cursor.getInt(idPos) } while (cursor.moveToNext());
)); }
Log.d("Settings", "setting #" + cursor.getPosition() + ": " + cursor.getInt(silentPos)); return list;
}while (cursor.moveToNext()); }
} }
cursor.close();
return list;
} }
public NotificationConfiguration getNotificationConfiguration(String appName) throws GBException { public NotificationConfiguration getNotificationConfiguration(String appName) throws Exception {
if(appName == null) return null; if(appName == null) return null;
SQLiteDatabase database = GBApplication.acquireDB().getDatabase(); try (DBHandler db = GBApplication.acquireDB()) {
SQLiteDatabase database = db.getDatabase();
Cursor c = database.query(DB_TABLE, new String[]{"*"}, DB_APPNAME + "=?", new String[]{appName}, null, null, null); try (Cursor c = database.query(DB_TABLE, new String[]{"*"}, DB_APPNAME + "=?", new String[]{appName}, null, null, null)) {
if (c.getCount() == 0) {
GBApplication.releaseDB(); return null;
}
if(c.getCount() == 0){ c.moveToFirst();
c.close(); NotificationConfiguration settings = new NotificationConfiguration(
return null; (short) c.getInt(c.getColumnIndex(DB_MINUTE)),
(short) c.getInt(c.getColumnIndex(DB_HOUR)),
c.getString(c.getColumnIndex(DB_PACKAGE)),
c.getString(c.getColumnIndex(DB_APPNAME)),
c.getInt(c.getColumnIndex(DB_RESPECT_SILENT)) == 1,
PlayNotificationRequest.VibrationType.fromValue((byte) c.getInt(c.getColumnIndex(DB_VIBRATION))),
c.getInt(c.getColumnIndex(DB_ID))
);
return settings;
}
} }
c.moveToFirst();
NotificationConfiguration settings = new NotificationConfiguration(
(short)c.getInt(c.getColumnIndex(DB_MINUTE)),
(short)c.getInt(c.getColumnIndex(DB_HOUR)),
c.getString(c.getColumnIndex(DB_PACKAGE)),
c.getString(c.getColumnIndex(DB_APPNAME)),
c.getInt(c.getColumnIndex(DB_RESPECT_SILENT)) == 1,
PlayNotificationRequest.VibrationType.fromValue((byte)c.getInt(c.getColumnIndex(DB_VIBRATION))),
c.getInt(c.getColumnIndex(DB_ID))
);
c.close();
return settings;
} }
private void initDB() throws GBException { private void initDB() throws Exception {
SQLiteDatabase database = GBApplication.acquireDB().getDatabase(); try (DBHandler db = GBApplication.acquireDB()) {
SQLiteDatabase database = db.getDatabase();
database.execSQL("CREATE TABLE IF NOT EXISTS notifications(" + database.execSQL("CREATE TABLE IF NOT EXISTS notifications(" +
DB_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " + DB_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " +
DB_PACKAGE + " TEXT, " + DB_PACKAGE + " TEXT, " +
DB_VIBRATION + " INTEGER, " + DB_VIBRATION + " INTEGER, " +
DB_MINUTE + " INTEGER DEFAULT -1, " + DB_MINUTE + " INTEGER DEFAULT -1, " +
DB_APPNAME + " TEXT," + DB_APPNAME + " TEXT," +
DB_RESPECT_SILENT + " INTEGER," + DB_RESPECT_SILENT + " INTEGER," +
DB_HOUR + " INTEGER DEFAULT -1);"); DB_HOUR + " INTEGER DEFAULT -1);");
}
GBApplication.releaseDB();
} }
public void deleteNotificationConfiguration(NotificationConfiguration packageSettings) throws GBException { public void deleteNotificationConfiguration(NotificationConfiguration packageSettings) throws Exception {
Log.d("DB", "deleting id " + packageSettings.getId()); Log.d("DB", "deleting id " + packageSettings.getId());
if(packageSettings.getId() == -1) return; if(packageSettings.getId() == -1) return;
SQLiteDatabase database = GBApplication.acquireDB().getDatabase(); try (DBHandler db = GBApplication.acquireDB()) {
SQLiteDatabase database = db.getDatabase();
database.delete(DB_TABLE, DB_ID + "=?", new String[]{String.valueOf(packageSettings.getId())}); database.delete(DB_TABLE, DB_ID + "=?", new String[]{String.valueOf(packageSettings.getId())});
}
GBApplication.releaseDB();
} }
} }

View File

@ -33,16 +33,15 @@ import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.IdentityHashMap; import java.util.IdentityHashMap;
import java.util.List; import java.util.List;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import nodomain.freeyourgadget.gadgetbridge.GBException;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity; import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSupport;
@ -53,20 +52,14 @@ import static android.view.View.GONE;
public class QHybridAppChoserActivity extends AbstractGBActivity { public class QHybridAppChoserActivity extends AbstractGBActivity {
boolean hasControl = false; boolean hasControl = false;
PackageConfigHelper helper; private PackageConfigHelper helper;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qhybrid_app_choser); setContentView(R.layout.activity_qhybrid_app_choser);
try { helper = new PackageConfigHelper(getApplicationContext());
helper = new PackageConfigHelper(getApplicationContext());
} catch (GBException e) {
GB.toast("error getting database helper", Toast.LENGTH_SHORT, GB.ERROR, e);
finish();
return;
}
final ListView appList = findViewById(R.id.qhybrid_appChooserList); final ListView appList = findViewById(R.id.qhybrid_appChooserList);
final PackageManager manager = getPackageManager(); final PackageManager manager = getPackageManager();
@ -145,7 +138,7 @@ public class QHybridAppChoserActivity extends AbstractGBActivity {
try { try {
helper.saveNotificationConfiguration(config); helper.saveNotificationConfiguration(config);
LocalBroadcastManager.getInstance(QHybridAppChoserActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED)); LocalBroadcastManager.getInstance(QHybridAppChoserActivity.this).sendBroadcast(new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED));
} catch (GBException e) { } catch (Exception e) {
GB.toast("error saving configuration", Toast.LENGTH_SHORT, GB.ERROR, e); GB.toast("error saving configuration", Toast.LENGTH_SHORT, GB.ERROR, e);
} }
finish(); finish();

View File

@ -231,11 +231,7 @@ public class QHybridSupport extends QHybridBaseSupport {
}; };
LocalBroadcastManager.getInstance(getContext()).registerReceiver(commandReceiver, commandFilter); LocalBroadcastManager.getInstance(getContext()).registerReceiver(commandReceiver, commandFilter);
try { helper = new PackageConfigHelper(GBApplication.getContext());
helper = new PackageConfigHelper(GBApplication.getContext());
} catch (GBException e) {
GB.toast("error getting database", Toast.LENGTH_SHORT, GB.ERROR, e);
}
IntentFilter globalFilter = new IntentFilter(); IntentFilter globalFilter = new IntentFilter();
globalFilter.addAction(QHYBRID_ACTION_SET_ACTIVITY_HAND); globalFilter.addAction(QHYBRID_ACTION_SET_ACTIVITY_HAND);
@ -403,7 +399,7 @@ public class QHybridSupport extends QHybridBaseSupport {
NotificationConfiguration config = null; NotificationConfiguration config = null;
try { try {
config = helper.getNotificationConfiguration(packageName); config = helper.getNotificationConfiguration(packageName);
} catch (GBException e) { } catch (Exception e) {
GB.toast("error getting notification configuration", Toast.LENGTH_SHORT, GB.ERROR, e); GB.toast("error getting notification configuration", Toast.LENGTH_SHORT, GB.ERROR, e);
} }
if (config == null) return; if (config == null) return;
@ -455,7 +451,7 @@ public class QHybridSupport extends QHybridBaseSupport {
for (NotificationConfiguration config : helper.getNotificationConfigurations()) { for (NotificationConfiguration config : helper.getNotificationConfigurations()) {
configs.put(config, false); configs.put(config, false);
} }
} catch (GBException e) { } catch (Exception e) {
GB.toast("error getting notification configs", Toast.LENGTH_SHORT, GB.ERROR, e); GB.toast("error getting notification configs", Toast.LENGTH_SHORT, GB.ERROR, e);
} }

View File

@ -344,7 +344,7 @@ public class FossilWatchAdapter extends WatchAdapter {
getDeviceSupport().getDevice().sendDeviceUpdateIntent(getContext()); getDeviceSupport().getDevice().sendDeviceUpdateIntent(getContext());
} }
}, false); }, false);
} catch (GBException e) { } catch (Exception e) {
GB.log("error", GB.ERROR, e); GB.log("error", GB.ERROR, e);
} }
} }