package io.ebean.dbmigration.ddlgeneration;
import io.ebean.dbmigration.migration.AddColumn;
import io.ebean.dbmigration.migration.ChangeSet;
import io.ebean.dbmigration.migration.CreateTable;
import io.ebean.dbmigration.migration.DropColumn;
import io.ebean.dbmigration.migration.Migration;
import io.ebean.dbmigration.migrationreader.MigrationXmlReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.List;
/**
* Helper for testing to return some basic migration objects.
*/
public class Helper {
static Migration migration = MigrationXmlReader.read("/container/test-create-table.xml");
static Migration alterTableMigration = MigrationXmlReader.read("/container/test-alter-table.xml");
static ChangeSet changeSet;
static List<Object> changeSetChildren;
static ChangeSet alterTableChangeSet;
static List<Object> alterTableChangeSetChildren;
static {
List<ChangeSet> changeSets = migration.getChangeSet();
changeSet = changeSets.get(0);
changeSetChildren = changeSet.getChangeSetChildren();
alterTableChangeSet = alterTableMigration.getChangeSet().get(0);
alterTableChangeSetChildren = alterTableChangeSet.getChangeSetChildren();
}
public static ChangeSet getChangeSet() {
return changeSet;
}
public static CreateTable getCreateTable() {
return (CreateTable) changeSetChildren.get(0);
}
public static AddColumn getAddColumn() {
return (AddColumn) changeSetChildren.get(1);
}
public static AddColumn getAlterTableAddColumn() {
return (AddColumn) alterTableChangeSetChildren.get(0);
}
public static AddColumn getAlterTableAddDbArrayColumn() {
return (AddColumn) alterTableChangeSetChildren.get(1);
}
public static AddColumn getAlterTableAddDbArrayColumnWithLength() {
return (AddColumn) alterTableChangeSetChildren.get(2);
}
public static AddColumn getAlterTableAddDbArrayColumnIntegerWithLength() {
return (AddColumn) alterTableChangeSetChildren.get(3);
}
public static AddColumn getAlterTableAddDbArrayColumnInteger() {
return (AddColumn) alterTableChangeSetChildren.get(4);
}
public static AddColumn getAlterTableAddColumnWithCheckConstraint() {
return (AddColumn) alterTableChangeSetChildren.get(5);
}
public static DropColumn getDropColumn() {
return (DropColumn) changeSetChildren.get(2);
}
public static String asText(Object instance, String relativePath) throws IOException {
InputStream is = instance.getClass().getResourceAsStream(relativePath);
if (is == null) {
throw new IllegalArgumentException("resource " + relativePath + " not found");
}
return asText(is);
}
public static String asText(InputStream in) throws IOException {
try {
InputStreamReader reader = new InputStreamReader(in);
LineNumberReader lineNumberReader = new LineNumberReader(reader);
StringBuilder builder = new StringBuilder(400);
String line;
while ((line = lineNumberReader.readLine()) != null) {
builder.append(line).append("\n");
}
return builder.toString();
} finally {
in.close();
}
}
}