Coverage Report - liquibase.sqlgenerator.core.InsertOrUpdateGeneratorOracle
 
Classes in this File Line Coverage Branch Coverage Complexity
InsertOrUpdateGeneratorOracle
93%
15/16
N/A
1
 
 1  
 package liquibase.sqlgenerator.core;
 2  
 
 3  
 import liquibase.database.Database;
 4  
 import liquibase.database.core.OracleDatabase;
 5  
 import liquibase.database.typeconversion.TypeConverterFactory;
 6  
 import liquibase.exception.ValidationErrors;
 7  
 import liquibase.sql.Sql;
 8  
 import liquibase.sql.UnparsedSql;
 9  
 import liquibase.sqlgenerator.SqlGeneratorChain;
 10  
 import liquibase.statement.core.InsertOrUpdateStatement;
 11  
 import liquibase.statement.core.UpdateStatement;
 12  
 
 13  
 import java.util.Date;
 14  
 
 15  11
 public class InsertOrUpdateGeneratorOracle extends InsertOrUpdateGenerator {
 16  
 
 17  
     @Override
 18  
     public boolean supports(InsertOrUpdateStatement statement, Database database) {
 19  0
         return database instanceof OracleDatabase;
 20  
     }
 21  
 
 22  
     @Override
 23  
     protected String getRecordCheck(InsertOrUpdateStatement insertOrUpdateStatement, Database database,
 24  
             String whereClause) {
 25  
 
 26  1
         StringBuffer recordCheckSql = new StringBuffer();
 27  
 
 28  1
         recordCheckSql.append("DECLARE\n");
 29  1
         recordCheckSql.append("\tv_reccount NUMBER := 0;\n");
 30  1
         recordCheckSql.append("BEGIN\n");
 31  1
         recordCheckSql.append("\tSELECT COUNT(*) INTO v_reccount FROM "
 32  
                 + database.escapeTableName(insertOrUpdateStatement.getSchemaName(),
 33  
                         insertOrUpdateStatement.getTableName()) + " WHERE ");
 34  
 
 35  1
         recordCheckSql.append(whereClause);
 36  1
         recordCheckSql.append(";\n");
 37  
 
 38  1
         recordCheckSql.append("\tIF v_reccount = 0 THEN\n");
 39  
 
 40  1
         return recordCheckSql.toString();
 41  
     }
 42  
 
 43  
     @Override
 44  
     protected String getElse(Database database) {
 45  1
         return "\tELSIF v_reccount = 1 THEN\n";
 46  
     }
 47  
 
 48  
     @Override
 49  
     protected String getPostUpdateStatements() {
 50  1
         StringBuffer endStatements = new StringBuffer();
 51  1
         endStatements.append("END IF;\n");
 52  1
         endStatements.append("END;\n");
 53  1
         return endStatements.toString();
 54  
 
 55  
     }
 56  
 }