mirror of
https://github.com/etesync/android
synced 2025-07-13 18:18:21 +00:00
143 lines
4.7 KiB
Java
143 lines
4.7 KiB
Java
/*
|
||
* Copyright © 2013 – 2016 Ricki Hirner (bitfire web engineering).
|
||
* All rights reserved. This program and the accompanying materials
|
||
* are made available under the terms of the GNU Public License v3.0
|
||
* which accompanies this distribution, and is available at
|
||
* http://www.gnu.org/licenses/gpl.html
|
||
*/
|
||
|
||
package com.etesync.syncadapter.model;
|
||
|
||
import android.content.Context;
|
||
import android.database.Cursor;
|
||
import android.database.sqlite.SQLiteDatabase;
|
||
import android.database.sqlite.SQLiteException;
|
||
import android.database.sqlite.SQLiteOpenHelper;
|
||
import android.os.Build;
|
||
import androidx.annotation.RequiresApi;
|
||
|
||
import com.etesync.syncadapter.App;
|
||
|
||
public class ServiceDB {
|
||
|
||
public static class Settings {
|
||
public static final String
|
||
_TABLE = "settings",
|
||
NAME = "setting",
|
||
VALUE = "value";
|
||
}
|
||
|
||
@Deprecated
|
||
public static class Services {
|
||
public static final String
|
||
_TABLE = "services",
|
||
ID = "_id",
|
||
ACCOUNT_NAME = "accountName",
|
||
SERVICE = "service";
|
||
}
|
||
|
||
@Deprecated
|
||
public static class Collections {
|
||
public static final String
|
||
_TABLE = "collections",
|
||
ID = "_id",
|
||
SERVICE_ID = "serviceID",
|
||
URL = "url",
|
||
READ_ONLY = "readOnly",
|
||
DISPLAY_NAME = "displayName",
|
||
DESCRIPTION = "description",
|
||
COLOR = "color",
|
||
TIME_ZONE = "timezone",
|
||
SYNC = "sync";
|
||
}
|
||
|
||
|
||
public static class OpenHelper extends SQLiteOpenHelper {
|
||
private static final String DATABASE_NAME = "services.db";
|
||
private static final int DATABASE_VERSION = 1;
|
||
|
||
public OpenHelper(Context context) {
|
||
super(context, DATABASE_NAME, null, DATABASE_VERSION);
|
||
}
|
||
|
||
@Override
|
||
public void onOpen(SQLiteDatabase db) {
|
||
if (Build.VERSION.SDK_INT < 16)
|
||
db.execSQL("PRAGMA foreign_keys=ON;");
|
||
}
|
||
|
||
@Override
|
||
@RequiresApi(16)
|
||
public void onConfigure(SQLiteDatabase db) {
|
||
setWriteAheadLoggingEnabled(true);
|
||
db.setForeignKeyConstraintsEnabled(true);
|
||
}
|
||
|
||
@Override
|
||
public void onCreate(SQLiteDatabase db) {
|
||
App.Companion.getLog().info("Creating database " + db.getPath());
|
||
|
||
db.execSQL("CREATE TABLE " + Settings._TABLE + "(" +
|
||
Settings.NAME + " TEXT NOT NULL," +
|
||
Settings.VALUE + " TEXT NOT NULL" +
|
||
")");
|
||
db.execSQL("CREATE UNIQUE INDEX settings_name ON " + Settings._TABLE + " (" + Settings.NAME + ")");
|
||
}
|
||
|
||
@Override
|
||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||
// no different versions yet
|
||
}
|
||
|
||
|
||
public void dump(StringBuilder sb) {
|
||
SQLiteDatabase db = getReadableDatabase();
|
||
db.beginTransactionNonExclusive();
|
||
|
||
// iterate through all tables
|
||
Cursor cursorTables = db.query("sqlite_master", new String[]{"name"}, "type='table'", null, null, null, null);
|
||
while (cursorTables.moveToNext()) {
|
||
String table = cursorTables.getString(0);
|
||
sb.append(table).append("\n");
|
||
Cursor cursor = db.query(table, null, null, null, null, null, null);
|
||
|
||
// print columns
|
||
int cols = cursor.getColumnCount();
|
||
sb.append("\t| ");
|
||
for (int i = 0; i < cols; i++) {
|
||
sb.append(" ");
|
||
sb.append(cursor.getColumnName(i));
|
||
sb.append(" |");
|
||
}
|
||
sb.append("\n");
|
||
|
||
// print rows
|
||
while (cursor.moveToNext()) {
|
||
sb.append("\t| ");
|
||
for (int i = 0; i < cols; i++) {
|
||
sb.append(" ");
|
||
try {
|
||
String value = cursor.getString(i);
|
||
if (value != null)
|
||
sb.append(value
|
||
.replace("\r", "<CR>")
|
||
.replace("\n", "<LF>"));
|
||
else
|
||
sb.append("<null>");
|
||
|
||
} catch (SQLiteException e) {
|
||
sb.append("<unprintable>");
|
||
}
|
||
sb.append(" |");
|
||
}
|
||
sb.append("\n");
|
||
}
|
||
cursor.close();
|
||
sb.append("----------\n");
|
||
}
|
||
cursorTables.close();
|
||
db.endTransaction();
|
||
}
|
||
}
|
||
}
|