From 74494848d3073e6ebe56c3bd62e8c8e67e1c73b2 Mon Sep 17 00:00:00 2001 From: tarsin Date: Tue, 19 Jul 2022 11:49:51 +0800 Subject: [PATCH] kotlinize --- .../java/com/hippo/database/MSQLiteBuilder.kt | 147 +++++++++--------- .../com/hippo/database/MSQLiteOpenHelper.kt | 54 +++---- 2 files changed, 90 insertions(+), 111 deletions(-) diff --git a/app/src/main/java/com/hippo/database/MSQLiteBuilder.kt b/app/src/main/java/com/hippo/database/MSQLiteBuilder.kt index d16d73350..00dcb01cb 100644 --- a/app/src/main/java/com/hippo/database/MSQLiteBuilder.kt +++ b/app/src/main/java/com/hippo/database/MSQLiteBuilder.kt @@ -13,119 +13,112 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package com.hippo.database -package com.hippo.database; +import android.content.Context +import android.database.sqlite.SQLiteOpenHelper +import android.util.SparseArray -/* - * Created by Hippo on 2017/9/3. - */ - -import android.content.Context; -import android.database.sqlite.SQLiteOpenHelper; -import android.util.SparseArray; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class MSQLiteBuilder { - - public static final String COLUMN_ID = "_id"; - - private static final Map JAVA_TYPE_TO_SQLITE_TYPE = new HashMap<>(); - - static { - JAVA_TYPE_TO_SQLITE_TYPE.put(boolean.class, "INTEGER NOT NULL DEFAULT 0"); - JAVA_TYPE_TO_SQLITE_TYPE.put(byte.class, "INTEGER NOT NULL DEFAULT 0"); - JAVA_TYPE_TO_SQLITE_TYPE.put(short.class, "INTEGER NOT NULL DEFAULT 0"); - JAVA_TYPE_TO_SQLITE_TYPE.put(int.class, "INTEGER NOT NULL DEFAULT 0"); - JAVA_TYPE_TO_SQLITE_TYPE.put(long.class, "INTEGER NOT NULL DEFAULT 0"); - JAVA_TYPE_TO_SQLITE_TYPE.put(float.class, "REAL NOT NULL DEFAULT 0"); - JAVA_TYPE_TO_SQLITE_TYPE.put(double.class, "REAL NOT NULL DEFAULT 0"); - JAVA_TYPE_TO_SQLITE_TYPE.put(String.class, "TEXT"); - } - - private final SparseArray> statementsMap = new SparseArray<>(); - private int version = 0; - private List statements; - - private static String javaTypeToSQLiteType(Class clazz) { - String type = JAVA_TYPE_TO_SQLITE_TYPE.get(clazz); - if (type == null) { - throw new IllegalStateException("Unknown type: " + clazz); +class MSQLiteBuilder { + companion object { + const val COLUMN_ID = "_id" + private val JAVA_TYPE_TO_SQLITE_TYPE: MutableMap?, String> = HashMap() + private fun javaTypeToSQLiteType(clazz: Class<*>?): String { + return JAVA_TYPE_TO_SQLITE_TYPE[clazz] + ?: throw IllegalStateException("Unknown type: $clazz") + } + + init { + JAVA_TYPE_TO_SQLITE_TYPE[Boolean::class.javaPrimitiveType] = + "INTEGER NOT NULL DEFAULT 0" + JAVA_TYPE_TO_SQLITE_TYPE[Byte::class.javaPrimitiveType] = + "INTEGER NOT NULL DEFAULT 0" + JAVA_TYPE_TO_SQLITE_TYPE[Short::class.javaPrimitiveType] = + "INTEGER NOT NULL DEFAULT 0" + JAVA_TYPE_TO_SQLITE_TYPE[Int::class.javaPrimitiveType] = "INTEGER NOT NULL DEFAULT 0" + JAVA_TYPE_TO_SQLITE_TYPE[Long::class.javaPrimitiveType] = + "INTEGER NOT NULL DEFAULT 0" + JAVA_TYPE_TO_SQLITE_TYPE[Float::class.javaPrimitiveType] = + "REAL NOT NULL DEFAULT 0" + JAVA_TYPE_TO_SQLITE_TYPE[Double::class.javaPrimitiveType] = "REAL NOT NULL DEFAULT 0" + JAVA_TYPE_TO_SQLITE_TYPE[String::class.java] = "TEXT" } - return type; } + private val statementsMap = SparseArray?>() + private var version = 0 + private var statements: MutableList? = null + /** * Bump database version. */ - public MSQLiteBuilder version(int version) { - if (version <= this.version) { - throw new IllegalStateException("New version must be bigger than current version. " - + "current version: " + this.version + ", new version: " + version + "."); + fun version(version: Int): MSQLiteBuilder { + check(version > this.version) { + ("New version must be bigger than current version. " + + "current version: " + this.version + ", new version: " + version + ".") } - this.version = version; - this.statements = new ArrayList<>(); - this.statementsMap.put(version, this.statements); - return this; + this.version = version + statements = ArrayList() + statementsMap.put(version, statements) + return this } - - /** - * Creates a table with int {@link #COLUMN_ID} primary key. - */ - public MSQLiteBuilder createTable(String table) { - return createTable(table, COLUMN_ID, int.class); - } - /** * Creates a table. */ - public MSQLiteBuilder createTable(String table, String column, Class clazz) { - return statement("CREATE TABLE " + table + " (" + column + " " + javaTypeToSQLiteType(clazz) + " PRIMARY KEY);"); + /** + * Creates a table with int [.COLUMN_ID] primary key. + */ + @JvmOverloads + fun createTable( + table: String, + column: String = COLUMN_ID, + clazz: Class<*>? = Int::class.javaPrimitiveType + ): MSQLiteBuilder { + return statement("CREATE TABLE " + table + " (" + column + " " + javaTypeToSQLiteType(clazz) + " PRIMARY KEY);") } /** * Drops a table. */ - public MSQLiteBuilder dropTable(String table) { - return statement("DROP TABLE " + table + ";"); + fun dropTable(table: String): MSQLiteBuilder { + return statement("DROP TABLE $table;") } /** * Inserts a column to the table. */ - public MSQLiteBuilder insertColumn(String table, String column, Class clazz) { - return statement("ALTER TABLE " + table + " ADD COLUMN " + column + " " + javaTypeToSQLiteType(clazz) + ";"); + fun insertColumn(table: String, column: String, clazz: Class<*>?): MSQLiteBuilder { + return statement( + "ALTER TABLE $table ADD COLUMN $column " + javaTypeToSQLiteType( + clazz + ) + ";" + ) } /** * Add a statement. */ - public MSQLiteBuilder statement(String statement) { - if (version == 0 || statements == null) { - throw new IllegalStateException("Call version() first!"); - } - statements.add(statement); - return this; + fun statement(statement: String): MSQLiteBuilder { + check(!(version == 0 || statements == null)) { "Call version() first!" } + statements!!.add(statement) + return this } /** * Build a SQLiteOpenHelper from it. */ - public SQLiteOpenHelper build(Context context, String name, int version) { - return new MSQLiteOpenHelper(context, name, version, this); + fun build(context: Context?, name: String?, version: Int): SQLiteOpenHelper { + return MSQLiteOpenHelper(context, name, version, this) } - List getStatements(int oldVersion, int newVersion) { - List result = new ArrayList<>(); - for (int i = oldVersion + 1; i <= newVersion; ++i) { - List list = statementsMap.get(i); + fun getStatements(oldVersion: Int, newVersion: Int): List { + val result: MutableList = ArrayList() + for (i in oldVersion + 1..newVersion) { + val list = statementsMap[i] if (list != null) { - result.addAll(list); + result.addAll(list) } } - return result; + return result } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/hippo/database/MSQLiteOpenHelper.kt b/app/src/main/java/com/hippo/database/MSQLiteOpenHelper.kt index 2a74aeca1..a410b362c 100644 --- a/app/src/main/java/com/hippo/database/MSQLiteOpenHelper.kt +++ b/app/src/main/java/com/hippo/database/MSQLiteOpenHelper.kt @@ -13,45 +13,31 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package com.hippo.database -package com.hippo.database; +import android.content.Context +import android.database.sqlite.SQLiteDatabase +import android.database.sqlite.SQLiteOpenHelper +import com.hippo.util.SqlUtils -/* - * Created by Hippo on 2017/9/4. - */ - -import android.content.Context; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; - -import com.hippo.util.SqlUtils; - -class MSQLiteOpenHelper extends SQLiteOpenHelper { - - private final int version; - private final MSQLiteBuilder builder; - - public MSQLiteOpenHelper(Context context, String name, int version, MSQLiteBuilder builder) { - super(context, name, null, version); - this.version = version; - this.builder = builder; +internal class MSQLiteOpenHelper( + context: Context?, + name: String?, + private val version: Int, + private val builder: MSQLiteBuilder +) : SQLiteOpenHelper(context, name, null, version) { + override fun onCreate(db: SQLiteDatabase) { + onUpgrade(db, 0, version) } - @Override - public void onCreate(SQLiteDatabase db) { - onUpgrade(db, 0, version); - } - - @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - for (String command : builder.getStatements(oldVersion, newVersion)) { - db.execSQL(command); + override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { + for (command in builder.getStatements(oldVersion, newVersion)) { + db.execSQL(command) } } - @Override - public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { - SqlUtils.dropAllTable(db); - onCreate(db); + override fun onDowngrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { + SqlUtils.dropAllTable(db) + onCreate(db) } -} +} \ No newline at end of file