package com.robotoworks.mechanoid.db.generator;
import com.google.inject.Inject;
import com.robotoworks.mechanoid.db.generator.SqliteDatabaseStatementGenerator;
import com.robotoworks.mechanoid.db.sqliteModel.DDLStatement;
import com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock;
import com.robotoworks.mechanoid.db.sqliteModel.MigrationBlock;
import com.robotoworks.mechanoid.db.sqliteModel.Model;
import com.robotoworks.mechanoid.text.Strings;
import org.eclipse.emf.common.util.EList;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.xbase.lib.Extension;
@SuppressWarnings("all")
public class SqliteMigrationGenerator {
@Inject
@Extension
private SqliteDatabaseStatementGenerator _sqliteDatabaseStatementGenerator;
public CharSequence generate(final Model model, final MigrationBlock migration, final int version) {
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(".migrations;");
_builder.newLineIfNotEmpty();
_builder.newLine();
_builder.append("import android.database.sqlite.SQLiteDatabase;");
_builder.newLine();
_builder.append("import com.robotoworks.mechanoid.db.SQLiteMigration;");
_builder.newLine();
_builder.newLine();
_builder.append("public class Default");
DatabaseBlock _database = model.getDatabase();
String _name = _database.getName();
String _pascalize = Strings.pascalize(_name);
_builder.append(_pascalize, "");
_builder.append("MigrationV");
_builder.append(version, "");
_builder.append(" extends SQLiteMigration {");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("@Override");
_builder.newLine();
_builder.append("\t");
_builder.append("public void onBeforeUp(SQLiteDatabase db) {}");
_builder.newLine();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("@Override");
_builder.newLine();
_builder.append("\t");
_builder.append("public void up(SQLiteDatabase db) {");
_builder.newLine();
_builder.append("\t\t");
EList<DDLStatement> _statements = migration.getStatements();
CharSequence _generateStatements = this._sqliteDatabaseStatementGenerator.generateStatements(_statements);
_builder.append(_generateStatements, "\t\t");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("@Override");
_builder.newLine();
_builder.append("\t");
_builder.append("public void onAfterUp(SQLiteDatabase db) {}");
_builder.newLine();
_builder.append("}");
_builder.newLine();
return _builder;
}
}