clean up OverriddenWarnigsDao
This commit is contained in:
@@ -18,64 +18,42 @@
|
|||||||
package org.sufficientlysecure.keychain.daos;
|
package org.sufficientlysecure.keychain.daos;
|
||||||
|
|
||||||
|
|
||||||
import android.arch.persistence.db.SupportSQLiteDatabase;
|
|
||||||
import android.arch.persistence.db.SupportSQLiteQuery;
|
|
||||||
import android.arch.persistence.db.SupportSQLiteQueryBuilder;
|
|
||||||
import android.content.ContentValues;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.database.Cursor;
|
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
|
||||||
|
|
||||||
import org.sufficientlysecure.keychain.provider.KeychainContract.OverriddenWarnings;
|
import com.squareup.sqldelight.SqlDelightQuery;
|
||||||
import org.sufficientlysecure.keychain.KeychainDatabase;
|
import org.sufficientlysecure.keychain.KeychainDatabase;
|
||||||
import org.sufficientlysecure.keychain.KeychainDatabase.Tables;
|
import org.sufficientlysecure.keychain.OverriddenWarningsModel.DeleteByIdentifier;
|
||||||
|
import org.sufficientlysecure.keychain.OverriddenWarningsModel.InsertIdentifier;
|
||||||
|
import org.sufficientlysecure.keychain.model.OverriddenWarning;
|
||||||
|
|
||||||
|
|
||||||
public class OverriddenWarningsDao {
|
public class OverriddenWarningsDao extends AbstractDao {
|
||||||
private final Context context;
|
public static OverriddenWarningsDao create(Context context) {
|
||||||
private KeychainDatabase keychainDatabase;
|
KeychainDatabase database = KeychainDatabase.getInstance(context);
|
||||||
|
DatabaseNotifyManager databaseNotifyManager = DatabaseNotifyManager.create(context);
|
||||||
|
|
||||||
public static OverriddenWarningsDao createOverriddenWarningsRepository(Context context) {
|
return new OverriddenWarningsDao(database, databaseNotifyManager);
|
||||||
return new OverriddenWarningsDao(context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private OverriddenWarningsDao(Context context) {
|
private OverriddenWarningsDao(KeychainDatabase db, DatabaseNotifyManager databaseNotifyManager) {
|
||||||
this.context = context;
|
super(db, databaseNotifyManager);
|
||||||
}
|
|
||||||
|
|
||||||
private KeychainDatabase getDb() {
|
|
||||||
if (keychainDatabase == null) {
|
|
||||||
keychainDatabase = KeychainDatabase.getInstance(context);
|
|
||||||
}
|
|
||||||
return keychainDatabase;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isWarningOverridden(String identifier) {
|
public boolean isWarningOverridden(String identifier) {
|
||||||
SupportSQLiteDatabase db = getDb().getReadableDatabase();
|
SqlDelightQuery query = OverriddenWarning.FACTORY.selectCountByIdentifier(identifier);
|
||||||
SupportSQLiteQuery query = SupportSQLiteQueryBuilder
|
Long result = mapSingleRow(query, OverriddenWarning.FACTORY.selectCountByIdentifierMapper()::map);
|
||||||
.builder(Tables.OVERRIDDEN_WARNINGS)
|
return result != null && result > 0;
|
||||||
.columns(new String[] { "COUNT(*) FROM " })
|
|
||||||
.selection(OverriddenWarnings.IDENTIFIER + " = ?", new String[] { identifier })
|
|
||||||
.create();
|
|
||||||
Cursor cursor = db.query(query);
|
|
||||||
|
|
||||||
try {
|
|
||||||
cursor.moveToFirst();
|
|
||||||
return cursor.getInt(0) > 0;
|
|
||||||
} finally {
|
|
||||||
cursor.close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void putOverride(String identifier) {
|
public void putOverride(String identifier) {
|
||||||
SupportSQLiteDatabase db = getDb().getWritableDatabase();
|
InsertIdentifier statement = new InsertIdentifier(getWritableDb());
|
||||||
ContentValues cv = new ContentValues();
|
statement.bind(identifier);
|
||||||
cv.put(OverriddenWarnings.IDENTIFIER, identifier);
|
statement.executeInsert();
|
||||||
db.insert(Tables.OVERRIDDEN_WARNINGS, SQLiteDatabase.CONFLICT_REPLACE, cv);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteOverride(String identifier) {
|
public void deleteOverride(String identifier) {
|
||||||
SupportSQLiteDatabase db = getDb().getWritableDatabase();
|
DeleteByIdentifier statement = new DeleteByIdentifier(getWritableDb());
|
||||||
db.delete(Tables.OVERRIDDEN_WARNINGS, OverriddenWarnings.IDENTIFIER + " = ?", new String[] { identifier });
|
statement.bind(identifier);
|
||||||
|
statement.executeInsert();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package org.sufficientlysecure.keychain.model;
|
||||||
|
|
||||||
|
|
||||||
|
import com.google.auto.value.AutoValue;
|
||||||
|
import org.sufficientlysecure.keychain.KeySignaturesModel;
|
||||||
|
import org.sufficientlysecure.keychain.OverriddenWarningsModel;
|
||||||
|
|
||||||
|
|
||||||
|
@AutoValue
|
||||||
|
public abstract class OverriddenWarning implements OverriddenWarningsModel {
|
||||||
|
public static final Factory<OverriddenWarning> FACTORY = new Factory<>(AutoValue_OverriddenWarning::new);
|
||||||
|
|
||||||
|
public static final Mapper<OverriddenWarning> MAPPER = new Mapper<>(FACTORY);
|
||||||
|
}
|
||||||
@@ -470,7 +470,7 @@ public class OpenPgpService extends Service {
|
|||||||
SecurityProblem prioritySecurityProblem = securityProblem.getPrioritySecurityProblem();
|
SecurityProblem prioritySecurityProblem = securityProblem.getPrioritySecurityProblem();
|
||||||
if (prioritySecurityProblem.isIdentifiable()) {
|
if (prioritySecurityProblem.isIdentifiable()) {
|
||||||
String identifier = prioritySecurityProblem.getIdentifier();
|
String identifier = prioritySecurityProblem.getIdentifier();
|
||||||
boolean isOverridden = OverriddenWarningsDao.createOverriddenWarningsRepository(this)
|
boolean isOverridden = OverriddenWarningsDao.create(this)
|
||||||
.isWarningOverridden(identifier);
|
.isWarningOverridden(identifier);
|
||||||
result.putExtra(OpenPgpApi.RESULT_OVERRIDE_CRYPTO_WARNING, isOverridden);
|
result.putExtra(OpenPgpApi.RESULT_OVERRIDE_CRYPTO_WARNING, isOverridden);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ class SecurityProblemPresenter {
|
|||||||
SecurityProblemPresenter(Context context) {
|
SecurityProblemPresenter(Context context) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
packageManager = context.getPackageManager();
|
packageManager = context.getPackageManager();
|
||||||
overriddenWarningsDao = OverriddenWarningsDao.createOverriddenWarningsRepository(context);
|
overriddenWarningsDao = OverriddenWarningsDao.create(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setView(RemoteSecurityProblemView view) {
|
public void setView(RemoteSecurityProblemView view) {
|
||||||
|
|||||||
@@ -2,3 +2,15 @@ CREATE TABLE IF NOT EXISTS overridden_warnings (
|
|||||||
_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
identifier TEXT NOT NULL UNIQUE
|
identifier TEXT NOT NULL UNIQUE
|
||||||
);
|
);
|
||||||
|
|
||||||
|
selectCountByIdentifier:
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM overridden_warnings
|
||||||
|
WHERE identifier = ?;
|
||||||
|
|
||||||
|
insertIdentifier:
|
||||||
|
INSERT OR IGNORE INTO overridden_warnings (identifier) VALUES (?);
|
||||||
|
|
||||||
|
deleteByIdentifier:
|
||||||
|
DELETE FROM overridden_warnings
|
||||||
|
WHERE identifier = ?;
|
||||||
Reference in New Issue
Block a user