Coverage Report - liquibase.sqlgenerator.core.InsertOrUpdateGeneratorMSSQL
 
Classes in this File Line Coverage Branch Coverage Complexity
InsertOrUpdateGeneratorMSSQL
87%
21/24
N/A
1
 
 1  
 package liquibase.sqlgenerator.core;
 2  
 
 3  
 import liquibase.database.Database;
 4  
 import liquibase.database.core.MSSQLDatabase;
 5  
 import liquibase.exception.LiquibaseException;
 6  
 import liquibase.sql.Sql;
 7  
 import liquibase.sqlgenerator.SqlGeneratorChain;
 8  
 import liquibase.statement.core.InsertOrUpdateStatement;
 9  
 
 10  14
 public class InsertOrUpdateGeneratorMSSQL extends InsertOrUpdateGenerator {
 11  
     public boolean supports(InsertOrUpdateStatement statement, Database database) {
 12  0
         return database instanceof MSSQLDatabase;
 13  
     }
 14  
 
 15  
     protected String getRecordCheck(InsertOrUpdateStatement insertOrUpdateStatement, Database database,
 16  
             String whereClause) {
 17  1
         StringBuffer recordCheck = new StringBuffer();
 18  1
         recordCheck.append("DECLARE @reccount integer\n");
 19  1
         recordCheck.append("SELECT @reccount = count(*) FROM ");
 20  1
         recordCheck.append(database.escapeTableName(insertOrUpdateStatement.getSchemaName(),
 21  
                 insertOrUpdateStatement.getTableName()));
 22  1
         recordCheck.append(" WHERE ");
 23  1
         recordCheck.append(whereClause);
 24  1
         recordCheck.append("\n");
 25  1
         recordCheck.append("IF @reccount = 0\n");
 26  
 
 27  1
         return recordCheck.toString();
 28  
     }
 29  
 
 30  
     @Override
 31  
     protected String getInsertStatement(InsertOrUpdateStatement insertOrUpdateStatement, Database database,
 32  
             SqlGeneratorChain sqlGeneratorChain) {
 33  1
         StringBuffer insertBlock = new StringBuffer();
 34  1
         insertBlock.append("BEGIN\n");
 35  1
         insertBlock.append(super.getInsertStatement(insertOrUpdateStatement, database, sqlGeneratorChain));
 36  1
         insertBlock.append("END\n");
 37  
 
 38  1
         return insertBlock.toString();
 39  
     }
 40  
 
 41  
     protected String getElse(Database database) {
 42  1
         return "ELSE\n";
 43  
     }
 44  
 
 45  
     @Override
 46  
     protected String getUpdateStatement(InsertOrUpdateStatement insertOrUpdateStatement, Database database,
 47  
             String whereClause, SqlGeneratorChain sqlGeneratorChain) throws LiquibaseException {
 48  1
         StringBuffer updateBlock = new StringBuffer();
 49  1
         updateBlock.append("BEGIN\n");
 50  1
         updateBlock.append(super.getUpdateStatement(insertOrUpdateStatement, database, whereClause, sqlGeneratorChain));
 51  1
         updateBlock.append("END\n");
 52  1
         return updateBlock.toString();
 53  
     }
 54  
 
 55  
     @Override
 56  
     public Sql[] generateSql(InsertOrUpdateStatement insertOrUpdateStatement, Database database,
 57  
             SqlGeneratorChain sqlGeneratorChain) {
 58  0
         System.out.println("generating");
 59  
 
 60  0
         return super.generateSql(insertOrUpdateStatement, database, sqlGeneratorChain); // To change body of overridden
 61  
                                                                                         // methods use File | Settings |
 62  
                                                                                         // File Templates.
 63  
     }
 64  
 }