in java/clickhouse-client/src/main/java/com/epam/deltix/clickhouse/util/BindHelper.java [94:134]
public static <T> List<BindDeclaration> getBindDeclarationsByGetMethods(Class<T> clazz, List<ColumnDeclaration> columnDeclarations) {
Map<String, PropertyDescriptor> getPropertiesByName = Arrays.stream(clazz.getMethods())
.filter(item -> item.getAnnotation(SchemaIgnore.class) == null)
.filter(item -> !item.getDeclaringClass().equals(Object.class))
.map(item -> Pair.of(item, ReflectionUtil.getPropertyByGetMethod(item)))
.filter(item -> item.getRight() != null)
.collect(Collectors.toMap(item -> {
Method method = item.getLeft();
PropertyDescriptor property = item.getRight();
SchemaElement schemaElement = method.getAnnotation(SchemaElement.class);
String propertyName = property.getName();
return getSchemaElementNameIfNotNull(schemaElement, propertyName);
}, Pair::getRight));
List<BindDeclaration> binds = new ArrayList<>();
for (ColumnDeclaration column : columnDeclarations) {
String dbColumnName = column.getDbColumnName();
PropertyDescriptor property = getPropertiesByName.get(dbColumnName);
if (property != null) {
Method readMethod = property.getReadMethod();
SqlDataType dbDataType = column.getDbDataType();
validateBindTypes(clazz, readMethod, dbDataType);
BindDeclaration bindDeclaration = new BindDeclaration(
null,
readMethod,
dbColumnName,
dbDataType);
binds.add(bindDeclaration);
}
}
return binds;
}