Search in sources :

Example 6 with DatabaseBlock

use of com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock in project mechanoid by robotoworks.

the class SqliteOpenHelperGenerator method generateStub.

public CharSequence generateStub(final Model model, final SqliteDatabaseSnapshot snapshot) {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("/*");
    _builder.newLine();
    _builder.append(" ");
    _builder.append("* Generated by Robotoworks Mechanoid");
    _builder.newLine();
    _builder.append(" ");
    _builder.append("*/");
    _builder.newLine();
    _builder.append("package ");
    String _packageName = model.getPackageName();
    _builder.append(_packageName, "");
    _builder.append(";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("import android.content.Context;");
    _builder.newLine();
    _builder.append("import ");
    String _packageName_1 = model.getPackageName();
    _builder.append(_packageName_1, "");
    _builder.append(".Abstract");
    DatabaseBlock _database = model.getDatabase();
    String _name = _database.getName();
    String _pascalize = Strings.pascalize(_name);
    _builder.append(_pascalize, "");
    _builder.append("OpenHelper;");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.newLine();
    _builder.append("public class ");
    DatabaseBlock _database_1 = model.getDatabase();
    String _name_1 = _database_1.getName();
    String _pascalize_1 = Strings.pascalize(_name_1);
    _builder.append(_pascalize_1, "");
    _builder.append("OpenHelper extends Abstract");
    DatabaseBlock _database_2 = model.getDatabase();
    String _name_2 = _database_2.getName();
    String _pascalize_2 = Strings.pascalize(_name_2);
    _builder.append(_pascalize_2, "");
    _builder.append("OpenHelper {");
    _builder.newLineIfNotEmpty();
    _builder.append("\t");
    _builder.append("public ");
    DatabaseBlock _database_3 = model.getDatabase();
    String _name_3 = _database_3.getName();
    String _pascalize_3 = Strings.pascalize(_name_3);
    _builder.append(_pascalize_3, "\t");
    _builder.append("OpenHelper(Context context) {");
    _builder.newLineIfNotEmpty();
    _builder.append("\t\t");
    _builder.append("super(context);");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("}");
    _builder.newLine();
    return _builder;
}
Also used : DatabaseBlock(com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation)

Example 7 with DatabaseBlock

use of com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock in project mechanoid by robotoworks.

the class SqliteOpenHelperGenerator method generate.

public CharSequence generate(final Model model, final SqliteDatabaseSnapshot snapshot) {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("/*");
    _builder.newLine();
    _builder.append(" ");
    _builder.append("* Generated by Robotoworks Mechanoid");
    _builder.newLine();
    _builder.append(" ");
    _builder.append("*/");
    _builder.newLine();
    _builder.append("package ");
    String _packageName = model.getPackageName();
    _builder.append(_packageName, "");
    _builder.append(";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("import android.content.Context;");
    _builder.newLine();
    _builder.append("import android.database.sqlite.SQLiteDatabase;");
    _builder.newLine();
    _builder.append("import com.robotoworks.mechanoid.db.MechanoidSQLiteOpenHelper;");
    _builder.newLine();
    _builder.append("import com.robotoworks.mechanoid.db.SQLiteMigration;");
    _builder.newLine();
    _builder.newLine();
    {
        DatabaseBlock _database = model.getDatabase();
        EList<MigrationBlock> _migrations = _database.getMigrations();
        int _size = _migrations.size();
        boolean _greaterThan = (_size > 0);
        if (_greaterThan) {
            int version = 0;
            _builder.newLineIfNotEmpty();
            {
                DatabaseBlock _database_1 = model.getDatabase();
                EList<MigrationBlock> _migrations_1 = _database_1.getMigrations();
                for (final MigrationBlock migration : _migrations_1) {
                    _builder.append("import ");
                    String _packageName_1 = model.getPackageName();
                    _builder.append(_packageName_1, "");
                    _builder.append(".migrations.Default");
                    DatabaseBlock _database_2 = model.getDatabase();
                    String _name = _database_2.getName();
                    String _pascalize = Strings.pascalize(_name);
                    _builder.append(_pascalize, "");
                    _builder.append("MigrationV");
                    _builder.append(version = (version + 1), "");
                    _builder.append(";");
                    _builder.newLineIfNotEmpty();
                }
            }
        }
    }
    _builder.newLine();
    _builder.append("public abstract class Abstract");
    DatabaseBlock _database_3 = model.getDatabase();
    String _name_1 = _database_3.getName();
    String _pascalize_1 = Strings.pascalize(_name_1);
    _builder.append(_pascalize_1, "");
    _builder.append("OpenHelper extends MechanoidSQLiteOpenHelper {");
    _builder.newLineIfNotEmpty();
    _builder.append("\t");
    _builder.append("private static final String DATABASE_NAME = \"");
    DatabaseBlock _database_4 = model.getDatabase();
    String _name_2 = _database_4.getName();
    _builder.append(_name_2, "\t");
    _builder.append(".db\";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public static final int VERSION = ");
    DatabaseBlock _database_5 = model.getDatabase();
    EList<MigrationBlock> _migrations_2 = _database_5.getMigrations();
    int _size_1 = _migrations_2.size();
    _builder.append(_size_1, "\t");
    _builder.append(";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public interface Sources {");
    _builder.newLine();
    {
        Collection<CreateTableStatement> _tables = snapshot.getTables();
        for (final CreateTableStatement table : _tables) {
            _builder.append("\t\t");
            _builder.append("String ");
            String _name_3 = table.getName();
            String _underscore = Strings.underscore(_name_3);
            String _upperCase = _underscore.toUpperCase();
            _builder.append(_upperCase, "\t\t");
            _builder.append(" = \"");
            String _name_4 = table.getName();
            _builder.append(_name_4, "\t\t");
            _builder.append("\";");
            _builder.newLineIfNotEmpty();
        }
    }
    {
        Collection<CreateViewStatement> _views = snapshot.getViews();
        for (final CreateViewStatement view : _views) {
            _builder.append("\t\t");
            _builder.append("String ");
            String _name_5 = view.getName();
            String _underscore_1 = Strings.underscore(_name_5);
            String _upperCase_1 = _underscore_1.toUpperCase();
            _builder.append(_upperCase_1, "\t\t");
            _builder.append(" = \"");
            String _name_6 = view.getName();
            _builder.append(_name_6, "\t\t");
            _builder.append("\";");
            _builder.newLineIfNotEmpty();
        }
    }
    {
        Collection<CreateTableStatement> _configInitTables = ModelUtil.getConfigInitTables(model);
        for (final CreateTableStatement table_1 : _configInitTables) {
            _builder.append("\t\t");
            _builder.append("String ");
            String _name_7 = table_1.getName();
            String _underscore_2 = Strings.underscore(_name_7);
            String _upperCase_2 = _underscore_2.toUpperCase();
            _builder.append(_upperCase_2, "\t\t");
            _builder.append(" = \"");
            String _name_8 = table_1.getName();
            _builder.append(_name_8, "\t\t");
            _builder.append("\";");
            _builder.newLineIfNotEmpty();
        }
    }
    {
        Collection<CreateViewStatement> _configInitViews = ModelUtil.getConfigInitViews(model);
        for (final CreateViewStatement view_1 : _configInitViews) {
            _builder.append("\t\t");
            _builder.append("String ");
            String _name_9 = view_1.getName();
            String _underscore_3 = Strings.underscore(_name_9);
            String _upperCase_3 = _underscore_3.toUpperCase();
            _builder.append(_upperCase_3, "\t\t");
            _builder.append(" = \"");
            String _name_10 = view_1.getName();
            _builder.append(_name_10, "\t\t");
            _builder.append("\";");
            _builder.newLineIfNotEmpty();
        }
    }
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public Abstract");
    DatabaseBlock _database_6 = model.getDatabase();
    String _name_11 = _database_6.getName();
    String _pascalize_2 = Strings.pascalize(_name_11);
    _builder.append(_pascalize_2, "\t");
    _builder.append("OpenHelper(Context context) {");
    _builder.newLineIfNotEmpty();
    _builder.append("\t\t");
    _builder.append("super(context, DATABASE_NAME, null, VERSION);");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public Abstract");
    DatabaseBlock _database_7 = model.getDatabase();
    String _name_12 = _database_7.getName();
    String _pascalize_3 = Strings.pascalize(_name_12);
    _builder.append(_pascalize_3, "\t");
    _builder.append("OpenHelper(Context context, String name) {");
    _builder.newLineIfNotEmpty();
    _builder.append("\t\t");
    _builder.append("super(context, name, null, VERSION);");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.newLine();
    _builder.append("\t");
    _builder.append("@Override");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public void onCreate(SQLiteDatabase db) {");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("applyMigrations(db, 0, VERSION);");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t");
    _builder.newLine();
    {
        DatabaseBlock _database_8 = model.getDatabase();
        InitBlock _init = _database_8.getInit();
        boolean _notEquals = (!Objects.equal(_init, null));
        if (_notEquals) {
            _builder.append("\t");
            _builder.append("@Override");
            _builder.newLine();
            _builder.append("\t");
            _builder.append("public void onOpen(SQLiteDatabase db) {");
            _builder.newLine();
            _builder.append("\t");
            _builder.append("\t");
            _builder.append("super.onOpen(db);");
            _builder.newLine();
            _builder.append("\t");
            _builder.append("\t");
            _builder.newLine();
            _builder.append("\t");
            _builder.append("\t");
            DatabaseBlock _database_9 = model.getDatabase();
            InitBlock _init_1 = _database_9.getInit();
            EList<DDLStatement> _statements = _init_1.getStatements();
            CharSequence _generateStatements = this._sqliteDatabaseStatementGenerator.generateStatements(_statements);
            _builder.append(_generateStatements, "\t\t");
            _builder.newLineIfNotEmpty();
            _builder.append("\t");
            _builder.append("}");
            _builder.newLine();
        }
    }
    _builder.newLine();
    _builder.append("\t");
    _builder.append("@Override");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("protected SQLiteMigration createMigration(int version) {");
    _builder.newLine();
    {
        DatabaseBlock _database_10 = model.getDatabase();
        EList<MigrationBlock> _migrations_3 = _database_10.getMigrations();
        int _size_2 = _migrations_3.size();
        boolean _greaterThan_1 = (_size_2 > 0);
        if (_greaterThan_1) {
            _builder.append("\t\t");
            int version_1 = (-1);
            _builder.newLineIfNotEmpty();
            _builder.append("\t\t");
            _builder.append("switch(version) {");
            _builder.newLine();
            {
                DatabaseBlock _database_11 = model.getDatabase();
                EList<MigrationBlock> _migrations_4 = _database_11.getMigrations();
                for (final MigrationBlock migration_1 : _migrations_4) {
                    _builder.append("\t\t");
                    _builder.append("\t");
                    _builder.append("case ");
                    _builder.append(version_1 = (version_1 + 1), "\t\t\t");
                    _builder.append(":");
                    _builder.newLineIfNotEmpty();
                    _builder.append("\t\t");
                    _builder.append("\t");
                    _builder.append("\t");
                    _builder.append("return create");
                    DatabaseBlock _database_12 = model.getDatabase();
                    String _name_13 = _database_12.getName();
                    String _pascalize_4 = Strings.pascalize(_name_13);
                    _builder.append(_pascalize_4, "\t\t\t\t");
                    _builder.append("MigrationV");
                    _builder.append((version_1 + 1), "\t\t\t\t");
                    _builder.append("();");
                    _builder.newLineIfNotEmpty();
                }
            }
            _builder.append("\t\t");
            _builder.append("\t");
            _builder.append("default:");
            _builder.newLine();
            _builder.append("\t\t");
            _builder.append("\t\t");
            _builder.append("throw new IllegalStateException(\"No migration for version \" + version);");
            _builder.newLine();
            _builder.append("\t\t");
            _builder.append("}");
            _builder.newLine();
        } else {
            _builder.append("\t\t");
            _builder.append("throw new IllegalStateException(\"No migrations for any version\");");
            _builder.newLine();
        }
    }
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t");
    _builder.newLine();
    {
        DatabaseBlock _database_13 = model.getDatabase();
        EList<MigrationBlock> _migrations_5 = _database_13.getMigrations();
        int _size_3 = _migrations_5.size();
        boolean _greaterThan_2 = (_size_3 > 0);
        if (_greaterThan_2) {
            _builder.append("\t");
            int version_2 = 0;
            _builder.newLineIfNotEmpty();
            {
                DatabaseBlock _database_14 = model.getDatabase();
                EList<MigrationBlock> _migrations_6 = _database_14.getMigrations();
                for (final MigrationBlock migration_2 : _migrations_6) {
                    _builder.append("\t");
                    _builder.append("protected SQLiteMigration create");
                    DatabaseBlock _database_15 = model.getDatabase();
                    String _name_14 = _database_15.getName();
                    String _pascalize_5 = Strings.pascalize(_name_14);
                    _builder.append(_pascalize_5, "\t");
                    _builder.append("MigrationV");
                    _builder.append(version_2 = (version_2 + 1), "\t");
                    _builder.append("() {");
                    _builder.newLineIfNotEmpty();
                    _builder.append("\t");
                    _builder.append("\t");
                    _builder.append("return new Default");
                    DatabaseBlock _database_16 = model.getDatabase();
                    String _name_15 = _database_16.getName();
                    String _pascalize_6 = Strings.pascalize(_name_15);
                    _builder.append(_pascalize_6, "\t\t");
                    _builder.append("MigrationV");
                    _builder.append(version_2, "\t\t");
                    _builder.append("();");
                    _builder.newLineIfNotEmpty();
                    _builder.append("\t");
                    _builder.append("}");
                    _builder.newLine();
                }
            }
        }
    }
    _builder.append("}");
    _builder.newLine();
    return _builder;
}
Also used : DatabaseBlock(com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock) EList(org.eclipse.emf.common.util.EList) CreateViewStatement(com.robotoworks.mechanoid.db.sqliteModel.CreateViewStatement) CreateTableStatement(com.robotoworks.mechanoid.db.sqliteModel.CreateTableStatement) InitBlock(com.robotoworks.mechanoid.db.sqliteModel.InitBlock) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) Collection(java.util.Collection) MigrationBlock(com.robotoworks.mechanoid.db.sqliteModel.MigrationBlock)

Example 8 with DatabaseBlock

use of com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock in project mechanoid by robotoworks.

the class ContentProviderContractGenerator method generateContractItem.

public CharSequence generateContractItem(final Model model, final SqliteDatabaseSnapshot snapshot, final TableDefinition stmt) {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("/**");
    _builder.newLine();
    _builder.append(" ");
    _builder.append("* <p>Column definitions and helper methods to work with the ");
    String _name = stmt.getName();
    String _pascalize = Strings.pascalize(_name);
    _builder.append(_pascalize, " ");
    _builder.append(".</p>");
    _builder.newLineIfNotEmpty();
    _builder.append(" ");
    _builder.append("*/");
    _builder.newLine();
    _builder.append("public static class ");
    String _name_1 = stmt.getName();
    String _pascalize_1 = Strings.pascalize(_name_1);
    _builder.append(_pascalize_1, "");
    _builder.append(" implements ");
    String _name_2 = stmt.getName();
    String _pascalize_2 = Strings.pascalize(_name_2);
    _builder.append(_pascalize_2, "");
    _builder.append("Columns");
    {
        boolean _hasAndroidPrimaryKey = this.hasAndroidPrimaryKey(stmt);
        if (_hasAndroidPrimaryKey) {
            _builder.append(", BaseColumns");
        }
    }
    _builder.append(" {");
    _builder.newLineIfNotEmpty();
    _builder.append("    ");
    _builder.append("public static final Uri CONTENT_URI = ");
    _builder.newLine();
    _builder.append("\t\t\t");
    _builder.append("BASE_CONTENT_URI.buildUpon().appendPath(\"");
    String _name_3 = stmt.getName();
    _builder.append(_name_3, "\t\t\t");
    _builder.append("\").build();");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("\t");
    _builder.append("/**");
    _builder.newLine();
    _builder.append("\t ");
    _builder.append("* <p>The content type for a cursor that contains many ");
    String _name_4 = stmt.getName();
    String _pascalize_3 = Strings.pascalize(_name_4);
    _builder.append(_pascalize_3, "\t ");
    _builder.append(" rows.</p>");
    _builder.newLineIfNotEmpty();
    _builder.append("\t ");
    _builder.append("*/");
    _builder.newLine();
    _builder.append("    ");
    _builder.append("public static final String CONTENT_TYPE =");
    _builder.newLine();
    _builder.append("            ");
    _builder.append("\"vnd.android.cursor.dir/vnd.");
    DatabaseBlock _database = model.getDatabase();
    String _name_5 = _database.getName();
    String _lowerCase = _name_5.toLowerCase();
    _builder.append(_lowerCase, "            ");
    _builder.append(".");
    String _name_6 = stmt.getName();
    _builder.append(_name_6, "            ");
    _builder.append("\";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    {
        boolean _hasAndroidPrimaryKey_1 = this.hasAndroidPrimaryKey(stmt);
        if (_hasAndroidPrimaryKey_1) {
            _builder.append("\t");
            _builder.append("/**");
            _builder.newLine();
            _builder.append("\t");
            _builder.append(" ");
            _builder.append("* <p>The content type for a cursor that contains a single ");
            String _name_7 = stmt.getName();
            String _pascalize_4 = Strings.pascalize(_name_7);
            _builder.append(_pascalize_4, "\t ");
            _builder.append(" row.</p>");
            _builder.newLineIfNotEmpty();
            _builder.append("\t");
            _builder.append(" ");
            _builder.append("*/");
            _builder.newLine();
            _builder.append("\t");
            _builder.append("public static final String ITEM_CONTENT_TYPE =");
            _builder.newLine();
            _builder.append("\t");
            _builder.append("\t");
            _builder.append("\"vnd.android.cursor.item/vnd.");
            DatabaseBlock _database_1 = model.getDatabase();
            String _name_8 = _database_1.getName();
            String _lowerCase_1 = _name_8.toLowerCase();
            _builder.append(_lowerCase_1, "\t\t");
            _builder.append(".");
            String _name_9 = stmt.getName();
            _builder.append(_name_9, "\t\t");
            _builder.append("\";");
            _builder.newLineIfNotEmpty();
        }
    }
    _builder.newLine();
    _builder.append("\t");
    _builder.append("/**");
    _builder.newLine();
    _builder.append("\t ");
    _builder.append("* <p>Builds a Uri with appended id for a row in ");
    String _name_10 = stmt.getName();
    String _pascalize_5 = Strings.pascalize(_name_10);
    _builder.append(_pascalize_5, "\t ");
    _builder.append(", ");
    _builder.newLineIfNotEmpty();
    _builder.append("\t ");
    _builder.append("* eg:- content://");
    String _packageName = model.getPackageName();
    _builder.append(_packageName, "\t ");
    _builder.append(".");
    DatabaseBlock _database_2 = model.getDatabase();
    String _name_11 = _database_2.getName();
    String _lowerCase_2 = _name_11.toLowerCase();
    _builder.append(_lowerCase_2, "\t ");
    _builder.append("/");
    String _name_12 = stmt.getName();
    String _lowerCase_3 = _name_12.toLowerCase();
    _builder.append(_lowerCase_3, "\t ");
    _builder.append("/123.</p>");
    _builder.newLineIfNotEmpty();
    _builder.append("\t ");
    _builder.append("*/");
    _builder.newLine();
    _builder.append("    ");
    _builder.append("public static Uri buildUriWithId(long id) {");
    _builder.newLine();
    _builder.append("        ");
    _builder.append("return CONTENT_URI.buildUpon().appendPath(String.valueOf(id)).build();");
    _builder.newLine();
    _builder.append("    ");
    _builder.append("}");
    _builder.newLine();
    _builder.append("    ");
    String _name_13 = stmt.getName();
    Iterable<ActionStatement> actions = this.findActionsForDefinition(model, _name_13);
    _builder.newLineIfNotEmpty();
    {
        boolean _notEquals = (!Objects.equal(actions, null));
        if (_notEquals) {
            {
                for (final ActionStatement action : actions) {
                    _builder.append("\t");
                    CharSequence _createActionUriBuilderMethod = this.createActionUriBuilderMethod(action);
                    _builder.append(_createActionUriBuilderMethod, "\t");
                    _builder.newLineIfNotEmpty();
                    _builder.append("\t");
                    _builder.newLine();
                }
            }
        }
    }
    _builder.append("\t");
    _builder.append("public static int delete() {");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("return Mechanoid.getContentResolver().delete(");
    String _name_14 = stmt.getName();
    String _pascalize_6 = Strings.pascalize(_name_14);
    _builder.append(_pascalize_6, "\t\t");
    _builder.append(".CONTENT_URI, null, null);");
    _builder.newLineIfNotEmpty();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public static int delete(String where, String[] selectionArgs) {");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("return Mechanoid.getContentResolver().delete(");
    String _name_15 = stmt.getName();
    String _pascalize_7 = Strings.pascalize(_name_15);
    _builder.append(_pascalize_7, "\t\t");
    _builder.append(".CONTENT_URI, where, selectionArgs);");
    _builder.newLineIfNotEmpty();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("/**");
    _builder.newLine();
    _builder.append("\t ");
    _builder.append("* <p>Create a new Builder for ");
    String _name_16 = stmt.getName();
    String _pascalize_8 = Strings.pascalize(_name_16);
    _builder.append(_pascalize_8, "\t ");
    _builder.append("</p>");
    _builder.newLineIfNotEmpty();
    _builder.append("\t ");
    _builder.append("*/");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public static Builder newBuilder() {");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("return new Builder();");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("/**");
    _builder.newLine();
    _builder.append("\t ");
    _builder.append("* <p>Build and execute insert or update statements for ");
    String _name_17 = stmt.getName();
    String _pascalize_9 = Strings.pascalize(_name_17);
    _builder.append(_pascalize_9, "\t ");
    _builder.append(".</p>");
    _builder.newLineIfNotEmpty();
    _builder.append("\t ");
    _builder.append("*");
    _builder.newLine();
    _builder.append("\t ");
    _builder.append("* <p>Use {@link ");
    String _name_18 = stmt.getName();
    String _pascalize_10 = Strings.pascalize(_name_18);
    _builder.append(_pascalize_10, "\t ");
    _builder.append("#newBuilder()} to create new builder</p>");
    _builder.newLineIfNotEmpty();
    _builder.append("\t ");
    _builder.append("*/");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public static class Builder extends AbstractValuesBuilder {");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("private Builder() {");
    _builder.newLine();
    _builder.append("\t\t\t");
    _builder.append("super(Mechanoid.getApplicationContext(), ");
    String _name_19 = stmt.getName();
    String _pascalize_11 = Strings.pascalize(_name_19);
    _builder.append(_pascalize_11, "\t\t\t");
    _builder.append(".CONTENT_URI);");
    _builder.newLineIfNotEmpty();
    _builder.append("\t\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.newLine();
    _builder.append("\t\t");
    CharSequence _generateBuilderSetters = this.generateBuilderSetters(stmt);
    _builder.append(_generateBuilderSetters, "\t\t");
    _builder.newLineIfNotEmpty();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("static final Set<Uri> VIEW_URIS;");
    _builder.newLine();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("static {");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("HashSet<Uri> viewUris =  new HashSet<Uri>();");
    _builder.newLine();
    _builder.newLine();
    {
        HashSet<CreateViewStatement> _allViewsReferencingTable = ModelUtil.getAllViewsReferencingTable(snapshot, stmt);
        final Function1<CreateViewStatement, String> _function = new Function1<CreateViewStatement, String>() {

            public String apply(final CreateViewStatement x) {
                return x.getName();
            }
        };
        List<CreateViewStatement> _sortBy = IterableExtensions.<CreateViewStatement, String>sortBy(_allViewsReferencingTable, _function);
        for (final CreateViewStatement ref : _sortBy) {
            _builder.append("\t\t");
            _builder.append("viewUris.add(");
            String _name_20 = ref.getName();
            String _pascalize_12 = Strings.pascalize(_name_20);
            _builder.append(_pascalize_12, "\t\t");
            _builder.append(".CONTENT_URI);");
            _builder.newLineIfNotEmpty();
        }
    }
    {
        HashSet<CreateViewStatement> _allViewsInConfigInitReferencingTable = ModelUtil.getAllViewsInConfigInitReferencingTable(model, stmt);
        final Function1<CreateViewStatement, String> _function_1 = new Function1<CreateViewStatement, String>() {

            public String apply(final CreateViewStatement x) {
                return x.getName();
            }
        };
        List<CreateViewStatement> _sortBy_1 = IterableExtensions.<CreateViewStatement, String>sortBy(_allViewsInConfigInitReferencingTable, _function_1);
        for (final CreateViewStatement ref_1 : _sortBy_1) {
            _builder.append("\t\t");
            _builder.append("viewUris.add(");
            String _name_21 = ref_1.getName();
            String _pascalize_13 = Strings.pascalize(_name_21);
            _builder.append(_pascalize_13, "\t\t");
            _builder.append(".CONTENT_URI);");
            _builder.newLineIfNotEmpty();
        }
    }
    _builder.append("\t\t");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("VIEW_URIS = Collections.unmodifiableSet(viewUris);");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("}");
    _builder.newLine();
    return _builder;
}
Also used : ActionStatement(com.robotoworks.mechanoid.db.sqliteModel.ActionStatement) DatabaseBlock(com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock) CreateViewStatement(com.robotoworks.mechanoid.db.sqliteModel.CreateViewStatement) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) Function1(org.eclipse.xtext.xbase.lib.Functions.Function1) ArrayList(java.util.ArrayList) EList(org.eclipse.emf.common.util.EList) List(java.util.List) HashSet(java.util.HashSet)

Example 9 with DatabaseBlock

use of com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock in project mechanoid by robotoworks.

the class ContentProviderContractGenerator method findActionsForDefinition.

/**
   * Find all actions associated to the given definition,
   * actions are associated to the definition via the first
   * part of an action uri, for instance /recipes/a/b/c is
   * associated to recipes
   */
public Iterable<ActionStatement> findActionsForDefinition(final Model model, final String defName) {
    DatabaseBlock _database = model.getDatabase();
    ConfigBlock _config = _database.getConfig();
    boolean _equals = Objects.equal(_config, null);
    if (_equals) {
        return new ArrayList<ActionStatement>();
    }
    DatabaseBlock _database_1 = model.getDatabase();
    ConfigBlock _config_1 = _database_1.getConfig();
    EList<ConfigurationStatement> _statements = _config_1.getStatements();
    Iterable<ActionStatement> _filter = Iterables.<ActionStatement>filter(_statements, ActionStatement.class);
    final Function1<ActionStatement, Boolean> _function = new Function1<ActionStatement, Boolean>() {

        public Boolean apply(final ActionStatement action) {
            ContentUri _uri = action.getUri();
            String _type = _uri.getType();
            return Boolean.valueOf(_type.equals(defName));
        }
    };
    return IterableExtensions.<ActionStatement>filter(_filter, _function);
}
Also used : ActionStatement(com.robotoworks.mechanoid.db.sqliteModel.ActionStatement) DatabaseBlock(com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock) ContentUri(com.robotoworks.mechanoid.db.sqliteModel.ContentUri) ArrayList(java.util.ArrayList) Function1(org.eclipse.xtext.xbase.lib.Functions.Function1) ConfigurationStatement(com.robotoworks.mechanoid.db.sqliteModel.ConfigurationStatement) ConfigBlock(com.robotoworks.mechanoid.db.sqliteModel.ConfigBlock)

Example 10 with DatabaseBlock

use of com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock in project mechanoid by robotoworks.

the class ContentProviderContractGenerator method generate.

public CharSequence generate(final Model model, final SqliteDatabaseSnapshot snapshot) {
    StringConcatenation _builder = new StringConcatenation();
    _builder.append("/*");
    _builder.newLine();
    _builder.append(" ");
    _builder.append("* Generated by Robotoworks Mechanoid");
    _builder.newLine();
    _builder.append(" ");
    _builder.append("*/");
    _builder.newLine();
    _builder.append("package ");
    String _packageName = model.getPackageName();
    _builder.append(_packageName, "");
    _builder.append(";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("import android.net.Uri;");
    _builder.newLine();
    _builder.append("import android.provider.BaseColumns;");
    _builder.newLine();
    _builder.append("import com.robotoworks.mechanoid.Mechanoid;");
    _builder.newLine();
    _builder.append("import com.robotoworks.mechanoid.db.AbstractValuesBuilder;");
    _builder.newLine();
    _builder.append("import java.lang.reflect.Field;\t\t\t");
    _builder.newLine();
    _builder.append("import java.util.Collections;");
    _builder.newLine();
    _builder.append("import java.util.HashSet;");
    _builder.newLine();
    _builder.append("import java.util.HashMap;");
    _builder.newLine();
    _builder.append("import java.util.Set;");
    _builder.newLine();
    _builder.append("import java.util.Map;");
    _builder.newLine();
    _builder.newLine();
    _builder.append("public class ");
    DatabaseBlock _database = model.getDatabase();
    String _name = _database.getName();
    String _pascalize = Strings.pascalize(_name);
    _builder.append(_pascalize, "");
    _builder.append("Contract  {");
    _builder.newLineIfNotEmpty();
    _builder.append("    ");
    _builder.append("public static final String CONTENT_AUTHORITY = initAuthority();");
    _builder.newLine();
    _builder.newLine();
    _builder.append("\t");
    _builder.append("private static String initAuthority() {");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("String authority = \"");
    String _packageName_1 = model.getPackageName();
    _builder.append(_packageName_1, "\t\t");
    _builder.append(".");
    DatabaseBlock _database_1 = model.getDatabase();
    String _name_1 = _database_1.getName();
    String _lowerCase = _name_1.toLowerCase();
    _builder.append(_lowerCase, "\t\t");
    _builder.append("\";");
    _builder.newLineIfNotEmpty();
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("try {");
    _builder.newLine();
    _builder.append("    \t\t");
    _builder.newLine();
    _builder.append("    \t\t");
    _builder.append("ClassLoader loader = ");
    DatabaseBlock _database_2 = model.getDatabase();
    String _name_2 = _database_2.getName();
    String _pascalize_1 = Strings.pascalize(_name_2);
    _builder.append(_pascalize_1, "    \t\t");
    _builder.append("Contract.class.getClassLoader();");
    _builder.newLineIfNotEmpty();
    _builder.append("    \t\t");
    _builder.newLine();
    _builder.append("\t\t\t");
    _builder.append("Class<?> clz = loader.loadClass(\"");
    String _packageName_2 = model.getPackageName();
    _builder.append(_packageName_2, "\t\t\t");
    _builder.append(".");
    DatabaseBlock _database_3 = model.getDatabase();
    String _name_3 = _database_3.getName();
    String _pascalize_2 = Strings.pascalize(_name_3);
    _builder.append(_pascalize_2, "\t\t\t");
    _builder.append("ContentProviderAuthority\");");
    _builder.newLineIfNotEmpty();
    _builder.append("\t\t\t");
    _builder.append("Field declaredField = clz.getDeclaredField(\"CONTENT_AUTHORITY\");");
    _builder.newLine();
    _builder.append("\t\t\t");
    _builder.newLine();
    _builder.append("\t\t\t");
    _builder.append("authority = declaredField.get(null).toString();");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("} catch (ClassNotFoundException e) {} ");
    _builder.newLine();
    _builder.append("    \t");
    _builder.append("catch (NoSuchFieldException e) {} ");
    _builder.newLine();
    _builder.append("    \t");
    _builder.append("catch (IllegalArgumentException e) {");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("} catch (IllegalAccessException e) {");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("return authority;");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("    ");
    _builder.append("private static final Uri BASE_CONTENT_URI = Uri.parse(\"content://\" + CONTENT_AUTHORITY);");
    _builder.newLine();
    _builder.newLine();
    {
        Collection<CreateTableStatement> _tables = snapshot.getTables();
        final Function1<CreateTableStatement, String> _function = new Function1<CreateTableStatement, String>() {

            public String apply(final CreateTableStatement x) {
                return x.getName();
            }
        };
        List<CreateTableStatement> _sortBy = IterableExtensions.<CreateTableStatement, String>sortBy(_tables, _function);
        for (final CreateTableStatement tbl : _sortBy) {
            _builder.append("\t");
            _builder.append("interface ");
            String _name_4 = tbl.getName();
            String _pascalize_3 = Strings.pascalize(_name_4);
            _builder.append(_pascalize_3, "\t");
            _builder.append("Columns {");
            _builder.newLineIfNotEmpty();
            {
                EList<ColumnSource> _columnDefs = tbl.getColumnDefs();
                final Function1<ColumnSource, Boolean> _function_1 = new Function1<ColumnSource, Boolean>() {

                    public Boolean apply(final ColumnSource it) {
                        String _name = it.getName();
                        boolean _equals = _name.equals("_id");
                        return Boolean.valueOf((!_equals));
                    }
                };
                Iterable<ColumnSource> _filter = IterableExtensions.<ColumnSource>filter(_columnDefs, _function_1);
                for (final ColumnSource col : _filter) {
                    _builder.append("\t");
                    _builder.append("\t");
                    _builder.append("String ");
                    String _name_5 = col.getName();
                    String _underscore = Strings.underscore(_name_5);
                    String _upperCase = _underscore.toUpperCase();
                    _builder.append(_upperCase, "\t\t");
                    _builder.append(" = \"");
                    String _name_6 = col.getName();
                    _builder.append(_name_6, "\t\t");
                    _builder.append("\";");
                    _builder.newLineIfNotEmpty();
                }
            }
            _builder.append("\t");
            _builder.append("}");
            _builder.newLine();
            _builder.append("\t");
            _builder.newLine();
        }
    }
    {
        Collection<CreateViewStatement> _views = snapshot.getViews();
        final Function1<CreateViewStatement, String> _function_2 = new Function1<CreateViewStatement, String>() {

            public String apply(final CreateViewStatement x) {
                return x.getName();
            }
        };
        List<CreateViewStatement> _sortBy_1 = IterableExtensions.<CreateViewStatement, String>sortBy(_views, _function_2);
        for (final CreateViewStatement vw : _sortBy_1) {
            _builder.append("\t");
            _builder.append("interface ");
            String _name_7 = vw.getName();
            String _pascalize_4 = Strings.pascalize(_name_7);
            _builder.append(_pascalize_4, "\t");
            _builder.append("Columns {");
            _builder.newLineIfNotEmpty();
            {
                ArrayList<ColumnSource> _viewResultColumns = ModelUtil.getViewResultColumns(vw);
                final Function1<ColumnSource, Boolean> _function_3 = new Function1<ColumnSource, Boolean>() {

                    public Boolean apply(final ColumnSource it) {
                        String _name = it.getName();
                        boolean _equals = _name.equals("_id");
                        return Boolean.valueOf((!_equals));
                    }
                };
                Iterable<ColumnSource> _filter_1 = IterableExtensions.<ColumnSource>filter(_viewResultColumns, _function_3);
                for (final ColumnSource col_1 : _filter_1) {
                    _builder.append("\t");
                    _builder.append("\t");
                    CharSequence _generateInterfaceMemberForResultColumn = this.generateInterfaceMemberForResultColumn(col_1);
                    _builder.append(_generateInterfaceMemberForResultColumn, "\t\t");
                    _builder.newLineIfNotEmpty();
                }
            }
            _builder.append("\t");
            _builder.append("}");
            _builder.newLine();
        }
    }
    {
        Collection<CreateTableStatement> _configInitTables = ModelUtil.getConfigInitTables(model);
        final Function1<CreateTableStatement, String> _function_4 = new Function1<CreateTableStatement, String>() {

            public String apply(final CreateTableStatement x) {
                return x.getName();
            }
        };
        List<CreateTableStatement> _sortBy_2 = IterableExtensions.<CreateTableStatement, String>sortBy(_configInitTables, _function_4);
        for (final CreateTableStatement tbl_1 : _sortBy_2) {
            _builder.append("\t");
            _builder.append("interface ");
            String _name_8 = tbl_1.getName();
            String _pascalize_5 = Strings.pascalize(_name_8);
            _builder.append(_pascalize_5, "\t");
            _builder.append("Columns {");
            _builder.newLineIfNotEmpty();
            {
                EList<ColumnSource> _columnDefs_1 = tbl_1.getColumnDefs();
                final Function1<ColumnSource, Boolean> _function_5 = new Function1<ColumnSource, Boolean>() {

                    public Boolean apply(final ColumnSource it) {
                        String _name = it.getName();
                        boolean _equals = _name.equals("_id");
                        return Boolean.valueOf((!_equals));
                    }
                };
                Iterable<ColumnSource> _filter_2 = IterableExtensions.<ColumnSource>filter(_columnDefs_1, _function_5);
                for (final ColumnSource col_2 : _filter_2) {
                    _builder.append("\t");
                    _builder.append("\t");
                    _builder.append("String ");
                    String _name_9 = col_2.getName();
                    String _underscore_1 = Strings.underscore(_name_9);
                    String _upperCase_1 = _underscore_1.toUpperCase();
                    _builder.append(_upperCase_1, "\t\t");
                    _builder.append(" = \"");
                    String _name_10 = col_2.getName();
                    _builder.append(_name_10, "\t\t");
                    _builder.append("\";");
                    _builder.newLineIfNotEmpty();
                }
            }
            _builder.append("\t");
            _builder.append("}");
            _builder.newLine();
            _builder.append("\t");
            _builder.newLine();
        }
    }
    {
        Collection<CreateViewStatement> _configInitViews = ModelUtil.getConfigInitViews(model);
        final Function1<CreateViewStatement, String> _function_6 = new Function1<CreateViewStatement, String>() {

            public String apply(final CreateViewStatement x) {
                return x.getName();
            }
        };
        List<CreateViewStatement> _sortBy_3 = IterableExtensions.<CreateViewStatement, String>sortBy(_configInitViews, _function_6);
        for (final CreateViewStatement vw_1 : _sortBy_3) {
            _builder.append("\t");
            _builder.append("interface ");
            String _name_11 = vw_1.getName();
            String _pascalize_6 = Strings.pascalize(_name_11);
            _builder.append(_pascalize_6, "\t");
            _builder.append("Columns {");
            _builder.newLineIfNotEmpty();
            {
                ArrayList<ColumnSource> _viewResultColumns_1 = ModelUtil.getViewResultColumns(vw_1);
                final Function1<ColumnSource, Boolean> _function_7 = new Function1<ColumnSource, Boolean>() {

                    public Boolean apply(final ColumnSource it) {
                        String _name = it.getName();
                        boolean _equals = _name.equals("_id");
                        return Boolean.valueOf((!_equals));
                    }
                };
                Iterable<ColumnSource> _filter_3 = IterableExtensions.<ColumnSource>filter(_viewResultColumns_1, _function_7);
                for (final ColumnSource col_3 : _filter_3) {
                    _builder.append("\t");
                    _builder.append("\t");
                    CharSequence _generateInterfaceMemberForResultColumn_1 = this.generateInterfaceMemberForResultColumn(col_3);
                    _builder.append(_generateInterfaceMemberForResultColumn_1, "\t\t");
                    _builder.newLineIfNotEmpty();
                }
            }
            _builder.append("\t");
            _builder.append("}");
            _builder.newLine();
            _builder.append("\t");
            _builder.newLine();
        }
    }
    _builder.append("\t\t\t");
    _builder.newLine();
    {
        Collection<CreateTableStatement> _tables_1 = snapshot.getTables();
        final Function1<CreateTableStatement, String> _function_8 = new Function1<CreateTableStatement, String>() {

            public String apply(final CreateTableStatement x) {
                return x.getName();
            }
        };
        List<CreateTableStatement> _sortBy_4 = IterableExtensions.<CreateTableStatement, String>sortBy(_tables_1, _function_8);
        for (final CreateTableStatement tbl_2 : _sortBy_4) {
            _builder.append("\t");
            CharSequence _generateContractItem = this.generateContractItem(model, snapshot, tbl_2);
            _builder.append(_generateContractItem, "\t");
            _builder.newLineIfNotEmpty();
        }
    }
    _builder.newLine();
    {
        Collection<CreateViewStatement> _views_1 = snapshot.getViews();
        final Function1<CreateViewStatement, String> _function_9 = new Function1<CreateViewStatement, String>() {

            public String apply(final CreateViewStatement x) {
                return x.getName();
            }
        };
        List<CreateViewStatement> _sortBy_5 = IterableExtensions.<CreateViewStatement, String>sortBy(_views_1, _function_9);
        for (final CreateViewStatement vw_2 : _sortBy_5) {
            _builder.append("\t");
            CharSequence _generateContractItem_1 = this.generateContractItem(model, snapshot, vw_2);
            _builder.append(_generateContractItem_1, "\t");
            _builder.newLineIfNotEmpty();
        }
    }
    _builder.append("\t");
    _builder.newLine();
    {
        Collection<CreateTableStatement> _configInitTables_1 = ModelUtil.getConfigInitTables(model);
        final Function1<CreateTableStatement, String> _function_10 = new Function1<CreateTableStatement, String>() {

            public String apply(final CreateTableStatement x) {
                return x.getName();
            }
        };
        List<CreateTableStatement> _sortBy_6 = IterableExtensions.<CreateTableStatement, String>sortBy(_configInitTables_1, _function_10);
        for (final CreateTableStatement tbl_3 : _sortBy_6) {
            _builder.append("\t");
            CharSequence _generateContractItem_2 = this.generateContractItem(model, snapshot, tbl_3);
            _builder.append(_generateContractItem_2, "\t");
            _builder.newLineIfNotEmpty();
        }
    }
    _builder.newLine();
    {
        Collection<CreateViewStatement> _configInitViews_1 = ModelUtil.getConfigInitViews(model);
        final Function1<CreateViewStatement, String> _function_11 = new Function1<CreateViewStatement, String>() {

            public String apply(final CreateViewStatement x) {
                return x.getName();
            }
        };
        List<CreateViewStatement> _sortBy_7 = IterableExtensions.<CreateViewStatement, String>sortBy(_configInitViews_1, _function_11);
        for (final CreateViewStatement vw_3 : _sortBy_7) {
            _builder.append("\t");
            CharSequence _generateContractItem_3 = this.generateContractItem(model, snapshot, vw_3);
            _builder.append(_generateContractItem_3, "\t");
            _builder.newLineIfNotEmpty();
        }
    }
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("static Map<Uri, Set<Uri>> REFERENCING_VIEWS;");
    _builder.newLine();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("static {");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("Map<Uri, Set<Uri>> map = new HashMap<Uri, Set<Uri>>();");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.newLine();
    {
        Collection<CreateTableStatement> _tables_2 = snapshot.getTables();
        final Function1<CreateTableStatement, String> _function_12 = new Function1<CreateTableStatement, String>() {

            public String apply(final CreateTableStatement x) {
                return x.getName();
            }
        };
        List<CreateTableStatement> _sortBy_8 = IterableExtensions.<CreateTableStatement, String>sortBy(_tables_2, _function_12);
        for (final CreateTableStatement tbl_4 : _sortBy_8) {
            _builder.append("\t\t");
            _builder.append("map.put(");
            String _name_12 = tbl_4.getName();
            String _pascalize_7 = Strings.pascalize(_name_12);
            _builder.append(_pascalize_7, "\t\t");
            _builder.append(".CONTENT_URI, ");
            String _name_13 = tbl_4.getName();
            String _pascalize_8 = Strings.pascalize(_name_13);
            _builder.append(_pascalize_8, "\t\t");
            _builder.append(".VIEW_URIS);");
            _builder.newLineIfNotEmpty();
        }
    }
    {
        Collection<CreateViewStatement> _views_2 = snapshot.getViews();
        final Function1<CreateViewStatement, String> _function_13 = new Function1<CreateViewStatement, String>() {

            public String apply(final CreateViewStatement x) {
                return x.getName();
            }
        };
        List<CreateViewStatement> _sortBy_9 = IterableExtensions.<CreateViewStatement, String>sortBy(_views_2, _function_13);
        for (final CreateViewStatement vw_4 : _sortBy_9) {
            _builder.append("\t\t");
            _builder.append("map.put(");
            String _name_14 = vw_4.getName();
            String _pascalize_9 = Strings.pascalize(_name_14);
            _builder.append(_pascalize_9, "\t\t");
            _builder.append(".CONTENT_URI, ");
            String _name_15 = vw_4.getName();
            String _pascalize_10 = Strings.pascalize(_name_15);
            _builder.append(_pascalize_10, "\t\t");
            _builder.append(".VIEW_URIS);");
            _builder.newLineIfNotEmpty();
        }
    }
    {
        Collection<CreateTableStatement> _configInitTables_2 = ModelUtil.getConfigInitTables(model);
        final Function1<CreateTableStatement, String> _function_14 = new Function1<CreateTableStatement, String>() {

            public String apply(final CreateTableStatement x) {
                return x.getName();
            }
        };
        List<CreateTableStatement> _sortBy_10 = IterableExtensions.<CreateTableStatement, String>sortBy(_configInitTables_2, _function_14);
        for (final CreateTableStatement tbl_5 : _sortBy_10) {
            _builder.append("\t\t");
            _builder.append("map.put(");
            String _name_16 = tbl_5.getName();
            String _pascalize_11 = Strings.pascalize(_name_16);
            _builder.append(_pascalize_11, "\t\t");
            _builder.append(".CONTENT_URI, ");
            String _name_17 = tbl_5.getName();
            String _pascalize_12 = Strings.pascalize(_name_17);
            _builder.append(_pascalize_12, "\t\t");
            _builder.append(".VIEW_URIS);");
            _builder.newLineIfNotEmpty();
        }
    }
    {
        Collection<CreateViewStatement> _configInitViews_2 = ModelUtil.getConfigInitViews(model);
        final Function1<CreateViewStatement, String> _function_15 = new Function1<CreateViewStatement, String>() {

            public String apply(final CreateViewStatement x) {
                return x.getName();
            }
        };
        List<CreateViewStatement> _sortBy_11 = IterableExtensions.<CreateViewStatement, String>sortBy(_configInitViews_2, _function_15);
        for (final CreateViewStatement vw_5 : _sortBy_11) {
            _builder.append("\t\t");
            _builder.append("map.put(");
            String _name_18 = vw_5.getName();
            String _pascalize_13 = Strings.pascalize(_name_18);
            _builder.append(_pascalize_13, "\t\t");
            _builder.append(".CONTENT_URI, ");
            String _name_19 = vw_5.getName();
            String _pascalize_14 = Strings.pascalize(_name_19);
            _builder.append(_pascalize_14, "\t\t");
            _builder.append(".VIEW_URIS);");
            _builder.newLineIfNotEmpty();
        }
    }
    _builder.append("\t\t");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.append("REFERENCING_VIEWS = Collections.unmodifiableMap(map);");
    _builder.newLine();
    _builder.append("\t\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    CharSequence _generateContractItemsForActions = this.generateContractItemsForActions(model, snapshot);
    _builder.append(_generateContractItemsForActions, "\t");
    _builder.newLineIfNotEmpty();
    _builder.append("\t");
    _builder.append("private ");
    DatabaseBlock _database_4 = model.getDatabase();
    String _name_20 = _database_4.getName();
    String _pascalize_15 = Strings.pascalize(_name_20);
    _builder.append(_pascalize_15, "\t");
    _builder.append("Contract(){}");
    _builder.newLineIfNotEmpty();
    _builder.append("\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("/**");
    _builder.newLine();
    _builder.append("\t ");
    _builder.append("* <p>Delete all rows from all tables</p>");
    _builder.newLine();
    _builder.append("\t ");
    _builder.append("*/\t\t\t\t\t\t");
    _builder.newLine();
    _builder.append("\t");
    _builder.append("public static void deleteAll() {");
    _builder.newLine();
    {
        Collection<CreateTableStatement> _tables_3 = snapshot.getTables();
        final Function1<CreateTableStatement, String> _function_16 = new Function1<CreateTableStatement, String>() {

            public String apply(final CreateTableStatement x) {
                return x.getName();
            }
        };
        List<CreateTableStatement> _sortBy_12 = IterableExtensions.<CreateTableStatement, String>sortBy(_tables_3, _function_16);
        for (final CreateTableStatement tbl_6 : _sortBy_12) {
            _builder.append("\t\t");
            String _name_21 = tbl_6.getName();
            String _pascalize_16 = Strings.pascalize(_name_21);
            _builder.append(_pascalize_16, "\t\t");
            _builder.append(".delete();");
            _builder.newLineIfNotEmpty();
        }
    }
    {
        Collection<CreateTableStatement> _configInitTables_3 = ModelUtil.getConfigInitTables(model);
        final Function1<CreateTableStatement, String> _function_17 = new Function1<CreateTableStatement, String>() {

            public String apply(final CreateTableStatement x) {
                return x.getName();
            }
        };
        List<CreateTableStatement> _sortBy_13 = IterableExtensions.<CreateTableStatement, String>sortBy(_configInitTables_3, _function_17);
        for (final CreateTableStatement tbl_7 : _sortBy_13) {
            _builder.append("\t\t");
            String _name_22 = tbl_7.getName();
            String _pascalize_17 = Strings.pascalize(_name_22);
            _builder.append(_pascalize_17, "\t\t");
            _builder.append(".delete();");
            _builder.newLineIfNotEmpty();
        }
    }
    _builder.append("\t");
    _builder.append("}");
    _builder.newLine();
    _builder.append("}");
    _builder.newLine();
    return _builder;
}
Also used : DatabaseBlock(com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock) CreateViewStatement(com.robotoworks.mechanoid.db.sqliteModel.CreateViewStatement) CreateTableStatement(com.robotoworks.mechanoid.db.sqliteModel.CreateTableStatement) Function1(org.eclipse.xtext.xbase.lib.Functions.Function1) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) Collection(java.util.Collection) ArrayList(java.util.ArrayList) EList(org.eclipse.emf.common.util.EList) List(java.util.List) ColumnSource(com.robotoworks.mechanoid.db.sqliteModel.ColumnSource)

Aggregations

DatabaseBlock (com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock)20 StringConcatenation (org.eclipse.xtend2.lib.StringConcatenation)9 CreateViewStatement (com.robotoworks.mechanoid.db.sqliteModel.CreateViewStatement)6 DDLStatement (com.robotoworks.mechanoid.db.sqliteModel.DDLStatement)6 CreateTableStatement (com.robotoworks.mechanoid.db.sqliteModel.CreateTableStatement)5 MigrationBlock (com.robotoworks.mechanoid.db.sqliteModel.MigrationBlock)5 ArrayList (java.util.ArrayList)5 Function1 (org.eclipse.xtext.xbase.lib.Functions.Function1)5 ActionStatement (com.robotoworks.mechanoid.db.sqliteModel.ActionStatement)4 ContentUri (com.robotoworks.mechanoid.db.sqliteModel.ContentUri)4 InitBlock (com.robotoworks.mechanoid.db.sqliteModel.InitBlock)4 ConfigBlock (com.robotoworks.mechanoid.db.sqliteModel.ConfigBlock)3 ConfigurationStatement (com.robotoworks.mechanoid.db.sqliteModel.ConfigurationStatement)3 Model (com.robotoworks.mechanoid.db.sqliteModel.Model)3 Collection (java.util.Collection)3 EList (org.eclipse.emf.common.util.EList)3 List (java.util.List)2 EObject (org.eclipse.emf.ecore.EObject)2 SqliteDatabaseSnapshot (com.robotoworks.mechanoid.db.generator.SqliteDatabaseSnapshot)1 SqliteMigrationGenerator (com.robotoworks.mechanoid.db.generator.SqliteMigrationGenerator)1