Coverage Report - liquibase.sqlgenerator.core.FindForeignKeyConstraintsGeneratorPostgres
 
Classes in this File Line Coverage Branch Coverage Complexity
FindForeignKeyConstraintsGeneratorPostgres
12%
3/25
N/A
1
 
 1  
 package liquibase.sqlgenerator.core;
 2  
 
 3  
 import liquibase.database.Database;
 4  
 import liquibase.database.core.PostgresDatabase;
 5  
 import liquibase.exception.ValidationErrors;
 6  
 import liquibase.sql.Sql;
 7  
 import liquibase.sql.UnparsedSql;
 8  
 import liquibase.sqlgenerator.SqlGenerator;
 9  
 import liquibase.sqlgenerator.SqlGeneratorChain;
 10  
 import liquibase.statement.core.FindForeignKeyConstraintsStatement;
 11  
 
 12  12
 public class FindForeignKeyConstraintsGeneratorPostgres extends
 13  
         AbstractSqlGenerator<FindForeignKeyConstraintsStatement> {
 14  
     @Override
 15  
     public int getPriority() {
 16  1
         return PRIORITY_DATABASE;
 17  
     }
 18  
 
 19  
     @Override
 20  
     public boolean supports(FindForeignKeyConstraintsStatement statement, Database database) {
 21  2
         return database instanceof PostgresDatabase;
 22  
     }
 23  
 
 24  
     public ValidationErrors validate(FindForeignKeyConstraintsStatement findForeignKeyConstraintsStatement,
 25  
             Database database, SqlGeneratorChain sqlGeneratorChain) {
 26  0
         ValidationErrors validationErrors = new ValidationErrors();
 27  0
         validationErrors.checkRequiredField("baseTableName", findForeignKeyConstraintsStatement.getBaseTableName());
 28  0
         return validationErrors;
 29  
     }
 30  
 
 31  
     public Sql[] generateSql(FindForeignKeyConstraintsStatement statement, Database database,
 32  
             SqlGeneratorChain sqlGeneratorChain) {
 33  0
         StringBuilder sb = new StringBuilder();
 34  
 
 35  0
         sb.append("SELECT ");
 36  0
         sb.append("FK.TABLE_NAME as \"").append(FindForeignKeyConstraintsStatement.RESULT_COLUMN_BASE_TABLE_NAME)
 37  
                 .append("\", ");
 38  0
         sb.append("CU.COLUMN_NAME as \"")
 39  
                 .append(FindForeignKeyConstraintsStatement.RESULT_COLUMN_BASE_TABLE_COLUMN_NAME).append("\", ");
 40  0
         sb.append("PK.TABLE_NAME as \"").append(FindForeignKeyConstraintsStatement.RESULT_COLUMN_FOREIGN_TABLE_NAME)
 41  
                 .append("\", ");
 42  0
         sb.append("PT.COLUMN_NAME as \"").append(FindForeignKeyConstraintsStatement.RESULT_COLUMN_FOREIGN_COLUMN_NAME)
 43  
                 .append("\", ");
 44  0
         sb.append("C.CONSTRAINT_NAME as \"").append(FindForeignKeyConstraintsStatement.RESULT_COLUMN_CONSTRAINT_NAME)
 45  
                 .append("\" ");
 46  0
         sb.append("FROM       INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C ");
 47  0
         sb.append("INNER JOIN  INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME ");
 48  0
         sb.append("INNER JOIN      INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME ");
 49  0
         sb.append("INNER JOIN      INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME ");
 50  0
         sb.append("INNER JOIN  ( ");
 51  0
         sb.append("  SELECT      i1.TABLE_NAME, i2.COLUMN_NAME ");
 52  0
         sb.append("  FROM        INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1 ");
 53  0
         sb.append("  INNER JOIN      INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME ");
 54  0
         sb.append("  WHERE       i1.CONSTRAINT_TYPE = 'PRIMARY KEY' ");
 55  0
         sb.append(") PT ON PT.TABLE_NAME = PK.TABLE_NAME ");
 56  0
         sb.append("WHERE      FK.TABLE_NAME='").append(statement.getBaseTableName()).append("'");
 57  
 
 58  0
         return new Sql[] { new UnparsedSql(sb.toString()) };
 59  
     }
 60  
 }