package org.javalite.db_migrator.maven;
import org.apache.maven.plugin.MojoExecutionException;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import static org.javalite.db_migrator.DbUtils.blank;
/**
* @goal new
*/
public class NewMojo extends AbstractMigrationMojo {
public void execute() throws MojoExecutionException {
if (blank(System.getProperty("name"))) {
getLog().error("Must provide name for migration: -Dname=migration_name");
return;
}
String directory = getMigrationsPath();
createMigrationsDirectory(directory);
File file = new File(directory, createFileName());
try {
file.createNewFile();
getLog().info("Created new migration: " + file);
} catch (IOException e) {
throw new MojoExecutionException("Failed to create migration file: " + file, e);
}
}
private String createFileName() {
StringBuilder fileName = new StringBuilder();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
fileName.append(df.format(new Date()));
String name = System.getProperty("name");
if (!blank(name)) {
fileName.append('_').append(name);
}
fileName.append(".sql");
return fileName.toString();
}
private void createMigrationsDirectory(String directory) throws MojoExecutionException {
File f = new File(directory);
if (f.exists() && f.isFile()) {
throw new MojoExecutionException("Provided path is not a directory: " + directory);
} else {
if (!f.exists()) {
if (f.mkdirs()) {
getLog().info("Creating new migration directory: " + directory);
}
}
}
}
}