package liquibase.snapshot; import liquibase.database.Database; import liquibase.exception.DatabaseException; import liquibase.exception.UnexpectedLiquibaseException; import liquibase.structure.DatabaseObject; import liquibase.structure.core.Column; import liquibase.structure.core.Relation; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.SortedSet; public class MockSnapshotGeneratorFactory extends SnapshotGeneratorFactory{ private List<DatabaseObject> objects; public MockSnapshotGeneratorFactory(DatabaseObject... objects) { this.objects = new ArrayList<DatabaseObject>(); if (objects != null) { this.objects.addAll(Arrays.asList(objects)); } } @Override public DatabaseSnapshot createSnapshot(DatabaseObject[] examples, Database database, SnapshotControl snapshotControl) throws DatabaseException, InvalidExampleException { return new MockDatabaseSnapshot(objects, examples, database, snapshotControl); } public void addObjects(DatabaseObject... objects) { for (DatabaseObject object : objects) { this.objects.add(object); if (object instanceof Relation) { for (Column column : ((Relation) object).getColumns()) { this.objects.add(column); } this.objects.add(object.getSchema()); } } } public void removeObjects(DatabaseObject... objects) { for (DatabaseObject object : objects) { this.objects.remove(object); if (object instanceof Relation) { for (Column column : ((Relation) object).getColumns()) { this.objects.remove(column); } } } } }