private List getPartitions()

in metacat-connector-hive/src/main/java/com/netflix/metacat/connector/hive/HiveConnectorPartitionService.java [174:221]


    private List<Partition> getPartitions(
        final QualifiedName tableName,
        @Nullable final String filter,
        @Nullable final List<String> partitionIds,
        @Nullable final Sort sort,
        @Nullable final Pageable pageable
    ) {
        final String databasename = tableName.getDatabaseName();
        final String tablename = tableName.getTableName();
        try {
            final Table table = metacatHiveClient.getTableByName(databasename, tablename);
            List<Partition> partitionList = null;
            if (!Strings.isNullOrEmpty(filter)) {
                partitionList = metacatHiveClient.listPartitionsByFilter(databasename,
                    tablename, filter);
            } else {
                if (partitionIds != null) {
                    partitionList = metacatHiveClient.getPartitions(databasename,
                        tablename, partitionIds);
                }
                if (partitionList == null || partitionList.isEmpty()) {
                    partitionList = metacatHiveClient.getPartitions(databasename,
                        tablename, null);
                }
            }
            final List<Partition> filteredPartitionList = Lists.newArrayList();
            partitionList.forEach(partition -> {
                final String partitionName = getNameOfPartition(table, partition);
                if (partitionIds == null || partitionIds.contains(partitionName)) {
                    filteredPartitionList.add(partition);
                }
            });
            if (sort != null) {
                if (sort.getOrder() == SortOrder.DESC) {
                    filteredPartitionList.sort(Collections.reverseOrder());
                } else {
                    Collections.sort(filteredPartitionList);
                }
            }
            return ConnectorUtils.paginate(filteredPartitionList, pageable);
        } catch (NoSuchObjectException exception) {
            throw new TableNotFoundException(tableName, exception);
        } catch (MetaException | InvalidObjectException e) {
            throw new InvalidMetaException("Invalid metadata for " + tableName, e);
        } catch (TException e) {
            throw new ConnectorException(String.format("Failed get partitions for hive table %s", tableName), e);
        }
    }