public static List getBindDeclarationsByGetMethods()

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