Search in sources :

Example 1 with ColumnListHandler

use of org.apache.commons.dbutils.handlers.ColumnListHandler in project metacat by Netflix.

the class MysqlUserMetadataService method getDescendantDataUris.

@Override
public List<String> getDescendantDataUris(@Nonnull final String uri) {
    List<String> result;
    final Connection connection = DBUtil.getReadConnection(poolingDataSource);
    try {
        final ColumnListHandler<String> handler = new ColumnListHandler<>("uri");
        result = new QueryRunner().query(connection, SQL.GET_DESCENDANT_DATA_URIS, handler, uri + "/%");
    } catch (SQLException e) {
        log.error("Sql exception", e);
        throw new UserMetadataServiceException(String.format("Failed to get descendant uris for %s", uri), e);
    } finally {
        DBUtil.closeReadConnection(connection);
    }
    return result;
}
Also used : UserMetadataServiceException(com.netflix.metacat.common.server.usermetadata.UserMetadataServiceException) SQLException(java.sql.SQLException) Connection(java.sql.Connection) ColumnListHandler(org.apache.commons.dbutils.handlers.ColumnListHandler) QueryRunner(org.apache.commons.dbutils.QueryRunner)

Example 2 with ColumnListHandler

use of org.apache.commons.dbutils.handlers.ColumnListHandler in project metacat by Netflix.

the class MysqlUserMetadataService method _deleteDataMetadatas.

@SuppressWarnings("checkstyle:methodname")
private Void _deleteDataMetadatas(final Connection conn, @Nullable final List<String> uris, final boolean removeDataMetadata) throws SQLException {
    if (uris != null && !uris.isEmpty()) {
        final List<String> paramVariables = uris.stream().map(s -> "?").collect(Collectors.toList());
        final String[] aUris = uris.stream().toArray(String[]::new);
        final String paramString = Joiner.on(",").skipNulls().join(paramVariables);
        final ColumnListHandler<Long> handler = new ColumnListHandler<>("id");
        final List<Long> ids = new QueryRunner().query(conn, String.format(SQL.GET_DATA_METADATA_IDS, paramString), handler, (Object[]) aUris);
        if (!ids.isEmpty()) {
            final List<String> idParamVariables = ids.stream().map(s -> "?").collect(Collectors.toList());
            final Long[] aIds = ids.stream().toArray(Long[]::new);
            final String idParamString = Joiner.on(",").skipNulls().join(idParamVariables);
            new QueryRunner().update(conn, String.format(SQL.DELETE_DATA_METADATA_DELETE, idParamString), (Object[]) aIds);
            if (removeDataMetadata) {
                new QueryRunner().update(conn, String.format(SQL.DELETE_DATA_METADATA, idParamString), (Object[]) aIds);
            }
        }
    }
    return null;
}
Also used : Arrays(java.util.Arrays) Connection(java.sql.Connection) URL(java.net.URL) Date(java.util.Date) HasDataMetadata(com.netflix.metacat.common.dto.HasDataMetadata) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) DefinitionMetadataDto(com.netflix.metacat.common.dto.DefinitionMetadataDto) Strings(com.google.common.base.Strings) SQLException(java.sql.SQLException) Lists(com.google.common.collect.Lists) ResultSet(java.sql.ResultSet) Map(java.util.Map) UserMetadataServiceException(com.netflix.metacat.common.server.usermetadata.UserMetadataServiceException) DataSource(javax.sql.DataSource) Config(com.netflix.metacat.common.server.properties.Config) BaseUserMetadataService(com.netflix.metacat.common.server.usermetadata.BaseUserMetadataService) Nonnull(javax.annotation.Nonnull) Path(java.nio.file.Path) Nullable(javax.annotation.Nullable) Charsets(com.google.common.base.Charsets) DataSourceManager(com.netflix.metacat.common.server.util.DataSourceManager) Properties(java.util.Properties) QueryRunner(org.apache.commons.dbutils.QueryRunner) MetacatJson(com.netflix.metacat.common.json.MetacatJson) Files(java.nio.file.Files) HasDefinitionMetadata(com.netflix.metacat.common.dto.HasDefinitionMetadata) Set(java.util.Set) QualifiedName(com.netflix.metacat.common.QualifiedName) Reader(java.io.Reader) PreparedStatement(java.sql.PreparedStatement) Maps(com.google.common.collect.Maps) MetacatJsonException(com.netflix.metacat.common.json.MetacatJsonException) Collectors(java.util.stream.Collectors) HasMetadata(com.netflix.metacat.common.dto.HasMetadata) Slf4j(lombok.extern.slf4j.Slf4j) List(java.util.List) DBUtil(com.netflix.metacat.common.server.util.DBUtil) Paths(java.nio.file.Paths) Optional(java.util.Optional) Preconditions(com.google.common.base.Preconditions) ColumnListHandler(org.apache.commons.dbutils.handlers.ColumnListHandler) Collections(java.util.Collections) ResultSetHandler(org.apache.commons.dbutils.ResultSetHandler) FileSystems(java.nio.file.FileSystems) Joiner(com.google.common.base.Joiner) ColumnListHandler(org.apache.commons.dbutils.handlers.ColumnListHandler) QueryRunner(org.apache.commons.dbutils.QueryRunner)

Example 3 with ColumnListHandler

use of org.apache.commons.dbutils.handlers.ColumnListHandler in project metacat by Netflix.

the class MysqlUserMetadataService method getDescendantDefinitionNames.

@Override
public List<QualifiedName> getDescendantDefinitionNames(@Nonnull final QualifiedName name) {
    List<String> result;
    final Connection connection = DBUtil.getReadConnection(poolingDataSource);
    try {
        final ColumnListHandler<String> handler = new ColumnListHandler<>("name");
        result = new QueryRunner().query(connection, SQL.GET_DESCENDANT_DEFINITION_NAMES, handler, name.toString() + "/%");
    } catch (SQLException e) {
        log.error("Sql exception", e);
        throw new UserMetadataServiceException(String.format("Failed to get descendant names for %s", name), e);
    } finally {
        DBUtil.closeReadConnection(connection);
    }
    return result.stream().map(QualifiedName::fromString).collect(Collectors.toList());
}
Also used : UserMetadataServiceException(com.netflix.metacat.common.server.usermetadata.UserMetadataServiceException) SQLException(java.sql.SQLException) Connection(java.sql.Connection) ColumnListHandler(org.apache.commons.dbutils.handlers.ColumnListHandler) QueryRunner(org.apache.commons.dbutils.QueryRunner)

Example 4 with ColumnListHandler

use of org.apache.commons.dbutils.handlers.ColumnListHandler in project metacat by Netflix.

the class MysqlUserMetadataService method getDeletedDataMetadataUris.

@Override
public List<String> getDeletedDataMetadataUris(final Date deletedPriorTo, final Integer offset, final Integer limit) {
    List<String> result;
    final Connection connection = DBUtil.getReadConnection(poolingDataSource);
    try {
        final ColumnListHandler<String> handler = new ColumnListHandler<>("uri");
        result = new QueryRunner().query(connection, String.format(SQL.GET_DELETED_DATA_METADATA_URI, offset, limit), handler, deletedPriorTo);
    } catch (SQLException e) {
        log.error("Sql exception", e);
        throw new UserMetadataServiceException(String.format("Failed to get deleted data metadata uris deleted prior to %s", deletedPriorTo), e);
    } finally {
        DBUtil.closeReadConnection(connection);
    }
    return result;
}
Also used : UserMetadataServiceException(com.netflix.metacat.common.server.usermetadata.UserMetadataServiceException) SQLException(java.sql.SQLException) Connection(java.sql.Connection) ColumnListHandler(org.apache.commons.dbutils.handlers.ColumnListHandler) QueryRunner(org.apache.commons.dbutils.QueryRunner)

Example 5 with ColumnListHandler

use of org.apache.commons.dbutils.handlers.ColumnListHandler in project metacat by Netflix.

the class MySqlTagService method list.

/**
     * Returns the list of <code>QualifiedName</code> of items that are tagged by the
     * given <code>includeTags</code> and do not contain the given <code>excludeTags</code>.
     *
     * @param includeTags  include items that contain tags
     * @param excludeTags  include items that do not contain tags
     * @param sourceName   catalog/source name
     * @param databaseName database name
     * @param tableName    table name
     * @return list of qualified names of the items
     */
@Override
public List<QualifiedName> list(final Set<String> includeTags, final Set<String> excludeTags, final String sourceName, final String databaseName, final String tableName) {
    Set<String> includedNames = Sets.newHashSet();
    final Set<String> excludedNames = Sets.newHashSet();
    final Connection connection = DBUtil.getReadConnection(getDataSource());
    try {
        final QueryRunner runner = new QueryRunner();
        final String wildCardName = QualifiedName.toWildCardString(sourceName, databaseName, tableName);
        //Includes
        String query = String.format(QUERY_SEARCH, "in ('" + Joiner.on("','").skipNulls().join(includeTags) + "')");
        final Object[] params = { includeTags.size() == 0 ? 1 : 0, wildCardName == null ? 1 : 0, wildCardName };
        includedNames.addAll(runner.query(connection, query, new ColumnListHandler<>("name"), params));
        if (!excludeTags.isEmpty()) {
            //Excludes
            query = String.format(QUERY_SEARCH, "in ('" + Joiner.on("','").skipNulls().join(excludeTags) + "')");
            final Object[] eParams = { excludeTags.size() == 0 ? 1 : 0, wildCardName == null ? 1 : 0, wildCardName };
            excludedNames.addAll(runner.query(connection, query, new ColumnListHandler<>("name"), eParams));
        }
    } catch (SQLException e) {
        final String message = String.format("Failed getting the list of qualified names for tags %s", includeTags);
        log.error(message, e);
        throw new UserMetadataServiceException(message, e);
    } finally {
        DBUtil.closeReadConnection(connection);
    }
    if (!excludeTags.isEmpty()) {
        includedNames = Sets.difference(includedNames, excludedNames);
    }
    return includedNames.stream().map(s -> QualifiedName.fromString(s, false)).collect(Collectors.toList());
}
Also used : Lookup(com.netflix.metacat.common.server.model.Lookup) UserMetadataService(com.netflix.metacat.common.server.usermetadata.UserMetadataService) Connection(java.sql.Connection) TagItem(com.netflix.metacat.common.server.model.TagItem) SQLException(java.sql.SQLException) TagService(com.netflix.metacat.common.server.usermetadata.TagService) ImmutableList(com.google.common.collect.ImmutableList) ScalarHandler(org.apache.commons.dbutils.handlers.ScalarHandler) Map(java.util.Map) UserMetadataServiceException(com.netflix.metacat.common.server.usermetadata.UserMetadataServiceException) DataSource(javax.sql.DataSource) LookupService(com.netflix.metacat.common.server.usermetadata.LookupService) Config(com.netflix.metacat.common.server.properties.Config) DataSourceManager(com.netflix.metacat.common.server.util.DataSourceManager) QueryRunner(org.apache.commons.dbutils.QueryRunner) Iterator(java.util.Iterator) MetacatJson(com.netflix.metacat.common.json.MetacatJson) BeanHandler(org.apache.commons.dbutils.handlers.BeanHandler) Set(java.util.Set) QualifiedName(com.netflix.metacat.common.QualifiedName) Maps(com.google.common.collect.Maps) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) Slf4j(lombok.extern.slf4j.Slf4j) List(java.util.List) DBUtil(com.netflix.metacat.common.server.util.DBUtil) Optional(java.util.Optional) Preconditions(com.google.common.base.Preconditions) ColumnListHandler(org.apache.commons.dbutils.handlers.ColumnListHandler) ResultSetHandler(org.apache.commons.dbutils.ResultSetHandler) Joiner(com.google.common.base.Joiner) UserMetadataServiceException(com.netflix.metacat.common.server.usermetadata.UserMetadataServiceException) SQLException(java.sql.SQLException) Connection(java.sql.Connection) ColumnListHandler(org.apache.commons.dbutils.handlers.ColumnListHandler) QueryRunner(org.apache.commons.dbutils.QueryRunner)

Aggregations

UserMetadataServiceException (com.netflix.metacat.common.server.usermetadata.UserMetadataServiceException)6 Connection (java.sql.Connection)6 SQLException (java.sql.SQLException)6 QueryRunner (org.apache.commons.dbutils.QueryRunner)5 ColumnListHandler (org.apache.commons.dbutils.handlers.ColumnListHandler)5 Joiner (com.google.common.base.Joiner)3 Preconditions (com.google.common.base.Preconditions)3 Maps (com.google.common.collect.Maps)3 QualifiedName (com.netflix.metacat.common.QualifiedName)3 MetacatJson (com.netflix.metacat.common.json.MetacatJson)3 Config (com.netflix.metacat.common.server.properties.Config)3 DBUtil (com.netflix.metacat.common.server.util.DBUtil)3 DataSourceManager (com.netflix.metacat.common.server.util.DataSourceManager)3 List (java.util.List)3 Map (java.util.Map)3 Optional (java.util.Optional)3 Set (java.util.Set)3 Collectors (java.util.stream.Collectors)3 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)2 Charsets (com.google.common.base.Charsets)2