Android Open Source - android-sqlite-helper Create Table






From Project

Back to project page android-sqlite-helper.

License

The source code is released under:

Apache License

If you think the Android project android-sqlite-helper listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package net.ichigotake.sqlitehelper.ddl;
/* www  . j av a2 s  .  c  om*/
import android.database.sqlite.SQLiteDatabase;
import android.text.TextUtils;

import net.ichigotake.sqlitehelper.schema.FieldAttribute;
import net.ichigotake.sqlitehelper.schema.TableField;
import net.ichigotake.sqlitehelper.schema.TableSchema;
import net.ichigotake.sqlitehelper.schema.UniqueField;

import java.util.ArrayList;
import java.util.List;

public class CreateTable {
    
    private final SQLiteDatabase database;
    private final TableSchema schema;

    public CreateTable(SQLiteDatabase database, TableSchema schema) {
        this.database = database;
        this.schema = schema;
    }
    
    public void createTableIfNotExists() {
        database.execSQL(buildQueryAsCreateTableIfNotExists());
        new CreateIndex(database, schema).createIndexIfNotExists();
    }

    /* visible for testing */
    String buildQueryAsCreateTableIfNotExists() {
        List<String> list = new ArrayList<>();
        for (TableField field : schema.getFields()) {
            String query = field.getFieldName() + " " + field.getFieldType().getReservedName();
            if (field.getAttributes().contains(FieldAttribute.PRIMARY_KEY)) {
                query += " PRIMARY KEY";
            }
            list.add(query);
        }
        for (UniqueField field : schema.getUniqueFields()) {
            list.add(buildQueryAsUnique(field));
        }
        return  "CREATE TABLE IF NOT EXISTS " + schema.getTableName() + " (" + TextUtils.join(",", list) + ")";
    }

    /* visible for testing */
    String buildQueryAsUnique(UniqueField field) {
        List<String> names = new ArrayList<>();
        for (TableField item : field.getFields()) {
            names.add(item.getFieldName());
        }
        return "UNIQUE (" + TextUtils.join(",", names) + ")";
    }

}




Java Source Code List

net.ichigotake.sqlitehelper.Configuration.java
net.ichigotake.sqlitehelper.DatabaseHelperTest.java
net.ichigotake.sqlitehelper.DatabaseHelper.java
net.ichigotake.sqlitehelper.MigrationCallback.java
net.ichigotake.sqlitehelper.MigrationHelper.java
net.ichigotake.sqlitehelper.MockConfiguration.java
net.ichigotake.sqlitehelper.MockTable.java
net.ichigotake.sqlitehelper.NoMigrationCallback.java
net.ichigotake.sqlitehelper.TableCursor.java
net.ichigotake.sqlitehelper.ddl.AlterTableTest.java
net.ichigotake.sqlitehelper.ddl.AlterTable.java
net.ichigotake.sqlitehelper.ddl.CreateIndexTest.java
net.ichigotake.sqlitehelper.ddl.CreateIndex.java
net.ichigotake.sqlitehelper.ddl.CreateTableTest.java
net.ichigotake.sqlitehelper.ddl.CreateTable.java
net.ichigotake.sqlitehelper.dml.Order.java
net.ichigotake.sqlitehelper.dml.SelectTest.java
net.ichigotake.sqlitehelper.dml.Select.java
net.ichigotake.sqlitehelper.dml.WhereTest.java
net.ichigotake.sqlitehelper.dml.Where.java
net.ichigotake.sqlitehelper.schema.DeletableTable.java
net.ichigotake.sqlitehelper.schema.FieldAttribute.java
net.ichigotake.sqlitehelper.schema.Index.java
net.ichigotake.sqlitehelper.schema.InsertableTable.java
net.ichigotake.sqlitehelper.schema.TableFieldType.java
net.ichigotake.sqlitehelper.schema.TableField.java
net.ichigotake.sqlitehelper.schema.TableSchemaBuilder.java
net.ichigotake.sqlitehelper.schema.TableSchema.java
net.ichigotake.sqlitehelper.schema.Table.java
net.ichigotake.sqlitehelper.schema.UniqueField.java
net.ichigotake.sqlitehelper.schema.UpdatableTable.java