How to get group filter values on controller

Hi,

I am trying to get all values of filter set on browse screen to my controller

for example if i had set condition vertical = ret condition on filter when i try to fetch values using filterComponent i am getting values as verticalDOumPQgJ instead of vertical.

I want to save values as per the condition grouping


public Map<String, Object> ValuesMap(Filter.Configuration configuration) {
        Map<String, Object> valuesMap = new HashMap<>();
        LogicalFilterComponent rootLogicalComponent = configuration.getRootLogicalFilterComponent();

        for (FilterComponent filterComponent : rootLogicalComponent.getFilterComponents()) {
            if (filterComponent instanceof SingleFilterComponent) {
                String parameterName = ((SingleFilterComponent<?>) filterComponent).getParameterName();
                valuesMap.put(parameterName, ((SingleFilterComponent<?>) filterComponent).getValue());
                ((SingleFilterComponent) filterComponent).setValue(configuration.getFilterComponentDefaultValue(parameterName));
            }


        }

        return valuesMap;
    }

As per the attached attachment i had set 3 condition in first configuation name and 3 condition in second configuration name i want get all all 3 condition set in first configuration so that i am able to store in similar way the way i had set condition on filter.

Screenshot from 2023-02-03 13-54-47

You can get the whole conditions tree with entered values in a load delegate, for example:

@Install(to = "usersDl", target = Target.DATA_LOADER)
private List<User> usersDlLoadDelegate(LoadContext<User> loadContext) {
    Condition rootCondition = loadContext.getQuery().getCondition();
    List<Condition> conditions = ((LogicalCondition) rootCondition).getConditions();
    for (Condition c : conditions) {
        if (c instanceof PropertyCondition) {
            Object parameterValue = ((PropertyCondition) c).getParameterValue();
            // ...
        }
    }
    // ...
    return dataManager.loadList(loadContext);
}