From 3c85ef2c8482c92740e74b6700b14d04a99397bd Mon Sep 17 00:00:00 2001 From: wea_ondara Date: Wed, 23 Nov 2022 17:22:08 +0100 Subject: [PATCH] refactor migration creator --- .../creator/MigrationBuilderGenerator.java | 4 +- .../migration/creator/MigrationCreator.java | 91 ++++++++++++------- .../MigrationCreatorAddEntityTest.java | 8 +- .../creator/MigrationCreatorAddFieldTest.java | 11 ++- .../MigrationCreatorAddForeignKeyTest.java | 9 +- .../creator/MigrationCreatorAddIndexTest.java | 11 ++- .../creator/MigrationCreatorAddKeyTest.java | 11 ++- .../MigrationCreatorAddUniqueTest.java | 11 ++- .../creator/MigrationCreatorEmptyTest.java | 11 ++- .../MigrationCreatorInitialMigrationTest.java | 8 +- .../MigrationCreatorRenameEntityTest.java | 9 +- ...tionCreatorRenameFieldConstraintsTest.java | 9 +- .../MigrationCreatorRenameFieldTest.java | 9 +- .../creator/MigrationCreatorTestBase.java | 4 +- .../ModelChangeDetectorAddPrimaryKeyTest.java | 2 +- 15 files changed, 129 insertions(+), 79 deletions(-) diff --git a/migration-creator/src/main/java/jef/model/migration/creator/MigrationBuilderGenerator.java b/migration-creator/src/main/java/jef/model/migration/creator/MigrationBuilderGenerator.java index 467f266..b28f463 100644 --- a/migration-creator/src/main/java/jef/model/migration/creator/MigrationBuilderGenerator.java +++ b/migration-creator/src/main/java/jef/model/migration/creator/MigrationBuilderGenerator.java @@ -31,8 +31,8 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class MigrationBuilderGenerator { - private final List opsUp; - private final List opsDown; + private final List opsUp; + private final List opsDown; private final String name; private final String packageName; diff --git a/migration-creator/src/main/java/jef/model/migration/creator/MigrationCreator.java b/migration-creator/src/main/java/jef/model/migration/creator/MigrationCreator.java index bdcac89..949e28a 100644 --- a/migration-creator/src/main/java/jef/model/migration/creator/MigrationCreator.java +++ b/migration-creator/src/main/java/jef/model/migration/creator/MigrationCreator.java @@ -2,7 +2,6 @@ package jef.model.migration.creator; import jef.model.DbField; import jef.model.ModelBuilder; -import jef.model.SqlTypeMapper; import jef.model.constraints.ForeignKeyConstraint; import jef.model.constraints.IndexConstraint; import jef.model.constraints.KeyConstraint; @@ -21,10 +20,13 @@ import jef.model.migration.operation.MigrationOperation; import jef.model.migration.operation.RenameFieldOperation; import jef.model.migration.operation.RenameTableOperation; import jef.model.migration.operation.UpdateFieldOperation; +import jef.platform.SqlPlatform; +import jef.platform.base.SqlTypeMapper; import jef.util.Check; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.RequiredArgsConstructor; import lombok.Setter; import java.util.ArrayList; @@ -33,57 +35,73 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; +@RequiredArgsConstructor public class MigrationCreator { - public Result createMigration(ModelBuilder from, ModelBuilder to, String name, String packageName, String currentSnapshotJava) { - var result = new Result(); + private final SqlPlatform sqlPlatform; + private final ModelBuilder from; + private final ModelBuilder to; + private final String name; + private final String packageName; + private final String currentSnapshotJava; + private Result result; + + public Result createMigration() { + if (result != null) { + return result; + } + result = new Result(); //create pre-migration model snapshot class - result = generatePreMigrationSnapshot(name, packageName, currentSnapshotJava, result); + result = generatePreMigrationSnapshot(); //create migration - result = generateMigration(from, to, name, packageName, result); + result = generateMigration(); //create current model snapshot class - result = generatePostMigrationSnapshot(to, packageName, result); + result = generatePostMigrationSnapshot(); return result; } - private Result generatePreMigrationSnapshot(String name, String packageName, String currentSnapshotJava, Result result) { + private Result generatePreMigrationSnapshot() { + String preMigrationSnapshotClassName = name + "Snapshot"; String preMigrationSnapshot; if (currentSnapshotJava == null || currentSnapshotJava.isBlank()) { - preMigrationSnapshot = generateModelBuilderJava(new ModelBuilder(), name, packageName); + preMigrationSnapshot = generateModelBuilderJava(new ModelBuilder(), preMigrationSnapshotClassName, packageName, sqlPlatform.getTypeMapper()); } else { - preMigrationSnapshot = currentSnapshotJava.replace("CurrentSnapshot", name + "Snapshot"); + preMigrationSnapshot = currentSnapshotJava.replace("CurrentSnapshot", preMigrationSnapshotClassName); } + result.setMigrationSnapshotClassName(preMigrationSnapshotClassName); result.setMigrationSnapshot(preMigrationSnapshot); return result; } - private Result generatePostMigrationSnapshot(ModelBuilder to, String packageName, Result result) { - result.setCurrentSnapshot(generateModelBuilderJava(to, "Current", packageName)); + private Result generatePostMigrationSnapshot() { + result.setCurrentSnapshotClassName("CurrentSnapshot"); + result.setCurrentSnapshot(generateModelBuilderJava(to, "CurrentSnapshot", packageName, sqlPlatform.getTypeMapper())); return result; } - private String generateModelBuilderJava(ModelBuilder mb, String name, String packageName) { - return new ModelBuilderGenerator(mb, name, packageName, new SqlTypeMapper()).generate().getJava();//TODO mapper + private String generateModelBuilderJava(ModelBuilder mb, String name, String packageName, SqlTypeMapper typeMapper) { + return new ModelBuilderGenerator(mb, name, packageName, typeMapper).generate().getJava(); } - private Result generateMigration(ModelBuilder from, ModelBuilder to, String name, String packageName, Result result) { + private Result generateMigration() { //reduce model builders to changes var mcd = new ModelChangeDetector(from, to).detect(); var fromReduced = mcd.getFrom(); var toReduced = mcd.getTo(); //create migration steps - var migrationUpOps = new ArrayList(); - var migrationDownOps = new ArrayList(); + var migrationUpOps = new ArrayList>(); + var migrationDownOps = new ArrayList>(); generateMigrationSteps(fromReduced, toReduced, from, to, migrationUpOps); generateMigrationSteps(toReduced, fromReduced, to, from, migrationDownOps); - var builtUpOps = migrationUpOps.stream().map(e -> e.build()).toList(); - var builtDownOps = migrationDownOps.stream().map(e -> e.build()).toList(); + var builtUpOps = migrationUpOps.stream().map(MigrationOperation.Builder::build).toList(); + var builtDownOps = migrationDownOps.stream().map(MigrationOperation.Builder::build).toList(); + result.setMigrationClassName(name); result.setMigration(new MigrationBuilderGenerator(builtUpOps, builtDownOps, name, packageName).generate().getJava()); result.setStepsUp(builtUpOps); result.setStepsDown(builtDownOps); @@ -91,7 +109,7 @@ public class MigrationCreator { return result; } - private void generateMigrationSteps(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void generateMigrationSteps(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { //key drop addForeignKeyDropGeneration(fromReduced, toReduced, from, to, steps); addPrimaryKeyDropGeneration(fromReduced, toReduced, from, to, steps); @@ -115,7 +133,7 @@ public class MigrationCreator { addIndexAddGeneration(fromReduced, toReduced, from, to, steps); } - private void addTableAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addTableAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var toEntity : toReduced.getEntities()) { var fromEntity = fromReduced.getEntity(toEntity.getTypeName()); @@ -138,7 +156,7 @@ public class MigrationCreator { return Optional.ofNullable(e.getSqlType()).or(() -> new SqlTypeMapper().map(e.getTypeName())).orElse(null); } - private void addTableRenameGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addTableRenameGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var toEntity : toReduced.getEntities()) { var fromEntity = fromReduced.getEntity(toEntity.getTypeName()); // entity added @@ -153,7 +171,7 @@ public class MigrationCreator { } } - private void addTableDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addTableDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var fromEntity : fromReduced.getEntities()) { var toEntity = toReduced.getEntity(fromEntity.getTypeName()); if (toEntity == null) { @@ -162,7 +180,7 @@ public class MigrationCreator { } } - private void addFieldAddRenameUpdateDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addFieldAddRenameUpdateDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var toEntity : toReduced.getEntities()) { var fromEntity = fromReduced.getEntities().stream().filter(e -> e.getName().equals(toEntity.getName())).findFirst().orElse(null); @@ -239,7 +257,7 @@ public class MigrationCreator { } } - private void addPrimaryKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addPrimaryKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var toEntity : toReduced.getEntities()) { var originalEntity = to.getEntities().stream().filter(e -> e.getName().equals(toEntity.getName())).findFirst().orElse(null); Check.notNull(originalEntity, "originalEntity"); //may never be null @@ -255,7 +273,7 @@ public class MigrationCreator { } } - private void addForeignKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addForeignKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var toEntity : toReduced.getEntities()) { var originalEntity = to.getEntities().stream().filter(e -> e.getName().equals(toEntity.getName())).findFirst().orElse(null); Check.notNull(originalEntity, "originalEntity"); //may never be null @@ -275,7 +293,7 @@ public class MigrationCreator { } } - private void addUniqueKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addUniqueKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var toEntity : toReduced.getEntities()) { var originalEntity = to.getEntities().stream().filter(e -> e.getName().equals(toEntity.getName())).findFirst().orElse(null); Check.notNull(originalEntity, "originalEntity"); //may never be null @@ -292,7 +310,7 @@ public class MigrationCreator { } } - private void addKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addKeyAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var toEntity : toReduced.getEntities()) { var originalEntity = to.getEntities().stream().filter(e -> e.getName().equals(toEntity.getName())).findFirst().orElse(null); Check.notNull(originalEntity, "originalEntity"); //may never be null @@ -309,7 +327,7 @@ public class MigrationCreator { } } - private void addIndexAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addIndexAddGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var toEntity : toReduced.getEntities()) { var originalEntity = to.getEntities().stream().filter(e -> e.getName().equals(toEntity.getName())).findFirst().orElse(null); Check.notNull(originalEntity, "originalEntity"); //may never be null @@ -326,7 +344,7 @@ public class MigrationCreator { } } - private void addPrimaryKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addPrimaryKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var fromEntity : fromReduced.getEntities()) { var originalEntity = from.getEntities().stream().filter(e -> e.getName().equals(fromEntity.getName())).findFirst().orElse(null); Check.notNull(originalEntity, "originalEntity"); //may never be null @@ -348,7 +366,7 @@ public class MigrationCreator { } } - private void addForeignKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addForeignKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var fromEntity : fromReduced.getEntities()) { var originalEntity = from.getEntities().stream().filter(e -> e.getName().equals(fromEntity.getName())).findFirst().orElse(null); Check.notNull(originalEntity, "originalEntity"); //may never be null @@ -373,7 +391,7 @@ public class MigrationCreator { // } } - private void addUniqueKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addUniqueKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var fromEntity : fromReduced.getEntities()) { var originalEntity = from.getEntities().stream().filter(e -> e.getName().equals(fromEntity.getName())).findFirst().orElse(null); Check.notNull(originalEntity, "originalEntity"); //may never be null @@ -398,7 +416,7 @@ public class MigrationCreator { // } } - private void addKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addKeyDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var fromEntity : fromReduced.getEntities()) { var originalEntity = from.getEntities().stream().filter(e -> e.getName().equals(fromEntity.getName())).findFirst().orElse(null); Check.notNull(originalEntity, "originalEntity"); //may never be null @@ -423,7 +441,7 @@ public class MigrationCreator { // } } - private void addIndexDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List steps) { + private void addIndexDropGeneration(ModelBuilder fromReduced, ModelBuilder toReduced, ModelBuilder from, ModelBuilder to, List> steps) { for (var fromEntity : fromReduced.getEntities()) { var originalEntity = from.getEntities().stream().filter(e -> e.getName().equals(fromEntity.getName())).findFirst().orElse(null); Check.notNull(originalEntity, "originalEntity"); //may never be null @@ -452,11 +470,14 @@ public class MigrationCreator { @Setter(AccessLevel.PACKAGE) @NoArgsConstructor(access = AccessLevel.PACKAGE) public static class Result { - private List stepsUp = new ArrayList<>(); - private List stepsDown = new ArrayList<>(); + private List stepsUp = new ArrayList<>(); + private List stepsDown = new ArrayList<>(); private String migration = ""; + private String migrationClassName = ""; private String migrationSnapshot = ""; + private String migrationSnapshotClassName = ""; private String currentSnapshot = ""; + private String currentSnapshotClassName = ""; } @Getter diff --git a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddEntityTest.java b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddEntityTest.java index 2072942..41adcb0 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddEntityTest.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddEntityTest.java @@ -3,7 +3,6 @@ package jef.model.migration.creator; import jef.DbSet; import jef.model.DbContext; import jef.model.ModelBuilder; -import jef.model.SqlTypeMapper; import jef.model.annotations.Clazz; import jef.model.annotations.Id; import jef.model.constraints.ForeignKeyConstraint; @@ -13,6 +12,7 @@ import jef.model.migration.operation.AddPrimaryKeyOperation; import jef.model.migration.operation.AddTableOperation; import jef.model.migration.operation.DropConstraintOperation; import jef.model.migration.operation.DropTableOperation; +import jef.platform.nul.NullPlatform; import jef.serializable.SerializableObject; import lombok.Getter; import org.junit.jupiter.api.Test; @@ -31,8 +31,10 @@ public class MigrationCreatorAddEntityTest extends MigrationCreatorTestBase { ent.field("addedField", int.class.getName()); to.getEntity("AddedEntity").setPrimaryKey(new PrimaryKeyConstraint(to.getEntity("AddedEntity"), List.of(to.getEntity("AddedEntity").getField("id")))); to.getEntity("AddedEntity").addForeignKey(new ForeignKeyConstraint(to.getEntity("AddedEntity"), List.of(to.getEntity("AddedEntity").getField("addedField")), to.getEntity("AddedEntity"), List.of(to.getEntity("AddedEntity").getField("id")), ForeignKeyConstraint.Action.CASCADE, ForeignKeyConstraint.Action.CASCADE)); - var mc = new MigrationCreator(); - var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper + var platform = new NullPlatform(); + var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test", + new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava()); + var res = mc.createMigration(); try { validateUp(res); validateDown(res); diff --git a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddFieldTest.java b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddFieldTest.java index bd5d30f..1044cad 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddFieldTest.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddFieldTest.java @@ -3,7 +3,6 @@ package jef.model.migration.creator; import jef.DbSet; import jef.model.DbContext; import jef.model.ModelBuilder; -import jef.model.SqlTypeMapper; import jef.model.annotations.Clazz; import jef.model.annotations.Id; import jef.model.constraints.ForeignKeyConstraint; @@ -11,6 +10,8 @@ import jef.model.migration.operation.AddFieldOperation; import jef.model.migration.operation.AddForeignKeyOperation; import jef.model.migration.operation.DropConstraintOperation; import jef.model.migration.operation.DropFieldOperation; +import jef.platform.base.SqlTypeMapper; +import jef.platform.nul.NullPlatform; import jef.serializable.SerializableObject; import lombok.Getter; import org.junit.jupiter.api.Test; @@ -19,7 +20,7 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; -public class MigrationCreatorAddFieldTest extends MigrationCreatorTestBase{ +public class MigrationCreatorAddFieldTest extends MigrationCreatorTestBase { @Test public void test() { var from = ModelBuilder.from(Ctx.class); @@ -27,8 +28,10 @@ public class MigrationCreatorAddFieldTest extends MigrationCreatorTestBase{ var ent = to.getEntity(TestClass2.class); ent.getOrCreateField("addedField", int.class.getName()); ent.addForeignKey(new ForeignKeyConstraint(ent, List.of(ent.getField("addedField")), ent, List.of(ent.getField("i")), ForeignKeyConstraint.Action.CASCADE, ForeignKeyConstraint.Action.CASCADE)); - var mc = new MigrationCreator(); - var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper + var platform = new NullPlatform(); + var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test", + new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava()); + var res = mc.createMigration(); try { validateUp(res); validateDown(res); diff --git a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddForeignKeyTest.java b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddForeignKeyTest.java index 538416f..b5e0dcb 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddForeignKeyTest.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddForeignKeyTest.java @@ -3,12 +3,13 @@ package jef.model.migration.creator; import jef.DbSet; import jef.model.DbContext; import jef.model.ModelBuilder; -import jef.model.SqlTypeMapper; import jef.model.annotations.Clazz; import jef.model.annotations.Id; import jef.model.constraints.ForeignKeyConstraint; import jef.model.migration.operation.AddForeignKeyOperation; import jef.model.migration.operation.DropConstraintOperation; +import jef.platform.base.SqlTypeMapper; +import jef.platform.nul.NullPlatform; import jef.serializable.SerializableObject; import lombok.Getter; import org.junit.jupiter.api.Test; @@ -24,8 +25,10 @@ public class MigrationCreatorAddForeignKeyTest extends MigrationCreatorTestBase var to = ModelBuilder.from(Ctx.class); var ent = to.getEntity(TestClass.class); ent.addForeignKey(new ForeignKeyConstraint(ent, List.of(ent.getField("i2")), ent, List.of(ent.getField("i")), ForeignKeyConstraint.Action.CASCADE, ForeignKeyConstraint.Action.CASCADE)); - var mc = new MigrationCreator(); - var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper + var platform = new NullPlatform(); + var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test", + new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava()); + var res = mc.createMigration(); try { validateUp(res); validateDown(res); diff --git a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddIndexTest.java b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddIndexTest.java index b4580d2..85cac0a 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddIndexTest.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddIndexTest.java @@ -3,11 +3,12 @@ package jef.model.migration.creator; import jef.DbSet; import jef.model.DbContext; import jef.model.ModelBuilder; -import jef.model.SqlTypeMapper; import jef.model.annotations.Clazz; import jef.model.annotations.Id; import jef.model.migration.operation.AddIndexOperation; import jef.model.migration.operation.DropConstraintOperation; +import jef.platform.base.SqlTypeMapper; +import jef.platform.nul.NullPlatform; import jef.serializable.SerializableObject; import lombok.Getter; import org.junit.jupiter.api.Test; @@ -16,15 +17,17 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; -public class MigrationCreatorAddIndexTest extends MigrationCreatorTestBase{ +public class MigrationCreatorAddIndexTest extends MigrationCreatorTestBase { @Test public void test() { var from = ModelBuilder.from(Ctx.class); var to = ModelBuilder.from(Ctx.class); var ent = to.entity(TestClass.class); ent.field("d", double.class.getName()).isIndex(true); - var mc = new MigrationCreator(); - var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper + var platform = new NullPlatform(); + var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test", + new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava()); + var res = mc.createMigration(); try { validateUp(res); validateDown(res); diff --git a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddKeyTest.java b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddKeyTest.java index 835d342..6748f07 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddKeyTest.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddKeyTest.java @@ -3,11 +3,12 @@ package jef.model.migration.creator; import jef.DbSet; import jef.model.DbContext; import jef.model.ModelBuilder; -import jef.model.SqlTypeMapper; import jef.model.annotations.Clazz; import jef.model.annotations.Id; import jef.model.migration.operation.AddKeyOperation; import jef.model.migration.operation.DropConstraintOperation; +import jef.platform.base.SqlTypeMapper; +import jef.platform.nul.NullPlatform; import jef.serializable.SerializableObject; import lombok.Getter; import org.junit.jupiter.api.Test; @@ -16,15 +17,17 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; -public class MigrationCreatorAddKeyTest extends MigrationCreatorTestBase{ +public class MigrationCreatorAddKeyTest extends MigrationCreatorTestBase { @Test public void test() { var from = ModelBuilder.from(Ctx.class); var to = ModelBuilder.from(Ctx.class); var ent = to.entity(TestClass.class); ent.field("d", double.class.getName()).isKey(true); - var mc = new MigrationCreator(); - var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper + var platform = new NullPlatform(); + var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test", + new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava()); + var res = mc.createMigration(); try { validateUp(res); validateDown(res); diff --git a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddUniqueTest.java b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddUniqueTest.java index 980a018..bc7d348 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddUniqueTest.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorAddUniqueTest.java @@ -3,11 +3,12 @@ package jef.model.migration.creator; import jef.DbSet; import jef.model.DbContext; import jef.model.ModelBuilder; -import jef.model.SqlTypeMapper; import jef.model.annotations.Clazz; import jef.model.annotations.Id; import jef.model.migration.operation.AddUniqueKeyOperation; import jef.model.migration.operation.DropConstraintOperation; +import jef.platform.base.SqlTypeMapper; +import jef.platform.nul.NullPlatform; import jef.serializable.SerializableObject; import lombok.Getter; import org.junit.jupiter.api.Test; @@ -16,15 +17,17 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; -public class MigrationCreatorAddUniqueTest extends MigrationCreatorTestBase{ +public class MigrationCreatorAddUniqueTest extends MigrationCreatorTestBase { @Test public void test() { var from = ModelBuilder.from(Ctx.class); var to = ModelBuilder.from(Ctx.class); var ent = to.entity(TestClass.class); ent.field("d", double.class.getName()).isUnique(true); - var mc = new MigrationCreator(); - var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper + var platform = new NullPlatform(); + var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test", + new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava()); + var res = mc.createMigration(); try { validateUp(res); validateDown(res); diff --git a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorEmptyTest.java b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorEmptyTest.java index a5871e4..e49572c 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorEmptyTest.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorEmptyTest.java @@ -3,12 +3,13 @@ package jef.model.migration.creator; import jef.DbSet; import jef.model.DbContext; import jef.model.ModelBuilder; -import jef.model.SqlTypeMapper; import jef.model.annotations.Clazz; import jef.model.annotations.Id; import jef.model.annotations.Index; import jef.model.annotations.Key; import jef.model.annotations.Unique; +import jef.platform.base.SqlTypeMapper; +import jef.platform.nul.NullPlatform; import jef.serializable.SerializableObject; import lombok.Getter; import org.junit.jupiter.api.Test; @@ -17,13 +18,15 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; -public class MigrationCreatorEmptyTest extends MigrationCreatorTestBase{ +public class MigrationCreatorEmptyTest extends MigrationCreatorTestBase { @Test public void test() { var from = ModelBuilder.from(Ctx.class); var to = ModelBuilder.from(Ctx.class); - var mc = new MigrationCreator(); - var res = mc.createMigration(from, to, "EmptyMigration", "test",new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper + var platform = new NullPlatform(); + var mc = new MigrationCreator(platform, from, to, "EmptyMigration", "test", + new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava()); + var res = mc.createMigration(); try { assertEquals(0, res.getStepsUp().size()); assertEquals(0, res.getStepsDown().size()); diff --git a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorInitialMigrationTest.java b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorInitialMigrationTest.java index a6cb504..8ed4ea5 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorInitialMigrationTest.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorInitialMigrationTest.java @@ -3,7 +3,6 @@ package jef.model.migration.creator; import jef.DbSet; import jef.model.DbContext; import jef.model.ModelBuilder; -import jef.model.SqlTypeMapper; import jef.model.annotations.Clazz; import jef.model.annotations.Id; import jef.model.migration.operation.AddForeignKeyOperation; @@ -11,6 +10,7 @@ import jef.model.migration.operation.AddPrimaryKeyOperation; import jef.model.migration.operation.AddTableOperation; import jef.model.migration.operation.DropConstraintOperation; import jef.model.migration.operation.DropTableOperation; +import jef.platform.nul.NullPlatform; import jef.serializable.SerializableObject; import lombok.Getter; import org.junit.jupiter.api.Test; @@ -24,8 +24,10 @@ public class MigrationCreatorInitialMigrationTest extends MigrationCreatorTestBa public void test() { var from = new ModelBuilder(List.of()); var to = ModelBuilder.from(Ctx.class); - var mc = new MigrationCreator(); - var res = mc.createMigration(from, to, "InitialMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper + var platform = new NullPlatform(); + var mc = new MigrationCreator(platform, from, to, "InitialMigration", "test", + new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava()); + var res = mc.createMigration(); try { validateUp(res); validateDown(res); diff --git a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorRenameEntityTest.java b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorRenameEntityTest.java index b92bdfd..8895992 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorRenameEntityTest.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorRenameEntityTest.java @@ -3,13 +3,14 @@ package jef.model.migration.creator; import jef.DbSet; import jef.model.DbContext; import jef.model.ModelBuilder; -import jef.model.SqlTypeMapper; import jef.model.annotations.Clazz; import jef.model.annotations.Id; import jef.model.migration.operation.AddForeignKeyOperation; import jef.model.migration.operation.AddPrimaryKeyOperation; import jef.model.migration.operation.DropConstraintOperation; import jef.model.migration.operation.RenameTableOperation; +import jef.platform.base.SqlTypeMapper; +import jef.platform.nul.NullPlatform; import jef.serializable.SerializableObject; import lombok.Getter; import org.junit.jupiter.api.Test; @@ -25,8 +26,10 @@ public class MigrationCreatorRenameEntityTest extends MigrationCreatorTestBase { var to = ModelBuilder.from(Ctx.class); var ent = to.entity(TestClass.class); ent.name("d2"); - var mc = new MigrationCreator(); - var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper + var platform = new NullPlatform(); + var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test", + new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava()); + var res = mc.createMigration(); try { validateUp(res); validateDown(res); diff --git a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorRenameFieldConstraintsTest.java b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorRenameFieldConstraintsTest.java index 1e6a82d..158cb7e 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorRenameFieldConstraintsTest.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorRenameFieldConstraintsTest.java @@ -3,7 +3,6 @@ package jef.model.migration.creator; import jef.DbSet; import jef.model.DbContext; import jef.model.ModelBuilder; -import jef.model.SqlTypeMapper; import jef.model.annotations.Clazz; import jef.model.annotations.ForeignKey; import jef.model.annotations.Id; @@ -17,6 +16,8 @@ import jef.model.migration.operation.AddPrimaryKeyOperation; import jef.model.migration.operation.AddUniqueKeyOperation; import jef.model.migration.operation.DropConstraintOperation; import jef.model.migration.operation.RenameFieldOperation; +import jef.platform.base.SqlTypeMapper; +import jef.platform.nul.NullPlatform; import jef.serializable.SerializableObject; import lombok.Getter; import org.junit.jupiter.api.Test; @@ -31,8 +32,10 @@ public class MigrationCreatorRenameFieldConstraintsTest extends MigrationCreator var from = ModelBuilder.from(Ctx.class); var to = ModelBuilder.from(Ctx.class); to.getEntity(TestClass.class).getField("i").setName("i2"); - var mc = new MigrationCreator(); - var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper + var platform = new NullPlatform(); + var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test", + new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava()); + var res = mc.createMigration(); try { validateUp(res); validateDown(res); diff --git a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorRenameFieldTest.java b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorRenameFieldTest.java index 8911f19..ab13969 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorRenameFieldTest.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorRenameFieldTest.java @@ -3,10 +3,11 @@ package jef.model.migration.creator; import jef.DbSet; import jef.model.DbContext; import jef.model.ModelBuilder; -import jef.model.SqlTypeMapper; import jef.model.annotations.Clazz; import jef.model.annotations.Id; import jef.model.migration.operation.RenameFieldOperation; +import jef.platform.base.SqlTypeMapper; +import jef.platform.nul.NullPlatform; import jef.serializable.SerializableObject; import lombok.Getter; import org.junit.jupiter.api.Test; @@ -22,8 +23,10 @@ public class MigrationCreatorRenameFieldTest extends MigrationCreatorTestBase { var to = ModelBuilder.from(Ctx.class); var ent = to.entity(TestClass.class); ent.field("d", double.class.getName()).name("d2"); - var mc = new MigrationCreator(); - var res = mc.createMigration(from, to, "SomeMigration", "test", new ModelBuilderGenerator(from, "Current", "test", new SqlTypeMapper()).generate().getJava());//TODO mapper + var platform = new NullPlatform(); + var mc = new MigrationCreator(platform, from, to, "SomeMigration", "test", + new ModelBuilderGenerator(from, "Current", "test", platform.getTypeMapper()).generate().getJava()); + var res = mc.createMigration(); try { validateUp(res); validateDown(res); diff --git a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorTestBase.java b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorTestBase.java index 2b1dab6..5ff1ff5 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorTestBase.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/MigrationCreatorTestBase.java @@ -2,7 +2,6 @@ package jef.model.migration.creator; import jef.model.DbContext; import jef.model.ModelBuilder; -import jef.model.ModelBuilderCloneTest; import java.io.File; import java.net.URL; @@ -48,7 +47,6 @@ public class MigrationCreatorTestBase { compile(packageName, className, snapshotJava); var clazz = (Class) loadClass(packageName, className); var mb = ModelBuilder.from(clazz); - ModelBuilderCloneTest.debugHelper(from, mb); assertEquals(from, mb); } catch (AssertionError | RuntimeException e) { throw e; @@ -88,7 +86,7 @@ public class MigrationCreatorTestBase { var javac = new File(javaHome, "bin/javac" + (isWindows ? ".exe" : "")); var process = new ProcessBuilder() .command(javac.getAbsolutePath(), - "-cp", "target/classes" + File.pathSeparator + "target/test-classes", + "-cp", "target/classes" + File.pathSeparator + "target/test-classes" + File.pathSeparator + "../core/target/classes", "-encoding", "UTF8", "-g", //debug symbols "-d", destdir.getPath(), //target diff --git a/migration-creator/src/test/java/jef/model/migration/creator/ModelChangeDetectorAddPrimaryKeyTest.java b/migration-creator/src/test/java/jef/model/migration/creator/ModelChangeDetectorAddPrimaryKeyTest.java index 77dbafb..28f881d 100644 --- a/migration-creator/src/test/java/jef/model/migration/creator/ModelChangeDetectorAddPrimaryKeyTest.java +++ b/migration-creator/src/test/java/jef/model/migration/creator/ModelChangeDetectorAddPrimaryKeyTest.java @@ -42,7 +42,7 @@ class ModelChangeDetectorAddPrimaryKeyTest { mb.entity("TestClass").field("i2", int.class.getName()) .isNotNull(true); mb.getEntity("TestClass").setPrimaryKey(new PrimaryKeyConstraint(mb.getEntity("TestClass"), - List.of(mb.getEntity("TestClass").getField("i")))); + List.of(mb.getEntity("TestClass").getField("i")))); return mb; } } \ No newline at end of file