001 package liquibase.integration.ant; 002 003 import liquibase.Liquibase; 004 import liquibase.util.ui.UIFactory; 005 import org.apache.tools.ant.BuildException; 006 007 /** 008 * Ant task for migrating a database forward testing rollback. 009 */ 010 public class DatabaseUpdateTestingRollbackTask extends BaseLiquibaseTask { 011 private boolean dropFirst = false; 012 013 public boolean isDropFirst() { 014 return dropFirst; 015 } 016 017 public void setDropFirst(boolean dropFirst) { 018 this.dropFirst = dropFirst; 019 } 020 021 @Override 022 public void execute() throws BuildException { 023 if (!shouldRun()) { 024 return; 025 } 026 027 super.execute(); 028 029 Liquibase liquibase = null; 030 try { 031 liquibase = createLiquibase(); 032 033 if (isPromptOnNonLocalDatabase() && !liquibase.isSafeToRunMigration() 034 && UIFactory.getInstance().getFacade().promptForNonLocalDatabase(liquibase.getDatabase())) { 035 throw new BuildException("Chose not to run against non-production database"); 036 } 037 038 if (isDropFirst()) { 039 liquibase.dropAll(); 040 } 041 042 liquibase.updateTestingRollback(getContexts()); 043 044 } catch (Exception e) { 045 throw new BuildException(e); 046 } finally { 047 closeDatabase(liquibase); 048 } 049 } 050 }