private List getColumns()

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


    private List<TimescaleColumn> getColumns(RecordClassDescriptor descriptor, String parentFieldName) {
        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()))
                    .name(descriptorColumnName)
                    .build());
        }

        RecordClassDescriptor parentDescriptor = descriptor.getParent();
        DataField[] fields = descriptor.getFields();

        for (DataField field : fields) {
            DataType dataType = field.getType();

            if (dataType instanceof ClassDataType) {
                ClassDataType classDataType = (ClassDataType) dataType;
                RecordClassDescriptor[] classDescriptors = classDataType.getDescriptors();
                for (RecordClassDescriptor classDescriptor : classDescriptors) {
                    columns.addAll(getColumns(classDescriptor, parentFieldName == null ? field.getName() : parentFieldName + "_" + field.getName()));
                }
            } else {
                columns.add(ConnectorUtils.convert(field, parentFieldName, descriptor.getName()));
            }
        }

        if (parentDescriptor != null) {
            columns.addAll(getColumns(parentDescriptor, parentFieldName));
        }

        return columns;
    }