Search in sources :

Example 1 with Select

use of de.metas.ui.web.handlingunits.HUEditorRowFilter.Select in project metasfresh-webui-api by metasfresh.

the class HUEditorRowFilters method toPredicate.

public static Predicate<HUEditorRow> toPredicate(@NonNull final HUEditorRowFilter filter) {
    Predicate<HUEditorRow> predicate = Predicates.alwaysTrue();
    if (filter == HUEditorRowFilter.ALL) {
        return predicate;
    }
    // Filter by row type
    final Select rowType = filter.getSelect();
    if (rowType == Select.ALL) {
    // nothing
    } else if (rowType == Select.ONLY_TOPLEVEL) {
        predicate = predicate.and(HUEditorRow::isTopLevel);
    } else if (rowType == Select.LU) {
        predicate = predicate.and(HUEditorRow::isLU);
    } else if (rowType == Select.TU) {
        predicate = predicate.and(HUEditorRow::isTU);
    } else if (rowType == Select.CU) {
        predicate = predicate.and(HUEditorRow::isCU);
    } else {
        throw new AdempiereException("Unknown: " + rowType);
    }
    // Filter by string filter
    final String stringFilter = filter.getUserInputFilter();
    if (!Check.isEmpty(stringFilter, true)) {
        predicate = predicate.and(row -> row.matchesStringFilter(stringFilter));
    }
    // Exclude M_HU_IDs
    final ImmutableSet<Integer> excludeHUIds = filter.getExcludeHUIds();
    if (!excludeHUIds.isEmpty()) {
        predicate = predicate.and(row -> !excludeHUIds.contains(row.getM_HU_ID()));
    }
    // Include HUStatuses
    final ImmutableSet<String> onlyHUStatuses = filter.getOnlyHUStatuses();
    if (!onlyHUStatuses.isEmpty()) {
        predicate = predicate.and(row -> onlyHUStatuses.contains(row.getHUStatusKey()));
    }
    // Exclude HUStatuses
    final ImmutableSet<String> excludeHUStatuses = filter.getExcludeHUStatuses();
    if (!excludeHUStatuses.isEmpty()) {
        predicate = predicate.and(row -> !excludeHUStatuses.contains(row.getHUStatusKey()));
    }
    return predicate;
}
Also used : UtilityClass(lombok.experimental.UtilityClass) Services(org.adempiere.util.Services) ImmutableSet(com.google.common.collect.ImmutableSet) Select(de.metas.ui.web.handlingunits.HUEditorRowFilter.Select) AdempiereException(org.adempiere.exceptions.AdempiereException) Predicate(java.util.function.Predicate) Check(de.metas.printing.esb.base.util.Check) NonNull(lombok.NonNull) IHUQueryBuilder(de.metas.handlingunits.IHUQueryBuilder) Predicates(com.google.common.base.Predicates) IHandlingUnitsDAO(de.metas.handlingunits.IHandlingUnitsDAO) AdempiereException(org.adempiere.exceptions.AdempiereException) Select(de.metas.ui.web.handlingunits.HUEditorRowFilter.Select)

Example 2 with Select

use of de.metas.ui.web.handlingunits.HUEditorRowFilter.Select in project metasfresh-webui-api by metasfresh.

the class HUEditorRowFilters method toHUQueryBuilderPart.

/**
 * Convert given filter to {@link IHUQueryBuilder}. All filter options which cannot be converted to {@link IHUQueryBuilder} are ignored.
 */
public static IHUQueryBuilder toHUQueryBuilderPart(final HUEditorRowFilter filter) {
    final IHUQueryBuilder huQueryBuilder = Services.get(IHandlingUnitsDAO.class).createHUQueryBuilder();
    // 
    // Filter by row type
    // IMPORTANT: don't filter out TUs/CUs because it might be that we are searching for included rows too
    // and in case we are filtering them out here the included TUs/CUs won't be found later...
    final Select rowType = filter.getSelect();
    if (rowType == Select.ALL) {
    // nothing
    } else if (rowType == Select.ONLY_TOPLEVEL) {
        huQueryBuilder.setOnlyTopLevelHUs(true);
    } else // else if (rowType == Select.LU)
    // else if (rowType == Select.TU)
    {
    // throw new AdempiereException("Not supported: " + rowType);
    }
    // Filter by string filter
    // final String stringFilter = filter.getUserInputFilter();
    // if (!Check.isEmpty(stringFilter, true))
    // {
    // throw new AdempiereException("String filter not supported: " + stringFilter);
    // }
    // Exclude M_HU_IDs
    huQueryBuilder.addHUIdsToExclude(filter.getExcludeHUIds());
    // Include HUStatuses
    huQueryBuilder.addHUStatusesToInclude(filter.getOnlyHUStatuses());
    // Exclude HUStatuses
    huQueryBuilder.addHUStatusesToExclude(filter.getExcludeHUStatuses());
    return huQueryBuilder;
}
Also used : IHandlingUnitsDAO(de.metas.handlingunits.IHandlingUnitsDAO) IHUQueryBuilder(de.metas.handlingunits.IHUQueryBuilder) Select(de.metas.ui.web.handlingunits.HUEditorRowFilter.Select)

Aggregations

IHUQueryBuilder (de.metas.handlingunits.IHUQueryBuilder)2 IHandlingUnitsDAO (de.metas.handlingunits.IHandlingUnitsDAO)2 Select (de.metas.ui.web.handlingunits.HUEditorRowFilter.Select)2 Predicates (com.google.common.base.Predicates)1 ImmutableSet (com.google.common.collect.ImmutableSet)1 Check (de.metas.printing.esb.base.util.Check)1 Predicate (java.util.function.Predicate)1 NonNull (lombok.NonNull)1 UtilityClass (lombok.experimental.UtilityClass)1 AdempiereException (org.adempiere.exceptions.AdempiereException)1 Services (org.adempiere.util.Services)1