public Partition fromPartitionInfo()

in metacat-connector-hive/src/main/java/com/netflix/metacat/connector/hive/converters/HiveConnectorInfoConverter.java [313:372]


    public Partition fromPartitionInfo(
        final TableInfo tableInfo,
        final PartitionInfo partition
    ) {
        final QualifiedName name = partition.getName();
        final List<String> values = Lists.newArrayListWithCapacity(16);
        Map<String, String> metadata = partition.getMetadata();
        if (metadata == null) {
            metadata = new HashMap<>();
            //can't use Collections.emptyMap()
            // which is immutable and can't be
            // modifed by add parts in the embedded
        }

        final List<FieldInfo> fields = tableInfo.getFields();
        List<FieldSchema> fieldSchemas = Collections.emptyList();
        if (notNull(fields)) {
            fieldSchemas = fields.stream()
                .filter(field -> !field.isPartitionKey())
                .map(this::metacatToHiveField)
                .collect(Collectors.toList());
        }
        final StorageDescriptor sd = fromStorageInfo(partition.getSerde(), fieldSchemas);
        //using the table level serialization lib
        if (
            notNull(sd.getSerdeInfo())
                && notNull(tableInfo.getSerde())
                && Strings.isNullOrEmpty(sd.getSerdeInfo().getSerializationLib())
            ) {
            sd.getSerdeInfo().setSerializationLib(tableInfo.getSerde().getSerializationLib());
        }
        final AuditInfo auditInfo = partition.getAudit();
        final int createTime = (notNull(auditInfo) && notNull(auditInfo.getCreatedDate()))
            ? dateToEpochSeconds(auditInfo.getCreatedDate()) : 0;
        final int lastAccessTime = (notNull(auditInfo) && notNull(auditInfo.getLastModifiedDate()))
            ? dateToEpochSeconds(auditInfo.getLastModifiedDate()) : 0;

        if (null == name) {
            return new Partition(values, "", "", createTime, lastAccessTime, sd, metadata);
        }

        if (notNull(name.getPartitionName())) {
            for (String partialPartName : SLASH_SPLITTER.split(partition.getName().getPartitionName())) {
                final List<String> nameValues = ImmutableList.copyOf(EQUAL_SPLITTER.split(partialPartName));
                Preconditions.checkState(nameValues.size() == 2,
                    "Unrecognized partition name: " + partition.getName());
                values.add(nameValues.get(1));
            }
        }
        final String databaseName = notNull(name.getDatabaseName()) ? name.getDatabaseName() : "";
        final String tableName = notNull(name.getTableName()) ? name.getTableName() : "";
        return new Partition(
            values,
            databaseName,
            tableName,
            createTime,
            lastAccessTime,
            sd,
            metadata);
    }