Skip to content

Commit

Permalink
Changed to accept a url to a jar file which will contain the migratio…
Browse files Browse the repository at this point in the history
…n scripts
  • Loading branch information
rodklein committed Jul 19, 2011
2 parents a365543 + abdaa26 commit a8d07c9
Show file tree
Hide file tree
Showing 8 changed files with 84 additions and 16 deletions.
14 changes: 14 additions & 0 deletions build.xml
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<project name="MigrationTool" default="jar-migration">


<target name="init">
<property name="deploy.folder" value="deploy"/>
<mkdir dir="${deploy.folder}"/>
</target>

<target name="jar-migration" depends="init">
<jar basedir="./bin" destfile="${deploy.folder}/migration.jar"/>
</target>

</project>
2 changes: 1 addition & 1 deletion sample/migrations/Sample01.java
Expand Up @@ -11,7 +11,7 @@ public class Sample01 implements MigrationUnit {

@Override
public String version() {
return "001";
return "04.5 0001";
}

public Migration createTablePessoa() {
Expand Down
33 changes: 33 additions & 0 deletions sample/migrations/Sample02.java
@@ -0,0 +1,33 @@
package migrations;

import static com.jmigration.Migration.column;
import static com.jmigration.Migration.createTable;
import static com.jmigration.Migration.primaryKeyColumn;

import java.sql.Types;

import com.jmigration.Migration;
import com.jmigration.MigrationUnit;

public class Sample02 implements MigrationUnit {

@Override
public String version() {
return "10.1 005";
}

public Migration createTablePessoa() {
return createTable("PESSOAS_X")
.add(primaryKeyColumn("ID_PESSOA").as(Types.NUMERIC).size(6).notNull().autoIncrement("SQ_PESSOA_X"))
.add(column("NM_PESSOA").as(Types.VARCHAR).size(40).notNull())
.add(column("DT_NASCIMENTO").as(Types.DATE).notNull());
}



@Override
public String name() {
return "sample02";
}

}
5 changes: 3 additions & 2 deletions sample/migrations/Sample03.java
@@ -1,6 +1,7 @@
package migrations;

import static com.jmigration.Migration.*;
import static com.jmigration.Migration.column;
import static com.jmigration.Migration.createTable;

import java.sql.Types;

Expand All @@ -11,7 +12,7 @@ public class Sample03 implements MigrationUnit {

@Override
public String version() {
return "004";
return "trunk 004";
}

public Migration createTablePessoa() {
Expand Down
2 changes: 1 addition & 1 deletion sample/migrations/Sample04.java
Expand Up @@ -11,7 +11,7 @@ public class Sample04 implements MigrationUnit {

@Override
public String version() {
return "003";
return "04.6 003";
}

public Migration createTablePessoa() {
Expand Down
17 changes: 13 additions & 4 deletions src/com/jmigration/MigrationRunner.java
Expand Up @@ -21,10 +21,19 @@ public MigrationRunner(MigrationConfiguration configuration) {
public void run(String currentVersion) {
checkMigrationTable();
for (MigrationUnit unit : configuration.getMigrations(currentVersion)) {
if (!wasExecuted(unit)) {
execute(unit);
markAsExecuted(unit);
}
executeUnit(unit);
}
}

public void run(MigrationUnit migrationUnit) {
checkMigrationTable();
executeUnit(migrationUnit);
}

private void executeUnit(MigrationUnit unit) {
if (!wasExecuted(unit)) {
execute(unit);
markAsExecuted(unit);
}
}

Expand Down
25 changes: 18 additions & 7 deletions src/com/jmigration/RunMigration.java
@@ -1,22 +1,33 @@
package com.jmigration;

import java.io.IOException;
import java.util.Properties;
import java.util.Set;
import java.util.regex.Pattern;

import org.reflections.Reflections;
import org.reflections.scanners.ResourcesScanner;
import org.reflections.util.ClasspathHelper;
import org.reflections.util.ConfigurationBuilder;

import com.jmigration.core.MigrationConfiguration;

public class RunMigration {

public static void main(String[] args) throws IOException {
String currentVersion = null;
public static void main(String[] args) throws Exception {
String migrationClass = null;
if (args.length > 0) {
currentVersion = args[0];
migrationClass = args[0];
}
Set<String> resources = new Reflections(new ConfigurationBuilder()
.addUrls(ClasspathHelper.forClassLoader())
.setScanners(new ResourcesScanner())).getResources(Pattern.compile("migration.properties"));
if (resources.isEmpty()) throw new RuntimeException("The file 'migration.properties' was not found in the classpath.");
Properties p = new Properties();
p.load(RunMigration.class.getResourceAsStream("/migration.properties"));
p.load(RunMigration.class.getResourceAsStream(resources.iterator().next()));
MigrationConfiguration config = new MigrationConfiguration(p);

config.createRunner().run(currentVersion);
Class<?> migrationUnitClass = Class.forName(migrationClass);
MigrationUnit migrationUnit = (MigrationUnit) migrationUnitClass.newInstance();
config.createRunner().run(migrationUnit);
}

}
2 changes: 1 addition & 1 deletion src/com/jmigration/core/MigrationConfiguration.java
Expand Up @@ -112,7 +112,7 @@ public void init() {
} catch (MalformedURLException e) {
migrations = ClasspathScanner.scan(packagePrefix);
}
} else {
} else if (packagePrefix != null){
migrations = ClasspathScanner.scan(packagePrefix);
}
try {
Expand Down

0 comments on commit a8d07c9

Please sign in to comment.