1 package com.rsmart.kuali.tools.ant.tasks; 2 3 import liquibase.Liquibase; 4 import liquibase.integration.ant.BaseLiquibaseTask; 5 import liquibase.util.StringUtils; 6 import org.apache.tools.ant.BuildException; 7 8 import java.util.List; 9 10 public class DropAllTask extends BaseLiquibaseTask { 11 12 private String schemas; 13 14 public String getSchemas() { 15 return schemas; 16 } 17 18 public void setSchemas(String schemas) { 19 this.schemas = schemas; 20 } 21 22 public void execute() throws BuildException { 23 Liquibase liquibase = null; 24 try { 25 liquibase = createLiquibase(); 26 boolean retry = true; 27 while (retry) { 28 try { 29 if (StringUtils.trimToNull(schemas) != null) { 30 List<String> schemas = StringUtils.splitAndTrim(this.schemas, ","); 31 liquibase.dropAll(schemas.toArray(new String[schemas.size()])); 32 } else { 33 liquibase.dropAll(); 34 } 35 retry = false; 36 } 37 catch (Exception e2) { 38 log(e2.getMessage()); 39 if (e2.getMessage().indexOf("ORA-02443") < 0 && e2.getCause() != null && retry) { 40 retry = (e2.getCause().getMessage().indexOf("ORA-02443") > -1); 41 } 42 43 if (!retry) { 44 throw e2; 45 } 46 else { 47 log("Got ORA-2443. Retrying..."); 48 } 49 } 50 } 51 } catch (Exception e) { 52 throw new BuildException(e); 53 } finally { 54 closeDatabase(liquibase); 55 } 56 } 57 }