package de.robv.android.xposed.installer.repo;
import android.database.Cursor;
import android.provider.BaseColumns;
public class RepoDbDefinitions {
public static final int DATABASE_VERSION = 4;
public static final String DATABASE_NAME = "repo_cache.db";
//////////////////////////////////////////////////////////////////////////
public static interface RepositoriesColumns extends BaseColumns {
public static final String TABLE_NAME = "repositories";
public static final String URL = "url";
public static final String TITLE = "title";
public static final String PARTIAL_URL = "partial_url";
public static final String VERSION = "version";
}
static final String SQL_CREATE_TABLE_REPOSITORIES =
"CREATE TABLE " + RepositoriesColumns.TABLE_NAME + " (" +
RepositoriesColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
RepositoriesColumns.URL + " TEXT NOT NULL, " +
RepositoriesColumns.TITLE + " TEXT, " +
RepositoriesColumns.PARTIAL_URL + " TEXT, " +
RepositoriesColumns.VERSION + " TEXT, " +
"UNIQUE (" + RepositoriesColumns.URL + ") ON CONFLICT REPLACE)";
//////////////////////////////////////////////////////////////////////////
public static interface ModulesColumns extends BaseColumns {
public static final String TABLE_NAME = "modules";
public static final String REPO_ID = "repo_id";
public static final String PKGNAME = "pkgname";
public static final String TITLE = "title";
public static final String SUMMARY = "summary";
public static final String DESCRIPTION = "description";
public static final String DESCRIPTION_IS_HTML = "description_is_html";
public static final String AUTHOR = "author";
public static final String SUPPORT = "support";
public static final String CREATED = "created";
public static final String UPDATED = "updated";
public static final String PREFERRED = "preferred";
public static final String LATEST_VERSION = "latest_version_id";
}
static final String SQL_CREATE_TABLE_MODULES =
"CREATE TABLE " + ModulesColumns.TABLE_NAME + " (" +
ModulesColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
ModulesColumns.REPO_ID + " INTEGER NOT NULL REFERENCES "
+ RepositoriesColumns.TABLE_NAME + " ON DELETE CASCADE, " +
ModulesColumns.PKGNAME + " TEXT NOT NULL, " +
ModulesColumns.TITLE + " TEXT NOT NULL, " +
ModulesColumns.SUMMARY + " TEXT, " +
ModulesColumns.DESCRIPTION + " TEXT, " +
ModulesColumns.DESCRIPTION_IS_HTML + " INTEGER DEFAULT 0, " +
ModulesColumns.AUTHOR + " TEXT, " +
ModulesColumns.SUPPORT + " TEXT, " +
ModulesColumns.CREATED + " INTEGER DEFAULT -1, " +
ModulesColumns.UPDATED + " INTEGER DEFAULT -1, " +
ModulesColumns.PREFERRED + " INTEGER DEFAULT 1, " +
ModulesColumns.LATEST_VERSION + " INTEGER REFERENCES " + ModuleVersionsColumns.TABLE_NAME + ", " +
"UNIQUE (" + ModulesColumns.PKGNAME + ", " + ModulesColumns.REPO_ID + ") ON CONFLICT REPLACE)";
//////////////////////////////////////////////////////////////////////////
public static interface ModuleVersionsColumns extends BaseColumns {
public static final String TABLE_NAME = "module_versions";
public static final String IDX_MODULE_ID = "module_versions_module_id_idx";
public static final String MODULE_ID = "module_id";
public static final String NAME = "name";
public static final String CODE = "code";
public static final String DOWNLOAD_LINK = "download_link";
public static final String MD5SUM = "md5sum";
public static final String CHANGELOG = "changelog";
public static final String CHANGELOG_IS_HTML = "changelog_is_html";
public static final String RELTYPE = "reltype";
public static final String UPLOADED = "uploaded";
}
static final String SQL_CREATE_TABLE_MODULE_VERSIONS =
"CREATE TABLE " + ModuleVersionsColumns.TABLE_NAME + " (" +
ModuleVersionsColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
ModuleVersionsColumns.MODULE_ID + " INTEGER NOT NULL REFERENCES "
+ ModulesColumns.TABLE_NAME + " ON DELETE CASCADE, " +
ModuleVersionsColumns.NAME + " TEXT NOT NULL, " +
ModuleVersionsColumns.CODE + " INTEGER NOT NULL, " +
ModuleVersionsColumns.DOWNLOAD_LINK + " TEXT, " +
ModuleVersionsColumns.MD5SUM + " TEXT, " +
ModuleVersionsColumns.CHANGELOG + " TEXT, " +
ModuleVersionsColumns.CHANGELOG_IS_HTML + " INTEGER DEFAULT 0, " +
ModuleVersionsColumns.RELTYPE + " INTEGER DEFAULT 0, " +
ModuleVersionsColumns.UPLOADED + " INTEGER DEFAULT -1)";
static final String SQL_CREATE_INDEX_MODULE_VERSIONS_MODULE_ID =
"CREATE INDEX " + ModuleVersionsColumns.IDX_MODULE_ID + " ON " +
ModuleVersionsColumns.TABLE_NAME + " (" +
ModuleVersionsColumns.MODULE_ID + ")";
//////////////////////////////////////////////////////////////////////////
public static interface MoreInfoColumns extends BaseColumns {
public static final String TABLE_NAME = "more_info";
public static final String MODULE_ID = "module_id";
public static final String LABEL = "label";
public static final String VALUE = "value";
}
static final String SQL_CREATE_TABLE_MORE_INFO =
"CREATE TABLE " + MoreInfoColumns.TABLE_NAME + " (" +
MoreInfoColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
MoreInfoColumns.MODULE_ID + " INTEGER NOT NULL REFERENCES "
+ ModulesColumns.TABLE_NAME + " ON DELETE CASCADE, " +
MoreInfoColumns.LABEL + " TEXT NOT NULL, " +
MoreInfoColumns.VALUE + " TEXT)";
//////////////////////////////////////////////////////////////////////////
public static interface InstalledModulesColumns {
public static final String TABLE_NAME = "installed_modules";
public static final String PKGNAME = "pkgname";
public static final String VERSION_CODE = "version_code";
public static final String VERSION_NAME = "version_name";
}
static final String SQL_CREATE_TEMP_TABLE_INSTALLED_MODULES =
"CREATE TEMP TABLE " + InstalledModulesColumns.TABLE_NAME + " (" +
InstalledModulesColumns.PKGNAME + " TEXT PRIMARY KEY ON CONFLICT REPLACE, " +
InstalledModulesColumns.VERSION_CODE + " INTEGER NOT NULL, " +
InstalledModulesColumns.VERSION_NAME + " TEXT)";
//////////////////////////////////////////////////////////////////////////
public static interface InstalledModulesUpdatesColumns {
public static final String VIEW_NAME = InstalledModulesColumns.TABLE_NAME + "_updates";
public static final String MODULE_ID = "module_id";
public static final String PKGNAME = "pkgname";
public static final String INSTALLED_CODE = "installed_code";
public static final String INSTALLED_NAME = "installed_name";
public static final String LATEST_ID = "latest_id";
public static final String LATEST_CODE = "latest_code";
public static final String LATEST_NAME = "latest_name";
}
static final String SQL_CREATE_TEMP_VIEW_INSTALLED_MODULES_UPDATES =
"CREATE TEMP VIEW " + InstalledModulesUpdatesColumns.VIEW_NAME + " AS SELECT " +
"m." + ModulesColumns._ID + " AS " + InstalledModulesUpdatesColumns.MODULE_ID + ", " +
"i." + InstalledModulesColumns.PKGNAME + " AS " + InstalledModulesUpdatesColumns.PKGNAME + ", " +
"i." + InstalledModulesColumns.VERSION_CODE + " AS " + InstalledModulesUpdatesColumns.INSTALLED_CODE + ", " +
"i." + InstalledModulesColumns.VERSION_NAME + " AS " + InstalledModulesUpdatesColumns.INSTALLED_NAME + ", " +
"v." + ModuleVersionsColumns._ID + " AS " + InstalledModulesUpdatesColumns.LATEST_ID + ", " +
"v." + ModuleVersionsColumns.CODE + " AS " + InstalledModulesUpdatesColumns.LATEST_CODE + ", " +
"v." + ModuleVersionsColumns.NAME + " AS " + InstalledModulesUpdatesColumns.LATEST_NAME +
" FROM " + InstalledModulesColumns.TABLE_NAME + " AS i" +
" INNER JOIN " + ModulesColumns.TABLE_NAME + " AS m" +
" ON m." + ModulesColumns.PKGNAME + " = i." + InstalledModulesColumns.PKGNAME +
" INNER JOIN " + ModuleVersionsColumns.TABLE_NAME + " AS v" +
" ON v." + ModuleVersionsColumns._ID + " = m." + ModulesColumns.LATEST_VERSION +
" WHERE " + InstalledModulesUpdatesColumns.LATEST_CODE
+ " > " + InstalledModulesUpdatesColumns.INSTALLED_CODE
+ " AND " + ModulesColumns.PREFERRED + " = 1";
//////////////////////////////////////////////////////////////////////////
public interface OverviewColumns extends BaseColumns {
public static final String PKGNAME = ModulesColumns.PKGNAME;
public static final String TITLE = ModulesColumns.TITLE;
public static final String SUMMARY = ModulesColumns.SUMMARY;
public static final String CREATED = ModulesColumns.CREATED;
public static final String UPDATED = ModulesColumns.UPDATED;
public static final String INSTALLED_VERSION = "installed_version";
public static final String LATEST_VERSION = "latest_version";
public static final String IS_FRAMEWORK = "is_framework";
public static final String IS_INSTALLED = "is_installed";
public static final String HAS_UPDATE = "has_update";
}
public static class OverviewColumnsIndexes {
private OverviewColumnsIndexes() {}
public static int PKGNAME = -1;
public static int TITLE = -1;
public static int SUMMARY = -1;
public static int CREATED = -1;
public static int UPDATED = -1;
public static int INSTALLED_VERSION = -1;
public static int LATEST_VERSION = -1;
public static int IS_FRAMEWORK = -1;
public static int IS_INSTALLED = -1;
public static int HAS_UPDATE = -1;
private static boolean isFilled = false;
public static void fillFromCursor(Cursor cursor) {
if (isFilled || cursor == null)
return;
PKGNAME = cursor.getColumnIndexOrThrow(OverviewColumns.PKGNAME);
TITLE = cursor.getColumnIndexOrThrow(OverviewColumns.TITLE);
SUMMARY = cursor.getColumnIndexOrThrow(OverviewColumns.SUMMARY);
CREATED = cursor.getColumnIndexOrThrow(OverviewColumns.CREATED);
UPDATED = cursor.getColumnIndexOrThrow(OverviewColumns.UPDATED);
INSTALLED_VERSION = cursor.getColumnIndexOrThrow(OverviewColumns.INSTALLED_VERSION);
LATEST_VERSION = cursor.getColumnIndexOrThrow(OverviewColumns.LATEST_VERSION);
INSTALLED_VERSION = cursor.getColumnIndexOrThrow(OverviewColumns.INSTALLED_VERSION);
IS_FRAMEWORK = cursor.getColumnIndexOrThrow(OverviewColumns.IS_FRAMEWORK);
IS_INSTALLED = cursor.getColumnIndexOrThrow(OverviewColumns.IS_INSTALLED);
HAS_UPDATE = cursor.getColumnIndexOrThrow(OverviewColumns.HAS_UPDATE);
isFilled = true;
}
}
}