Refactor extract separate modules for each platform from ebean-api dbplatform

This commit is contained in:
Rob Bygrave committed 2022-03-30 17:11:36 +13:00
1 parent 514bba4130
commit e71e16c1ee
259 files changed
+3183 -1125

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>platforms</artifactId>
<groupId>io.ebean</groupId>
<version>12.16.2-SNAPSHOT</version>
</parent>
<artifactId>ebean-platform-nuodb</artifactId>
<dependencies>
<dependency>
<groupId>io.ebean</groupId>
<artifactId>ebean-api</artifactId>
<version>12.16.2-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,10 @@
package io.ebean.platform.nuodb;
import io.ebean.config.dbplatform.DbViewHistorySupport;
/**
* Runtime support for @History with NuoDB.
*/
public class NuoDbHistorySupport extends DbViewHistorySupport {
}
@@ -0,0 +1,62 @@
package io.ebean.platform.nuodb;
import io.ebean.BackgroundExecutor;
import io.ebean.Query;
import io.ebean.Query.LockWait;
import io.ebean.annotation.Platform;
import io.ebean.config.dbplatform.DatabasePlatform;
import io.ebean.config.dbplatform.DbPlatformType;
import io.ebean.config.dbplatform.DbType;
import io.ebean.config.dbplatform.IdType;
import io.ebean.config.dbplatform.PlatformIdGenerator;
import io.ebean.config.dbplatform.SqlErrorCodes;
import javax.sql.DataSource;
/**
* NuoDb specific platform.
*/
public class NuoDbPlatform extends DatabasePlatform {
public NuoDbPlatform() {
super();
this.platform = Platform.NUODB;
this.idInExpandedForm = true;
this.supportsResultSetConcurrencyModeUpdatable = false;
this.supportsDeleteTableAlias = true;
this.likeClauseRaw = "like ?";
this.historySupport = new NuoDbHistorySupport();
//this.dbEncrypt = ...
dbIdentity.setIdType(IdType.IDENTITY);
dbIdentity.setSupportsIdentity(true);
dbIdentity.setSupportsSequence(true);
dbIdentity.setSupportsGetGeneratedKeys(true);
// No referential integrity exception to map
this.exceptionTranslator =
new SqlErrorCodes()
//.addAcquireLock("")
.addDuplicateKey("23000")
.addSerializableConflict("40002")
.build();
dbTypeMap.put(DbType.INTEGER, new DbPlatformType("integer", false));
}
@Override
public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int stepSize, String seqName) {
return new NuoDbSequence(be, ds, seqName, stepSize);
}
@Override
protected String withForUpdate(String sql, LockWait lockWait, Query.LockType lockType) {
switch (lockWait) {
case NOWAIT:
return sql + " for update nowait";
case SKIPLOCKED:
default:
return sql + " for update";
}
}
}
@@ -0,0 +1,49 @@
package io.ebean.platform.nuodb;
import io.ebean.annotation.Platform;
import io.ebean.config.dbplatform.DatabasePlatform;
import io.ebean.config.dbplatform.DatabasePlatformProvider;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
/**
* NuoDB platform provider.
*/
public class NuoDbPlatformProvider implements DatabasePlatformProvider {
@Override
public String toString() {
return "NuoDB";
}
@Override
public boolean match(String name) {
return name.equals("nuodb");
}
@Override
public DatabasePlatform create(String name) {
return new NuoDbPlatform();
}
@Override
public boolean matchByProductName(String productName) {
return productName.contains("nuo");
}
@Override
public DatabasePlatform create(int majorVersion, int minorVersion, DatabaseMetaData meta, Connection connection) {
return new NuoDbPlatform();
}
@Override
public boolean matchPlatform(Platform platform) {
return Platform.NUODB.equals(platform);
}
@Override
public DatabasePlatform create(Platform platform) {
return new NuoDbPlatform();
}
}
@@ -0,0 +1,24 @@
package io.ebean.platform.nuodb;
import io.ebean.BackgroundExecutor;
import io.ebean.config.dbplatform.SequenceStepIdGenerator;
import javax.sql.DataSource;
public class NuoDbSequence extends SequenceStepIdGenerator {
private final String nextSql;
/**
* Construct where batchSize is the sequence step size.
*/
public NuoDbSequence(BackgroundExecutor be, DataSource ds, String seqName, int stepSize) {
super(be, ds, seqName, stepSize);
this.nextSql = "select next value for " + seqName + " from dual";
}
@Override
public String getSql(int batchSize) {
return nextSql;
}
}
@@ -0,0 +1,4 @@
/**
* NuoDB specific support.
*/
package io.ebean.platform.nuodb;
@@ -0,0 +1,8 @@
module io.ebean.platform.nuodb {
exports io.ebean.platform.nuodb;
requires transitive io.ebean.api;
provides io.ebean.config.dbplatform.DatabasePlatformProvider with io.ebean.platform.nuodb.NuoDbPlatformProvider;
}
@@ -0,0 +1 @@
io.ebean.platform.nuodb.NuoDbPlatformProvider