public Partition metacatToHivePartition()

in metacat-thrift/src/main/java/com/netflix/metacat/thrift/HiveConvertersImpl.java [383:447]


    public Partition metacatToHivePartition(final PartitionDto partitionDto, @Nullable final TableDto tableDto) {
        final Partition result = new Partition();

        final QualifiedName name = partitionDto.getName();
        List<String> values = Lists.newArrayListWithCapacity(16);
        String databaseName = null;
        String tableName = null;
        if (name != null) {
            if (name.getPartitionName() != null) {
                //
                // Unescape the partition name to get the right partition values.
                // Partition name always are escaped where as the parition values are not.
                //
                values = getPartValsFromName(tableDto, name.getPartitionName());
            }

            if (name.getDatabaseName() != null) {
                databaseName = name.getDatabaseName();
            }

            if (name.getTableName() != null) {
                tableName = name.getTableName();
            }
        }
        result.setValues(values);
        result.setDbName(databaseName);
        result.setTableName(tableName);

        Map<String, String> metadata = partitionDto.getMetadata();
        if (metadata == null) {
            metadata = Maps.newHashMap();
        }
        result.setParameters(metadata);

        result.setSd(fromStorageDto(partitionDto.getSerde(), tableName));
        final StorageDescriptor sd = result.getSd();
        if (tableDto != null) {
            if (sd.getSerdeInfo() != null && tableDto.getSerde() != null && Strings.isNullOrEmpty(
                sd.getSerdeInfo().getSerializationLib())) {
                sd.getSerdeInfo().setSerializationLib(tableDto.getSerde().getSerializationLib());
            }

            final List<FieldDto> fields = tableDto.getFields();
            if (fields == null) {
                sd.setCols(Collections.emptyList());
            } else {
                sd.setCols(fields.stream()
                    .filter(field -> !field.isPartition_key())
                    .map(this::metacatToHiveField)
                    .collect(Collectors.toList()));
            }
        }

        final AuditDto auditDto = partitionDto.getAudit();
        if (auditDto != null) {
            if (auditDto.getCreatedDate() != null) {
                result.setCreateTime(dateToEpochSeconds(auditDto.getCreatedDate()));
            }
            if (auditDto.getLastModifiedDate() != null) {
                result.setLastAccessTime(dateToEpochSeconds(auditDto.getLastModifiedDate()));
            }
        }

        return result;
    }