Browse Source

Use switch expression and constants in CallMetaDataProviderFactory

pull/31194/head
Sam Brannen 1 year ago
parent
commit
c9e13575ca
  1. 82
      spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProviderFactory.java

82
spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProviderFactory.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2020 the original author or authors.
* Copyright 2002-2023 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,7 +16,6 @@ @@ -16,7 +16,6 @@
package org.springframework.jdbc.core.metadata;
import java.util.Arrays;
import java.util.List;
import javax.sql.DataSource;
@ -34,30 +33,42 @@ import org.springframework.jdbc.support.MetaDataAccessException; @@ -34,30 +33,42 @@ import org.springframework.jdbc.support.MetaDataAccessException;
*
* @author Thomas Risberg
* @author Juergen Hoeller
* @author Sam Brannen
* @since 2.5
*/
public final class CallMetaDataProviderFactory {
private static final String DB2 = "DB2";
private static final String DERBY = "Apache Derby";
private static final String HANA = "HDB";
private static final String INFORMIX = "Informix Dynamic Server";
private static final String MARIA = "MariaDB";
private static final String MS_SQL_SERVER = "Microsoft SQL Server";
private static final String MYSQL = "MySQL";
private static final String ORACLE = "Oracle";
private static final String POSTGRES = "PostgreSQL";
private static final String SYBASE = "Sybase";
/** List of supported database products for procedure calls. */
public static final List<String> supportedDatabaseProductsForProcedures = Arrays.asList(
"Apache Derby",
"DB2",
"Informix Dynamic Server",
"MariaDB",
"Microsoft SQL Server",
"MySQL",
"Oracle",
"PostgreSQL",
"Sybase"
public static final List<String> supportedDatabaseProductsForProcedures = List.of(
DERBY,
DB2,
INFORMIX,
MARIA,
MS_SQL_SERVER,
MYSQL,
ORACLE,
POSTGRES,
SYBASE
);
/** List of supported database products for function calls. */
public static final List<String> supportedDatabaseProductsForFunctions = Arrays.asList(
"MariaDB",
"Microsoft SQL Server",
"MySQL",
"Oracle",
"PostgreSQL"
public static final List<String> supportedDatabaseProductsForFunctions = List.of(
MARIA,
MS_SQL_SERVER,
MYSQL,
ORACLE,
POSTGRES
);
private static final Log logger = LogFactory.getLog(CallMetaDataProviderFactory.class);
@ -103,31 +114,16 @@ public final class CallMetaDataProviderFactory { @@ -103,31 +114,16 @@ public final class CallMetaDataProviderFactory {
}
}
CallMetaDataProvider provider;
if ("Oracle".equals(databaseProductName)) {
provider = new OracleCallMetaDataProvider(databaseMetaData);
}
else if ("PostgreSQL".equals(databaseProductName)) {
provider = new PostgresCallMetaDataProvider((databaseMetaData));
}
else if ("Apache Derby".equals(databaseProductName)) {
provider = new DerbyCallMetaDataProvider((databaseMetaData));
}
else if ("DB2".equals(databaseProductName)) {
provider = new Db2CallMetaDataProvider((databaseMetaData));
}
else if ("HDB".equals(databaseProductName)) {
provider = new HanaCallMetaDataProvider((databaseMetaData));
}
else if ("Microsoft SQL Server".equals(databaseProductName)) {
provider = new SqlServerCallMetaDataProvider((databaseMetaData));
}
else if ("Sybase".equals(databaseProductName)) {
provider = new SybaseCallMetaDataProvider((databaseMetaData));
}
else {
provider = new GenericCallMetaDataProvider(databaseMetaData);
}
CallMetaDataProvider provider = switch (databaseProductName) {
case ORACLE -> new OracleCallMetaDataProvider(databaseMetaData);
case POSTGRES -> new PostgresCallMetaDataProvider(databaseMetaData);
case DERBY -> new DerbyCallMetaDataProvider(databaseMetaData);
case DB2 -> new Db2CallMetaDataProvider(databaseMetaData);
case HANA -> new HanaCallMetaDataProvider(databaseMetaData);
case MS_SQL_SERVER -> new SqlServerCallMetaDataProvider(databaseMetaData);
case SYBASE -> new SybaseCallMetaDataProvider(databaseMetaData);
default -> new GenericCallMetaDataProvider(databaseMetaData);
};
if (logger.isDebugEnabled()) {
logger.debug("Using " + provider.getClass().getName());

Loading…
Cancel
Save