Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  // Version:   $Id: $
  // Copyright: Copyright(c) 2007 Trace Financial Limited
  package org.liquibase.maven.plugins;
  
  import java.text.*;
A Maven Mojo for invoking Liquibase rollbacks on a database.

Author(s):
Peter Murray
Goal:
rollback
 
 
   protected enum RollbackType {
 
     TAG, DATE, COUNT
   }

  
The tag to roll the database back to.

Parameter:
expression="${liquibase.rollbackTag}"
 
   protected String rollbackTag;

  
The number of change sets to rollback.

Parameter:
expression="${liquibase.rollbackCount}" default-value="-1"
 
   protected int rollbackCount;

  
The date to rollback the database to. The format of the date must match that of the DateFormat.getDateInstance() for the platform the plugin is executing on.

Parameter:
expression="${liquibase.rollbackDate}"
 
   protected String rollbackDate;

  
The type of the rollback that is being performed.
 
   protected RollbackType type;
 
   @Override
   protected void checkRequiredParametersAreSpecified() throws MojoFailureException {
 
     if ( == -1 &&  == null &&  == null) {
       throw new MojoFailureException("One of the rollback options must be specified, "
                                      + "please specify one of rollbackTag, rollbackCount "
                                      + "or rollbackDate");
     }
 
     if (!=-1 &&  <= 0) {
       throw new MojoFailureException("A rollback count of " +  + " is meaningless, please "
                                      + "select a value greater than 0");
     }
 
     String message = "Cannot specify multiple rollbackXXX options, please select only"
                      + " one of rollbackTag, rollbackCount, rollbackDate.";
 
     if ( > 0) {
       if ( != null ||  != null) {
         throw new MojoFailureException(message);
       }
        = .;
     } else if ( != null) {
       if ( != null ||  > 0) {
         throw new MojoFailureException(message);
       }
        = .;
     } else if ( != null) {
       if ( > 0 ||  != null) {
         throw new MojoFailureException(message);
       }
        = .;
     }
   }
 
   @Override
   protected void printSettings(String indent) {
     super.printSettings(indent);
     getLog().info(indent + "rollback Count: " + );
     getLog().info(indent + "rollback Date: " + );
     getLog().info(indent + "rollback Tag: " + );
   }
 
   @Override
   protected void performLiquibaseTask(Liquibase liquibasethrows LiquibaseException {
     switch () {
       case : {
         liquibase.rollback();
         break;
       }
       case : {
         DateFormat format = DateFormat.getDateInstance();
         try {
           liquibase.rollback(format.parse(), );
        }
        catch (ParseException e) {
          String message = "Error parsing rollbackDate: " + e.getMessage();
          if (format instanceof SimpleDateFormat) {
            message += "\nDate must match pattern: " + ((SimpleDateFormat)format).toPattern();
          }
          throw new LiquibaseException(messagee);
        }
        break;
      }
      case : {
        liquibase.rollback();
        break;
      }
      default: {
        throw new IllegalStateException("Unexpected rollback type, " + );
      }
    }
  }
New to GrepCode? Check out our FAQ X