List of usage examples for org.springframework.jdbc.core.metadata TableParameterMetaData getParameterName
public String getParameterName()
From source file:paillard.florent.springframework.simplejdbcupdate.TableMetaDataContext.java
/** * Build the array of {@link java.sql.Types} based on configuration and * metadata information/*from ww w . jav a 2s . c om*/ * * @return the array of types to be used */ public int[] createColumnTypes(List<String> columns) { int[] types = new int[columns.size()]; List<TableParameterMetaData> parameters = this.metaDataProvider.getTableParameterMetaData(); Map<String, TableParameterMetaData> parameterMap = new HashMap<String, TableParameterMetaData>( parameters.size()); for (TableParameterMetaData tpmd : parameters) { parameterMap.put(tpmd.getParameterName().toUpperCase(), tpmd); } int typeIndx = 0; for (String column : columns) { if (column == null) { types[typeIndx] = SqlTypeValue.TYPE_UNKNOWN; } else { TableParameterMetaData tpmd = parameterMap.get(column.toUpperCase()); if (tpmd != null) { types[typeIndx] = tpmd.getSqlType(); } else { types[typeIndx] = SqlTypeValue.TYPE_UNKNOWN; } } typeIndx++; } return types; }
From source file:paillard.florent.springframework.simplejdbcupdate.TableMetaDataContext.java
public List<String> createColumns() { List<TableParameterMetaData> tableParameterMetaDataList = this.metaDataProvider.getTableParameterMetaData(); List<String> columnList = new ArrayList<String>(tableParameterMetaDataList.size()); for (TableParameterMetaData tableParameterMetaData : tableParameterMetaDataList) { columnList.add(tableParameterMetaData.getParameterName()); }/* ww w.j a v a 2 s. c om*/ return columnList; }
From source file:paillard.florent.springframework.simplejdbcupdate.TableMetaDataContext.java
/** * Compare columns created from metadata with declared columns and return a * reconciled list./*from w w w . ja v a2s. c o m*/ * * @param declaredColumns * declared column names * @param generatedKeyNames * names of generated key columns */ protected List<String> reconcileColumnsToUse(List<String> declaredColumns, String[] generatedKeyNames) { if (declaredColumns.size() > 0) { return new ArrayList<String>(declaredColumns); } Set<String> keys = new HashSet<String>(generatedKeyNames.length); for (String key : generatedKeyNames) { keys.add(key.toUpperCase()); } List<String> columns = new ArrayList<String>(); for (TableParameterMetaData meta : metaDataProvider.getTableParameterMetaData()) { if (!keys.contains(meta.getParameterName().toUpperCase())) { columns.add(meta.getParameterName()); } } return columns; }
From source file:org.springframework.jdbc.core.metadata.GenericTableMetaDataProvider.java
/** * Method supporting the metadata processing for a table's columns *///from w w w. jav a 2 s . com private void processTableColumns(DatabaseMetaData databaseMetaData, TableMetaData tmd) { ResultSet tableColumns = null; String metaDataCatalogName = metaDataCatalogNameToUse(tmd.getCatalogName()); String metaDataSchemaName = metaDataSchemaNameToUse(tmd.getSchemaName()); String metaDataTableName = tableNameToUse(tmd.getTableName()); if (logger.isDebugEnabled()) { logger.debug("Retrieving metadata for " + metaDataCatalogName + '/' + metaDataSchemaName + '/' + metaDataTableName); } try { tableColumns = databaseMetaData.getColumns(metaDataCatalogName, metaDataSchemaName, metaDataTableName, null); while (tableColumns.next()) { String columnName = tableColumns.getString("COLUMN_NAME"); int dataType = tableColumns.getInt("DATA_TYPE"); if (dataType == Types.DECIMAL) { String typeName = tableColumns.getString("TYPE_NAME"); int decimalDigits = tableColumns.getInt("DECIMAL_DIGITS"); // Override a DECIMAL data type for no-decimal numerics // (this is for better Oracle support where there have been issues // using DECIMAL for certain inserts (see SPR-6912)) if ("NUMBER".equals(typeName) && decimalDigits == 0) { dataType = Types.NUMERIC; if (logger.isDebugEnabled()) { logger.debug("Overriding metadata: " + columnName + " now NUMERIC instead of DECIMAL"); } } } boolean nullable = tableColumns.getBoolean("NULLABLE"); TableParameterMetaData meta = new TableParameterMetaData(columnName, dataType, nullable); this.tableParameterMetaData.add(meta); if (logger.isDebugEnabled()) { logger.debug("Retrieved metadata: " + meta.getParameterName() + " " + meta.getSqlType() + " " + meta.isNullable()); } } } catch (SQLException ex) { if (logger.isWarnEnabled()) { logger.warn("Error while retrieving metadata for table columns: " + ex.getMessage()); } } finally { JdbcUtils.closeResultSet(tableColumns); } }
From source file:org.springframework.jdbc.core.metadata.TableMetaDataContext.java
/** * Compare columns created from metadata with declared columns and return a reconciled list. * @param declaredColumns declared column names * @param generatedKeyNames names of generated key columns *//*from www. java2 s.c o m*/ protected List<String> reconcileColumnsToUse(List<String> declaredColumns, String[] generatedKeyNames) { if (generatedKeyNames.length > 0) { this.generatedKeyColumnsUsed = true; } if (!declaredColumns.isEmpty()) { return new ArrayList<>(declaredColumns); } Set<String> keys = new LinkedHashSet<>(generatedKeyNames.length); for (String key : generatedKeyNames) { keys.add(key.toUpperCase()); } List<String> columns = new ArrayList<>(); for (TableParameterMetaData meta : obtainMetaDataProvider().getTableParameterMetaData()) { if (!keys.contains(meta.getParameterName().toUpperCase())) { columns.add(meta.getParameterName()); } } return columns; }
From source file:org.springframework.jdbc.core.metadata.TableMetaDataContext.java
/** * Build the array of {@link java.sql.Types} based on configuration and metadata information * @return the array of types to be used *///ww w. j a v a 2s . c o m public int[] createInsertTypes() { int[] types = new int[getTableColumns().size()]; List<TableParameterMetaData> parameters = obtainMetaDataProvider().getTableParameterMetaData(); Map<String, TableParameterMetaData> parameterMap = new LinkedHashMap<>(parameters.size()); for (TableParameterMetaData tpmd : parameters) { parameterMap.put(tpmd.getParameterName().toUpperCase(), tpmd); } int typeIndx = 0; for (String column : getTableColumns()) { if (column == null) { types[typeIndx] = SqlTypeValue.TYPE_UNKNOWN; } else { TableParameterMetaData tpmd = parameterMap.get(column.toUpperCase()); if (tpmd != null) { types[typeIndx] = tpmd.getSqlType(); } else { types[typeIndx] = SqlTypeValue.TYPE_UNKNOWN; } } typeIndx++; } return types; }