private List getColumns()

in timescaledb-connector/src/main/java/com/epam/deltix/timebase/connector/service/timebase/TimebaseDescriptorService.java [110:155]


    private List<TimescaleColumn> getColumns(com.epam.deltix.timebase.messages.schema.RecordClassDescriptor descriptor, String parentFieldName,
                                             Map<CharSequence, com.epam.deltix.timebase.messages.schema.ClassDescriptorInfo> descriptorsMap) {
        List<TimescaleColumn> columns = new ArrayList<>();

        if (!descriptor.isAbstract()) {
            String descriptorColumnName;
            if (parentFieldName != null) {
                descriptorColumnName = parentFieldName + "_" + "descriptor_name";
            } else {
                descriptorColumnName = "descriptor_name";
            }

            columns.add(TimescaleColumn.builder()
                    .dataType(TimescaleColumn.TimescaleDataType.VARCHAR)
                    .relatedDescriptors(Collections.singletonList(descriptor.getName().toString()))
                    .name(descriptorColumnName)
                    .build());
        }

        com.epam.deltix.timebase.messages.schema.RecordClassDescriptorInfo parentDescriptor = descriptor.getParent();
        ObjectArrayList<DataFieldInfo> fields = descriptor.getDataFields();

        for (DataFieldInfo field : fields) {
            DataTypeInfo dataType = field.getDataType();

            if (dataType instanceof com.epam.deltix.timebase.messages.schema.ClassDataType) {
                com.epam.deltix.timebase.messages.schema.ClassDataType classDataType = (com.epam.deltix.timebase.messages.schema.ClassDataType) dataType;
                ObjectArrayList<ClassDescriptorRefInfo> classDescriptorsRef = classDataType.getTypeDescriptors();
                for (ClassDescriptorRefInfo descriptorRef : classDescriptorsRef) {
                    columns.addAll(getColumns(
                            (com.epam.deltix.timebase.messages.schema.RecordClassDescriptor) descriptorsMap.get(descriptorRef.getName()),
                            parentFieldName == null ? field.getName().toString() : parentFieldName + "_" + field.getName(),
                            descriptorsMap)
                    );
                }
            } else {
                columns.add(MigrationUtils.convert(field, parentFieldName, descriptor.getName().toString()));
            }
        }

        if (parentDescriptor != null) {
            columns.addAll(getColumns((com.epam.deltix.timebase.messages.schema.RecordClassDescriptor) parentDescriptor, parentFieldName, descriptorsMap));
        }

        return columns;
    }