summaryrefslogtreecommitdiffstats
path: root/mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/android/ClientsDatabase.java
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/android/ClientsDatabase.java')
-rw-r--r--mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/android/ClientsDatabase.java252
1 files changed, 0 insertions, 252 deletions
diff --git a/mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/android/ClientsDatabase.java b/mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/android/ClientsDatabase.java
deleted file mode 100644
index 4962a20c6..000000000
--- a/mobile/android/services/src/main/java/org/mozilla/gecko/sync/repositories/android/ClientsDatabase.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.sync.repositories.android;
-
-import org.mozilla.gecko.background.common.log.Logger;
-import org.mozilla.gecko.sync.repositories.NullCursorException;
-import org.mozilla.gecko.sync.repositories.domain.ClientRecord;
-
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-
-public class ClientsDatabase extends CachedSQLiteOpenHelper {
-
- public static final String LOG_TAG = "ClientsDatabase";
-
- // Database Specifications.
- protected static final String DB_NAME = "clients_database";
- protected static final int SCHEMA_VERSION = 3;
-
- // Clients Table.
- public static final String TBL_CLIENTS = "clients";
- public static final String COL_ACCOUNT_GUID = "guid";
- public static final String COL_PROFILE = "profile";
- public static final String COL_NAME = "name";
- public static final String COL_TYPE = "device_type";
-
- // Optional fields.
- public static final String COL_FORMFACTOR = "formfactor";
- public static final String COL_OS = "os";
- public static final String COL_APPLICATION = "application";
- public static final String COL_APP_PACKAGE = "appPackage";
- public static final String COL_DEVICE = "device";
-
- public static final String[] TBL_CLIENTS_COLUMNS = new String[] { COL_ACCOUNT_GUID, COL_PROFILE, COL_NAME, COL_TYPE,
- COL_FORMFACTOR, COL_OS, COL_APPLICATION, COL_APP_PACKAGE, COL_DEVICE };
- public static final String TBL_CLIENTS_KEY = COL_ACCOUNT_GUID + " = ? AND " +
- COL_PROFILE + " = ?";
-
- // Commands Table.
- public static final String TBL_COMMANDS = "commands";
- public static final String COL_COMMAND = "command";
- public static final String COL_ARGS = "args";
-
- public static final String[] TBL_COMMANDS_COLUMNS = new String[] { COL_ACCOUNT_GUID, COL_COMMAND, COL_ARGS };
- public static final String TBL_COMMANDS_KEY = COL_ACCOUNT_GUID + " = ? AND " +
- COL_COMMAND + " = ? AND " +
- COL_ARGS + " = ?";
- public static final String TBL_COMMANDS_GUID_QUERY = COL_ACCOUNT_GUID + " = ? ";
-
- private final RepoUtils.QueryHelper queryHelper;
-
- public ClientsDatabase(Context context) {
- super(context, DB_NAME, null, SCHEMA_VERSION);
- this.queryHelper = new RepoUtils.QueryHelper(context, null, LOG_TAG);
- Logger.debug(LOG_TAG, "ClientsDatabase instantiated.");
- }
-
- @Override
- public void onCreate(SQLiteDatabase db) {
- Logger.debug(LOG_TAG, "ClientsDatabase.onCreate().");
- createClientsTable(db);
- createCommandsTable(db);
- }
-
- public static void createClientsTable(SQLiteDatabase db) {
- Logger.debug(LOG_TAG, "ClientsDatabase.createClientsTable().");
- String createClientsTableSql = "CREATE TABLE " + TBL_CLIENTS + " ("
- + COL_ACCOUNT_GUID + " TEXT, "
- + COL_PROFILE + " TEXT, "
- + COL_NAME + " TEXT, "
- + COL_TYPE + " TEXT, "
- + COL_FORMFACTOR + " TEXT, "
- + COL_OS + " TEXT, "
- + COL_APPLICATION + " TEXT, "
- + COL_APP_PACKAGE + " TEXT, "
- + COL_DEVICE + " TEXT, "
- + "PRIMARY KEY (" + COL_ACCOUNT_GUID + ", " + COL_PROFILE + "))";
- db.execSQL(createClientsTableSql);
- }
-
- public static void createCommandsTable(SQLiteDatabase db) {
- Logger.debug(LOG_TAG, "ClientsDatabase.createCommandsTable().");
- String createCommandsTableSql = "CREATE TABLE " + TBL_COMMANDS + " ("
- + COL_ACCOUNT_GUID + " TEXT, "
- + COL_COMMAND + " TEXT, "
- + COL_ARGS + " TEXT, "
- + "PRIMARY KEY (" + COL_ACCOUNT_GUID + ", " + COL_COMMAND + ", " + COL_ARGS + "), "
- + "FOREIGN KEY (" + COL_ACCOUNT_GUID + ") REFERENCES " + TBL_CLIENTS + " (" + COL_ACCOUNT_GUID + "))";
- db.execSQL(createCommandsTableSql);
- }
-
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- Logger.debug(LOG_TAG, "ClientsDatabase.onUpgrade(" + oldVersion + ", " + newVersion + ").");
- if (oldVersion < 2) {
- // For now we'll just drop and recreate the tables.
- db.execSQL("DROP TABLE IF EXISTS " + TBL_CLIENTS);
- db.execSQL("DROP TABLE IF EXISTS " + TBL_COMMANDS);
- onCreate(db);
- return;
- }
-
- if (newVersion >= 3) {
- // Add the optional columns to clients.
- db.execSQL("ALTER TABLE " + TBL_CLIENTS + " ADD COLUMN " + COL_FORMFACTOR + " TEXT");
- db.execSQL("ALTER TABLE " + TBL_CLIENTS + " ADD COLUMN " + COL_OS + " TEXT");
- db.execSQL("ALTER TABLE " + TBL_CLIENTS + " ADD COLUMN " + COL_APPLICATION + " TEXT");
- db.execSQL("ALTER TABLE " + TBL_CLIENTS + " ADD COLUMN " + COL_APP_PACKAGE + " TEXT");
- db.execSQL("ALTER TABLE " + TBL_CLIENTS + " ADD COLUMN " + COL_DEVICE + " TEXT");
- }
- }
-
- public void wipeDB() {
- SQLiteDatabase db = this.getCachedWritableDatabase();
- onUpgrade(db, 0, SCHEMA_VERSION);
- }
-
- public void wipeClientsTable() {
- SQLiteDatabase db = this.getCachedWritableDatabase();
- db.execSQL("DELETE FROM " + TBL_CLIENTS);
- }
-
- public void wipeCommandsTable() {
- SQLiteDatabase db = this.getCachedWritableDatabase();
- db.execSQL("DELETE FROM " + TBL_COMMANDS);
- }
-
- // If a record with given GUID exists, we'll update it,
- // otherwise we'll insert it.
- public void store(String profileId, ClientRecord record) {
- SQLiteDatabase db = this.getCachedWritableDatabase();
-
- ContentValues cv = new ContentValues();
- cv.put(COL_ACCOUNT_GUID, record.guid);
- cv.put(COL_PROFILE, profileId);
- cv.put(COL_NAME, record.name);
- cv.put(COL_TYPE, record.type);
-
- if (record.formfactor != null) {
- cv.put(COL_FORMFACTOR, record.formfactor);
- }
-
- if (record.os != null) {
- cv.put(COL_OS, record.os);
- }
-
- if (record.application != null) {
- cv.put(COL_APPLICATION, record.application);
- }
-
- if (record.appPackage != null) {
- cv.put(COL_APP_PACKAGE, record.appPackage);
- }
-
- if (record.device != null) {
- cv.put(COL_DEVICE, record.device);
- }
-
- String[] args = new String[] { record.guid, profileId };
- int rowsUpdated = db.update(TBL_CLIENTS, cv, TBL_CLIENTS_KEY, args);
-
- if (rowsUpdated >= 1) {
- Logger.debug(LOG_TAG, "Replaced client record for row with accountGUID " + record.guid);
- } else {
- long rowId = db.insert(TBL_CLIENTS, null, cv);
- Logger.debug(LOG_TAG, "Inserted client record into row: " + rowId);
- }
- }
-
- /**
- * Store a command in the commands database if it doesn't already exist.
- *
- * @param accountGUID
- * @param command - The command type
- * @param args - A JSON string of args
- * @throws NullCursorException
- */
- public void store(String accountGUID, String command, String args) throws NullCursorException {
- if (Logger.LOG_PERSONAL_INFORMATION) {
- Logger.pii(LOG_TAG, "Storing command " + command + " with args " + args);
- } else {
- Logger.trace(LOG_TAG, "Storing command " + command + ".");
- }
- SQLiteDatabase db = this.getCachedWritableDatabase();
-
- ContentValues cv = new ContentValues();
- cv.put(COL_ACCOUNT_GUID, accountGUID);
- cv.put(COL_COMMAND, command);
- if (args == null) {
- cv.put(COL_ARGS, "[]");
- } else {
- cv.put(COL_ARGS, args);
- }
-
- Cursor cur = this.fetchSpecificCommand(accountGUID, command, args);
- try {
- if (cur.moveToFirst()) {
- Logger.debug(LOG_TAG, "Command already exists in database.");
- return;
- }
- } finally {
- cur.close();
- }
-
- long rowId = db.insert(TBL_COMMANDS, null, cv);
- Logger.debug(LOG_TAG, "Inserted command into row: " + rowId);
- }
-
- public Cursor fetchClientsCursor(String accountGUID, String profileId) throws NullCursorException {
- String[] args = new String[] { accountGUID, profileId };
- SQLiteDatabase db = this.getCachedReadableDatabase();
-
- return queryHelper.safeQuery(db, ".fetchClientsCursor", TBL_CLIENTS, TBL_CLIENTS_COLUMNS, TBL_CLIENTS_KEY, args);
- }
-
- public Cursor fetchSpecificCommand(String accountGUID, String command, String commandArgs) throws NullCursorException {
- String[] args = new String[] { accountGUID, command, commandArgs };
- SQLiteDatabase db = this.getCachedReadableDatabase();
-
- return queryHelper.safeQuery(db, ".fetchSpecificCommand", TBL_COMMANDS, TBL_COMMANDS_COLUMNS, TBL_COMMANDS_KEY, args);
- }
-
- public Cursor fetchCommandsForClient(String accountGUID) throws NullCursorException {
- String[] args = new String[] { accountGUID };
- SQLiteDatabase db = this.getCachedReadableDatabase();
-
- return queryHelper.safeQuery(db, ".fetchCommandsForClient", TBL_COMMANDS, TBL_COMMANDS_COLUMNS, TBL_COMMANDS_GUID_QUERY, args);
- }
-
- public Cursor fetchAllClients() throws NullCursorException {
- SQLiteDatabase db = this.getCachedReadableDatabase();
-
- return queryHelper.safeQuery(db, ".fetchAllClients", TBL_CLIENTS, TBL_CLIENTS_COLUMNS, null, null);
- }
-
- public Cursor fetchAllCommands() throws NullCursorException {
- SQLiteDatabase db = this.getCachedReadableDatabase();
-
- return queryHelper.safeQuery(db, ".fetchAllCommands", TBL_COMMANDS, TBL_COMMANDS_COLUMNS, null, null);
- }
-
- public void deleteClient(String accountGUID, String profileId) {
- String[] args = new String[] { accountGUID, profileId };
-
- SQLiteDatabase db = this.getCachedWritableDatabase();
- db.delete(TBL_CLIENTS, TBL_CLIENTS_KEY, args);
- }
-}