Coverage Report - liquibase.change.core.CreateViewChange
 
Classes in this File Line Coverage Branch Coverage Complexity
CreateViewChange
68%
20/29
44%
8/18
1.615
 
 1  
 package liquibase.change.core;
 2  
 
 3  
 import liquibase.change.AbstractChange;
 4  
 import liquibase.change.Change;
 5  
 import liquibase.change.ChangeMetaData;
 6  
 import liquibase.database.Database;
 7  
 import liquibase.database.core.MSSQLDatabase;
 8  
 import liquibase.database.core.SQLiteDatabase;
 9  
 import liquibase.statement.SqlStatement;
 10  
 import liquibase.statement.core.CreateViewStatement;
 11  
 import liquibase.statement.core.DropViewStatement;
 12  
 import liquibase.util.StringUtils;
 13  
 
 14  
 import java.util.ArrayList;
 15  
 import java.util.List;
 16  
 
 17  
 /**
 18  
  * Creates a new view.
 19  
  */
 20  
 public class CreateViewChange extends AbstractChange {
 21  
 
 22  
     private String schemaName;
 23  
     private String viewName;
 24  
     private String selectQuery;
 25  
     private Boolean replaceIfExists;
 26  
 
 27  
     public CreateViewChange() {
 28  16
         super("createView", "Create View", ChangeMetaData.PRIORITY_DEFAULT);
 29  16
     }
 30  
 
 31  
     public String getSchemaName() {
 32  45
         return schemaName;
 33  
     }
 34  
 
 35  
     public void setSchemaName(String schemaName) {
 36  1
         this.schemaName = StringUtils.trimToNull(schemaName);
 37  1
     }
 38  
 
 39  
     public String getViewName() {
 40  46
         return viewName;
 41  
     }
 42  
 
 43  
     public void setViewName(String viewName) {
 44  2
         this.viewName = viewName;
 45  2
     }
 46  
 
 47  
     public String getSelectQuery() {
 48  45
         return selectQuery;
 49  
     }
 50  
 
 51  
     public void setSelectQuery(String selectQuery) {
 52  1
         this.selectQuery = selectQuery;
 53  1
     }
 54  
 
 55  
     public Boolean getReplaceIfExists() {
 56  45
         return replaceIfExists;
 57  
     }
 58  
 
 59  
     public void setReplaceIfExists(Boolean replaceIfExists) {
 60  0
         this.replaceIfExists = replaceIfExists;
 61  0
     }
 62  
 
 63  
     public SqlStatement[] generateStatements(Database database) {
 64  45
         List<SqlStatement> statements = new ArrayList<SqlStatement>();
 65  
 
 66  45
         boolean replaceIfExists = false;
 67  45
         if (getReplaceIfExists() != null && getReplaceIfExists()) {
 68  0
             replaceIfExists = true;
 69  
         }
 70  
 
 71  45
         if (!supportsReplaceIfExistsOption(database) && replaceIfExists) {
 72  0
             statements.add(new DropViewStatement(getSchemaName() == null ? database.getDefaultSchemaName()
 73  
                     : getSchemaName(), getViewName()));
 74  0
             statements.add(new CreateViewStatement(getSchemaName() == null ? database.getDefaultSchemaName()
 75  
                     : getSchemaName(), getViewName(), getSelectQuery(), false));
 76  
         } else {
 77  45
             statements.add(new CreateViewStatement(getSchemaName() == null ? database.getDefaultSchemaName()
 78  
                     : getSchemaName(), getViewName(), getSelectQuery(), replaceIfExists));
 79  
         }
 80  
 
 81  45
         return statements.toArray(new SqlStatement[statements.size()]);
 82  
     }
 83  
 
 84  
     public String getConfirmationMessage() {
 85  1
         return "View " + getViewName() + " created";
 86  
     }
 87  
 
 88  
     @Override
 89  
     protected Change[] createInverses() {
 90  0
         DropViewChange inverse = new DropViewChange();
 91  0
         inverse.setViewName(getViewName());
 92  0
         inverse.setSchemaName(getSchemaName());
 93  
 
 94  0
         return new Change[] { inverse };
 95  
     }
 96  
 
 97  
     private boolean supportsReplaceIfExistsOption(Database database) {
 98  45
         return !(database instanceof SQLiteDatabase || database instanceof MSSQLDatabase);
 99  
     }
 100  
 
 101  
 }