Browse Source

Use switch expression and constants in CallMetaDataProviderFactory

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

Loading…
Cancel
Save