1 package liquibase.snapshot;
2
3 import liquibase.database.Database;
4 import liquibase.database.AbstractDatabase;
5 import liquibase.database.structure.Table;
6 import liquibase.database.structure.Column;
7 import liquibase.database.structure.ForeignKey;
8 import liquibase.diff.DiffStatusListener;
9 import liquibase.exception.DatabaseException;
10 import liquibase.servicelocator.PrioritizedService;
11
12 import java.util.Set;
13 import java.util.List;
14
15 public interface DatabaseSnapshotGenerator {
16
17
18
19 public static final int PRIORITY_DEFAULT = 1;
20
21
22
23
24 public static final int PRIORITY_DATABASE = 5;
25
26 boolean supports(Database database);
27
28 int getPriority(Database database);
29
30 DatabaseSnapshot createSnapshot(Database database, String schema, Set<DiffStatusListener> listeners)
31 throws DatabaseException;
32
33 Table getDatabaseChangeLogTable(Database database) throws DatabaseException;
34
35 Table getDatabaseChangeLogLockTable(Database database) throws DatabaseException;
36
37 Table getTable(String schemaName, String tableName, Database database) throws DatabaseException;
38
39 Column getColumn(String schemaName, String tableName, String columnName, Database database)
40 throws DatabaseException;
41
42 ForeignKey getForeignKeyByForeignKeyTable(String schemaName, String tableName, String fkName, Database database)
43 throws DatabaseException;
44
45 List<ForeignKey> getForeignKeys(String schemaName, String tableName, Database database) throws DatabaseException;
46
47 boolean hasIndex(String schemaName, String tableName, String indexName, Database database, String columnNames)
48 throws DatabaseException;
49
50 boolean hasDatabaseChangeLogTable(Database database);
51
52 boolean hasDatabaseChangeLogLockTable(Database database);
53
54 public boolean hasTable(String schemaName, String tableName, Database database);
55
56 public boolean hasView(String schemaName, String viewName, Database database);
57 }