1 package liquibase.precondition.core; 2 3 import liquibase.changelog.ChangeSet; 4 import liquibase.changelog.DatabaseChangeLog; 5 import liquibase.database.Database; 6 import liquibase.exception.PreconditionErrorException; 7 import liquibase.exception.PreconditionFailedException; 8 import liquibase.exception.ValidationErrors; 9 import liquibase.exception.Warnings; 10 import liquibase.precondition.Precondition; 11 import liquibase.snapshot.DatabaseSnapshotGeneratorFactory; 12 import liquibase.util.StringUtils; 13 14 public class ViewExistsPrecondition implements Precondition { 15 private String schemaName; 16 private String viewName; 17 18 public String getSchemaName() { 19 return schemaName; 20 } 21 22 public void setSchemaName(String schemaName) { 23 this.schemaName = StringUtils.trimToNull(schemaName); 24 } 25 26 public String getViewName() { 27 return viewName; 28 } 29 30 public void setViewName(String viewName) { 31 this.viewName = viewName; 32 } 33 34 @Override 35 public Warnings warn(Database database) { 36 return new Warnings(); 37 } 38 39 @Override 40 public ValidationErrors validate(Database database) { 41 return new ValidationErrors(); 42 } 43 44 @Override 45 public void check(Database database, DatabaseChangeLog changeLog, ChangeSet changeSet) 46 throws PreconditionFailedException, PreconditionErrorException { 47 try { 48 if (!DatabaseSnapshotGeneratorFactory.getInstance().getGenerator(database) 49 .hasView(getSchemaName(), getViewName(), database)) { 50 throw new PreconditionFailedException("View " 51 + database.escapeTableName(getSchemaName(), getViewName()) + " does not exist", changeLog, this); 52 } 53 } catch (PreconditionFailedException e) { 54 throw e; 55 } catch (Exception e) { 56 throw new PreconditionErrorException(e, changeLog, this); 57 } 58 } 59 60 @Override 61 public String getName() { 62 return "viewExists"; 63 } 64 }