H2 database support
This commit is contained in:
parent
19a4ec3176
commit
9346285c08
5
pom.xml
5
pom.xml
@ -346,11 +346,6 @@
|
|||||||
<pattern>com.google.gson</pattern>
|
<pattern>com.google.gson</pattern>
|
||||||
<shadedPattern>fr.xephi.authme.libs.com.google.gson</shadedPattern>
|
<shadedPattern>fr.xephi.authme.libs.com.google.gson</shadedPattern>
|
||||||
</relocation>
|
</relocation>
|
||||||
<relocation>
|
|
||||||
<pattern>org.h2</pattern>
|
|
||||||
<shadedPattern>fr.xephi.authme.libs.org.h2</shadedPattern>
|
|
||||||
</relocation>
|
|
||||||
|
|
||||||
<!-- <relocation>-->
|
<!-- <relocation>-->
|
||||||
<!-- <pattern>com.cryptomorin.xseries</pattern>-->
|
<!-- <pattern>com.cryptomorin.xseries</pattern>-->
|
||||||
<!-- <shadedPattern>fr.xephi.authme.libs.com.cryptomorin.xseries</shadedPattern>-->
|
<!-- <shadedPattern>fr.xephi.authme.libs.com.cryptomorin.xseries</shadedPattern>-->
|
||||||
|
|||||||
@ -81,7 +81,7 @@ public class H2 extends AbstractSqlDataSource {
|
|||||||
*/
|
*/
|
||||||
protected void connect() throws SQLException {
|
protected void connect() throws SQLException {
|
||||||
try {
|
try {
|
||||||
Class.forName("fr.xephi.authme.libs.org.h2.Driver");
|
Class.forName("org.h2.Driver");
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
throw new IllegalStateException("Failed to load H2 JDBC class", e);
|
throw new IllegalStateException("Failed to load H2 JDBC class", e);
|
||||||
}
|
}
|
||||||
@ -109,32 +109,32 @@ public class H2 extends AbstractSqlDataSource {
|
|||||||
DatabaseMetaData md = con.getMetaData();
|
DatabaseMetaData md = con.getMetaData();
|
||||||
|
|
||||||
if (isColumnMissing(md, col.REAL_NAME)) {
|
if (isColumnMissing(md, col.REAL_NAME)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN "
|
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN IF NOT EXISTS "
|
||||||
+ col.REAL_NAME + " VARCHAR(255) NOT NULL DEFAULT 'Player';");
|
+ col.REAL_NAME + " VARCHAR(255) NOT NULL DEFAULT 'Player';");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.PASSWORD)) {
|
if (isColumnMissing(md, col.PASSWORD)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName
|
st.executeUpdate("ALTER TABLE " + tableName
|
||||||
+ " ADD COLUMN " + col.PASSWORD + " VARCHAR(255) NOT NULL DEFAULT '';");
|
+ " ADD COLUMN IF NOT EXISTS " + col.PASSWORD + " VARCHAR(255) NOT NULL DEFAULT '';");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!col.SALT.isEmpty() && isColumnMissing(md, col.SALT)) {
|
if (!col.SALT.isEmpty() && isColumnMissing(md, col.SALT)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN " + col.SALT + " VARCHAR(255);");
|
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN IF NOT EXISTS " + col.SALT + " VARCHAR(255);");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.LAST_IP)) {
|
if (isColumnMissing(md, col.LAST_IP)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName
|
st.executeUpdate("ALTER TABLE " + tableName
|
||||||
+ " ADD COLUMN " + col.LAST_IP + " VARCHAR(40);");
|
+ " ADD COLUMN IF NOT EXISTS " + col.LAST_IP + " VARCHAR(40);");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.LAST_LOGIN)) {
|
if (isColumnMissing(md, col.LAST_LOGIN)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName
|
st.executeUpdate("ALTER TABLE " + tableName
|
||||||
+ " ADD COLUMN " + col.LAST_LOGIN + " BIGINT;");
|
+ " ADD COLUMN IF NOT EXISTS " + col.LAST_LOGIN + " BIGINT;");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.REGISTRATION_IP)) {
|
if (isColumnMissing(md, col.REGISTRATION_IP)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName
|
st.executeUpdate("ALTER TABLE " + tableName
|
||||||
+ " ADD COLUMN " + col.REGISTRATION_IP + " VARCHAR(40);");
|
+ " ADD COLUMN IF NOT EXISTS " + col.REGISTRATION_IP + " VARCHAR(40);");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.REGISTRATION_DATE)) {
|
if (isColumnMissing(md, col.REGISTRATION_DATE)) {
|
||||||
@ -142,58 +142,63 @@ public class H2 extends AbstractSqlDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.LASTLOC_X)) {
|
if (isColumnMissing(md, col.LASTLOC_X)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN " + col.LASTLOC_X
|
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN IF NOT EXISTS " + col.LASTLOC_X
|
||||||
+ " DOUBLE NOT NULL DEFAULT '0.0';");
|
+ " DOUBLE NOT NULL DEFAULT '0.0';");
|
||||||
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN " + col.LASTLOC_Y
|
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN IF NOT EXISTS " + col.LASTLOC_Y
|
||||||
+ " DOUBLE NOT NULL DEFAULT '0.0';");
|
+ " DOUBLE NOT NULL DEFAULT '0.0';");
|
||||||
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN " + col.LASTLOC_Z
|
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN IF NOT EXISTS " + col.LASTLOC_Z
|
||||||
+ " DOUBLE NOT NULL DEFAULT '0.0';");
|
+ " DOUBLE NOT NULL DEFAULT '0.0';");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.LASTLOC_WORLD)) {
|
if (isColumnMissing(md, col.LASTLOC_WORLD)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName
|
st.executeUpdate("ALTER TABLE " + tableName
|
||||||
+ " ADD COLUMN " + col.LASTLOC_WORLD + " VARCHAR(255) NOT NULL DEFAULT 'world';");
|
+ " ADD COLUMN IF NOT EXISTS " + col.LASTLOC_WORLD + " VARCHAR(255) NOT NULL DEFAULT 'world';");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.LASTLOC_YAW)) {
|
if (isColumnMissing(md, col.LASTLOC_YAW)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN "
|
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN IF NOT EXISTS "
|
||||||
+ col.LASTLOC_YAW + " FLOAT;");
|
+ col.LASTLOC_YAW + " FLOAT;");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.LASTLOC_PITCH)) {
|
if (isColumnMissing(md, col.LASTLOC_PITCH)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN "
|
st.executeUpdate("ALTER TABLE " + tableName + " ADD COLUMN IF NOT EXISTS "
|
||||||
+ col.LASTLOC_PITCH + " FLOAT;");
|
+ col.LASTLOC_PITCH + " FLOAT;");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.EMAIL)) {
|
if (isColumnMissing(md, col.EMAIL)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName
|
st.executeUpdate("ALTER TABLE " + tableName
|
||||||
+ " ADD COLUMN " + col.EMAIL + " VARCHAR(255);");
|
+ " ADD COLUMN IF NOT EXISTS " + col.EMAIL + " VARCHAR(255);");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.IS_LOGGED)) {
|
if (isColumnMissing(md, col.IS_LOGGED)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName
|
st.executeUpdate("ALTER TABLE " + tableName
|
||||||
+ " ADD COLUMN " + col.IS_LOGGED + " INT NOT NULL DEFAULT '0';");
|
+ " ADD COLUMN IF NOT EXISTS " + col.IS_LOGGED + " INT NOT NULL DEFAULT '0';");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.HAS_SESSION)) {
|
if (isColumnMissing(md, col.HAS_SESSION)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName
|
st.executeUpdate("ALTER TABLE " + tableName
|
||||||
+ " ADD COLUMN " + col.HAS_SESSION + " INT NOT NULL DEFAULT '0';");
|
+ " ADD COLUMN IF NOT EXISTS " + col.HAS_SESSION + " INT NOT NULL DEFAULT '0';");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isColumnMissing(md, col.TOTP_KEY)) {
|
if (isColumnMissing(md, col.TOTP_KEY)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName
|
st.executeUpdate("ALTER TABLE " + tableName
|
||||||
+ " ADD COLUMN " + col.TOTP_KEY + " VARCHAR(32);");
|
+ " ADD COLUMN IF NOT EXISTS " + col.TOTP_KEY + " VARCHAR(32);");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!col.PLAYER_UUID.isEmpty() && isColumnMissing(md, col.PLAYER_UUID)) {
|
if (!col.PLAYER_UUID.isEmpty() && isColumnMissing(md, col.PLAYER_UUID)) {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName
|
st.executeUpdate("ALTER TABLE " + tableName
|
||||||
+ " ADD COLUMN " + col.PLAYER_UUID + " VARCHAR(36)");
|
+ " ADD COLUMN IF NOT EXISTS " + col.PLAYER_UUID + " VARCHAR(36)");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logger.info("H2 Setup finished");
|
logger.info("H2 Setup finished");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if a column is missing.
|
||||||
|
* @deprecated Not working in H2 database(always true), replaced by statement "IF NOT EXISTS"
|
||||||
|
* @return true/false
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
private boolean isColumnMissing(DatabaseMetaData metaData, String columnName) throws SQLException {
|
private boolean isColumnMissing(DatabaseMetaData metaData, String columnName) throws SQLException {
|
||||||
try (ResultSet rs = metaData.getColumns(null, null, tableName, columnName)) {
|
try (ResultSet rs = metaData.getColumns(null, null, tableName, columnName)) {
|
||||||
return !rs.next();
|
return !rs.next();
|
||||||
@ -380,7 +385,7 @@ public class H2 extends AbstractSqlDataSource {
|
|||||||
*/
|
*/
|
||||||
private void addRegistrationDateColumn(Statement st) throws SQLException {
|
private void addRegistrationDateColumn(Statement st) throws SQLException {
|
||||||
st.executeUpdate("ALTER TABLE " + tableName
|
st.executeUpdate("ALTER TABLE " + tableName
|
||||||
+ " ADD COLUMN " + col.REGISTRATION_DATE + " BIGINT NOT NULL DEFAULT '0';");
|
+ " ADD COLUMN IF NOT EXISTS " + col.REGISTRATION_DATE + " BIGINT NOT NULL DEFAULT '0';");
|
||||||
|
|
||||||
// Use the timestamp from Java to avoid timezone issues in case JVM and database are out of sync
|
// Use the timestamp from Java to avoid timezone issues in case JVM and database are out of sync
|
||||||
long currentTimestamp = System.currentTimeMillis();
|
long currentTimestamp = System.currentTimeMillis();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user