package org.javalite.db_migrator.maven;
import org.apache.maven.plugin.MojoExecutionException;
import org.javalite.db_migrator.Migration;
import org.javalite.db_migrator.MigrationManager;
import java.util.List;
import static org.javalite.db_migrator.DbUtils.closeConnection;
/**
* Validate current schema against available migrations.
* <p></p>
*
* @goal validate
*/
public class ValidateMojo extends AbstractDbMigrationMojo {
public void executeMojo() throws MojoExecutionException {
getLog().info("Validating " + getUrl() + " using migrations from " + getMigrationsPath());
try {
openConnection();
MigrationManager manager = new MigrationManager(getMigrationsPath());
List<Migration> pendingMigrations = manager.getPendingMigrations();
getLog().info("Database: " + getUrl());
getLog().info("Up-to-date: " + pendingMigrations.isEmpty());
if (!pendingMigrations.isEmpty()) {
getLog().info("Pending Migrations: ");
for (Migration migration : pendingMigrations) {
getLog().info(migration.getName());
}
}else{
getLog().info("No pending migrations found");
}
} catch (Exception e) {
throw new MojoExecutionException("Failed to validate " + getUrl(), e);
}finally {
closeConnection();
}
}
}