added SqlPlatform class with getters to platform specific implementations

This commit is contained in:
wea_ondara
2022-11-23 17:13:39 +01:00
parent 1b8d9f94d8
commit 99b49083ec
12 changed files with 88 additions and 9 deletions

View File

@@ -16,5 +16,4 @@
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
</project> </project>

View File

@@ -1,9 +1,9 @@
package jef.model; package jef.model;
import jef.Database;
import jef.DbSet; import jef.DbSet;
import jef.model.annotations.Clazz; import jef.model.annotations.Clazz;
import jef.model.constraints.ForeignKeyConstraint; import jef.model.constraints.ForeignKeyConstraint;
import jef.platform.base.Database;
import jef.serializable.SerializableObject; import jef.serializable.SerializableObject;
import lombok.Getter; import lombok.Getter;

View File

@@ -1,6 +1,6 @@
package jef.model; package jef.model;
import jef.DatabaseOptions; import jef.platform.base.DatabaseOptions;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;

View File

@@ -0,0 +1,14 @@
package jef.platform;
import jef.platform.base.SqlTypeMapper;
import jef.platform.base.DatabaseOptions;
import jef.platform.base.migration.MigrationApplier;
import jef.platform.base.MigrationOperationTranslator;
import java.sql.Connection;
public interface SqlPlatform {
MigrationOperationTranslator getTranslator();
SqlTypeMapper getTypeMapper();
MigrationApplier getMigrationApplier(Connection connection, DatabaseOptions options);
}

View File

@@ -1,5 +1,6 @@
package jef; package jef.platform.base;
import jef.MigrationException;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package jef; package jef.platform.base;
import lombok.Getter; import lombok.Getter;

View File

@@ -0,0 +1,11 @@
package jef.platform.base;
import jef.model.migration.operation.MigrationOperation;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public interface MigrationOperationTranslator {
PreparedStatement translate(Connection connection, MigrationOperation op) throws SQLException;
}

View File

@@ -1,4 +1,4 @@
package jef.model; package jef.platform.base;
import java.util.Optional; import java.util.Optional;

View File

@@ -1,10 +1,11 @@
package jef.mysql.migration; package jef.platform.base.migration;
import jef.DatabaseOptions;
import jef.MigrationException; import jef.MigrationException;
import jef.model.migration.Migration; import jef.model.migration.Migration;
import jef.model.migration.MigrationBuilder; import jef.model.migration.MigrationBuilder;
import jef.model.migration.operation.MigrationOperation; import jef.model.migration.operation.MigrationOperation;
import jef.platform.SqlPlatform;
import jef.platform.base.DatabaseOptions;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
@@ -21,6 +22,7 @@ import java.util.stream.Collectors;
public abstract class MigrationApplier { public abstract class MigrationApplier {
protected final Connection connection; protected final Connection connection;
protected final DatabaseOptions options; protected final DatabaseOptions options;
protected final SqlPlatform sqlPlatform;
public void migrate() throws MigrationException { public void migrate() throws MigrationException {
var migrations = findMigrations(options.getMigrationsPackage()); //TODO find all migrations, support multiple db contexts var migrations = findMigrations(options.getMigrationsPackage()); //TODO find all migrations, support multiple db contexts
@@ -47,7 +49,7 @@ public abstract class MigrationApplier {
connection.setAutoCommit(false); connection.setAutoCommit(false);
try { try {
for (MigrationOperation op : operations) { for (MigrationOperation op : operations) {
var stmt = MysqlMigrationOperationTranslator.translate(connection, op); var stmt = sqlPlatform.getTranslator().translate(connection, op);
try { try {
stmt.execute(); stmt.execute();
} catch (SQLException e) { } catch (SQLException e) {

View File

@@ -0,0 +1,14 @@
package jef.platform.nul;
import jef.MigrationException;
import jef.platform.base.Database;
public class NullDatabase extends Database {
public NullDatabase() {
super(null, null);
}
@Override
public void migrate() throws MigrationException {
}
}

View File

@@ -0,0 +1,26 @@
package jef.platform.nul;
import jef.platform.SqlPlatform;
import jef.platform.base.DatabaseOptions;
import jef.platform.base.MigrationOperationTranslator;
import jef.platform.base.SqlTypeMapper;
import jef.platform.base.migration.MigrationApplier;
import java.sql.Connection;
public class NullPlatform implements SqlPlatform {
@Override
public MigrationOperationTranslator getTranslator() {
return null;
}
@Override
public SqlTypeMapper getTypeMapper() {
return new NullTypeMapper();
}
@Override
public MigrationApplier getMigrationApplier(Connection connection, DatabaseOptions options) {
return null;
}
}

View File

@@ -0,0 +1,12 @@
package jef.platform.nul;
import jef.platform.base.SqlTypeMapper;
import java.util.Optional;
public class NullTypeMapper extends SqlTypeMapper {
@Override
public Optional<String> map(String typeName) {
return Optional.ofNullable(typeName);
}
}