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;
}