Skip to content
This repository has been archived by the owner on Mar 31, 2022. It is now read-only.

Support operation without parameters for JpqlFilter #321

Closed
GlebDurygin opened this issue Feb 19, 2021 · 0 comments
Closed

Support operation without parameters for JpqlFilter #321

GlebDurygin opened this issue Feb 19, 2021 · 0 comments
Assignees
Milestone

Comments

@GlebDurygin
Copy link
Contributor

GlebDurygin commented Feb 19, 2021

Related to #196

Parameterless JpqlFilter can take two values:

  1. true - JPQL expression from where and join sections will be added to the data loader query.
  2. false- JPQL expression from where and join sections will not be added to the data loader query.

The parameterClass for parameterless JpqlFilter is java.lang.Void and a value class is a java.lang.Boolean.

Parameterless JpqlFilter creation

XML

<filter id="filter"
        dataLoader="customersDl">
    <properties include=".*"/>
    <configurations>
        <configuration id="testConfiguration" name="Test configuration" default="true">
            <jpqlFilter caption="Active == true"
                        parameterClass="java.lang.Void"
                        defaultValue="true">
                <condition>
                    <c:jpql>
                        <c:where>{E}.active = true</c:where>
                    </c:jpql>
                </condition>
            </jpqlFilter>
        </configuration>
    </configurations>
</filter>

Java

    @Subscribe
    protected void onInit(InitEvent event) {
        DesignTimeConfiguration javaConfiguration = filter.addConfiguration("javaConfiguration", "Java configuration");
        DataLoader dataLoader = filter.getDataLoader();

        JpqlFilter<Boolean> jpqlFilter = uiComponents.create(JpqlFilter.NAME);
        jpqlFilter.setFrame(getWindow());
        jpqlFilter.setConditionModificationDelegated(true);
        jpqlFilter.setDataLoader(dataLoader);
        jpqlFilter.setCondition("{E}.active = true", null);
        jpqlFilter.setParameterClass(Void.class);
        jpqlFilter.setCaption("Active == true");
        jpqlFilter.setParameterName(jpqlFilterSupport.generateParameterName(
                jpqlFilter.getId(),
                jpqlFilter.getParameterClass().getSimpleName()));
        jpqlFilter.setValueComponent(singleFilterSupport.generateValueComponent(
                dataLoader.getContainer().getEntityMetaClass(),
                jpqlFilter.hasInExpression(),
                jpqlFilter.getParameterClass()
        ));

        jpqlFilter.setValue(true);
        javaConfiguration.setFilterComponentDefaultValue(jpqlFilter.getParameterName(), jpqlFilter.getValue());

        javaConfiguration.getRootLogicalFilterComponent().add(jpqlFilter);
    }

Run-time

image

Result

image
image

QA

Check the different ways of parameterless JpqlFilter creation.

@GlebDurygin GlebDurygin added this to the 1.0.0 milestone Feb 19, 2021
@GlebDurygin GlebDurygin self-assigned this Feb 19, 2021
@jmix-projects jmix-projects deleted a comment from maistrenkoIulia Mar 4, 2021
@GlebDurygin GlebDurygin changed the title Support unary operation for JpqlFilter Support operation without parameters for JpqlFilter Mar 4, 2021
GlebDurygin pushed a commit to jmix-projects/jmix-translations that referenced this issue Mar 4, 2021
@natfirst natfirst assigned owlet1997 and unassigned natfirst Mar 5, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants