private Set<String> getUniqueFields(DatabaseMetaData metaData, String tableName) { ResultSet rs = null; try { rs = databaseProvider.getIndexes(metaData.getConnection(), tableName); final Set<String> fields = newHashSet(); while (rs.next()) { boolean nonUnique = rs.getBoolean("NON_UNIQUE"); if (!nonUnique) { fields.add(parseStringValue(rs, "COLUMN_NAME")); } } return fields; } catch (SQLException e) { throw new RuntimeException("Could not get unique fields for table '" + tableName + "'", e); } finally { closeQuietly(rs); } }
private Set<String> getUniqueFields(DatabaseMetaData metaData, String tableName) { ResultSet rs = null; try { rs = databaseProvider.getIndexes(metaData.getConnection(), tableName); final Set<String> fields = newHashSet(); while (rs.next()) { boolean nonUnique = rs.getBoolean("NON_UNIQUE"); if (!nonUnique) { fields.add(parseStringValue(rs, "COLUMN_NAME")); } } return fields; } catch (SQLException e) { throw new RuntimeException("Could not get unique fields for table '" + tableName + "'", e); } finally { closeQuietly(rs); } }
protected boolean hasIndex(String tableName, String indexName) { Connection connection = null; try { connection = getConnection(); ResultSet indexes = getIndexes(connection, tableName); while (indexes.next()) { if (indexName.equalsIgnoreCase(indexes.getString("INDEX_NAME"))) { return true; } } return false; } catch (SQLException e) { throw new ActiveObjectsException(e); } finally { closeQuietly(connection); } }
protected boolean hasIndex(String tableName, String indexName) { Connection connection = null; try { connection = getConnection(); ResultSet indexes = getIndexes(connection, tableName); while (indexes.next()) { if (indexName.equalsIgnoreCase(indexes.getString("INDEX_NAME"))) { return true; } } return false; } catch (SQLException e) { throw new ActiveObjectsException(e); } finally { closeQuietly(connection); } }
@Override public Iterable<? extends Index> getIndexes(DatabaseMetaData databaseMetaData, String tableName) { final ImmutableList.Builder<Index> indexes = ImmutableList.builder(); ResultSet resultSet = null; try { final Multimap<String, String> fieldsByIndex = ArrayListMultimap.create(); resultSet = databaseProvider.getIndexes(databaseMetaData.getConnection(), tableName); while (resultSet.next()) { boolean nonUnique = resultSet.getBoolean("NON_UNIQUE"); if (nonUnique) { fieldsByIndex.put(parseStringValue(resultSet, "INDEX_NAME"), parseStringValue(resultSet, "COLUMN_NAME")); } } for (String indexName : fieldsByIndex.keySet()) { Collection<String> fieldNames = fieldsByIndex.get(indexName); indexes.add(new IndexImpl(indexName, tableName, fieldNames)); } return indexes.build(); } catch (SQLException e) { throw new RuntimeException(e); } finally { closeQuietly(resultSet); } }
@Override public Iterable<? extends Index> getIndexes(DatabaseMetaData databaseMetaData, String tableName) { final ImmutableList.Builder<Index> indexes = ImmutableList.builder(); ResultSet resultSet = null; try { final Multimap<String, String> fieldsByIndex = ArrayListMultimap.create(); resultSet = databaseProvider.getIndexes(databaseMetaData.getConnection(), tableName); while (resultSet.next()) { boolean nonUnique = resultSet.getBoolean("NON_UNIQUE"); if (nonUnique) { fieldsByIndex.put(parseStringValue(resultSet, "INDEX_NAME"), parseStringValue(resultSet, "COLUMN_NAME")); } } for (String indexName : fieldsByIndex.keySet()) { Collection<String> fieldNames = fieldsByIndex.get(indexName); indexes.add(new IndexImpl(indexName, tableName, fieldNames)); } return indexes.build(); } catch (SQLException e) { throw new RuntimeException(e); } finally { closeQuietly(resultSet); } }