Example usage for org.apache.commons.collections Predicate evaluate

List of usage examples for org.apache.commons.collections Predicate evaluate

Introduction

In this page you can find the example usage for org.apache.commons.collections Predicate evaluate.

Prototype

public boolean evaluate(T object);

Source Link

Document

Use the specified parameter to perform a test that returns true or false.

Usage

From source file:org.onexus.website.api.utils.visible.VisibleTest.java

@Test
public void testVisiblePredicate() {

    Predicate emptyPredicate = createPredicate();
    Predicate otherVariantSelected = createPredicate(
            new MockEntitySelection(new ORI("/data/variants"), "other-value"));
    Predicate myVariantSelected = createPredicate(
            new MockEntitySelection(new ORI("/data/variants"), "9834yt908008"));

    assertTrue(emptyPredicate
            .evaluate(new MockVisible("(data/variants[VARIANT=9834yt908008] OR !data/variants)")));
    assertTrue(emptyPredicate//from  ww w.j a v  a2  s  .  com
            .evaluate(new MockVisible("NOT data/variants OR data/variants[VARIANT=9834yt908008]")));

    assertFalse(otherVariantSelected
            .evaluate(new MockVisible("NOT data/variants OR data/variants[VARIANT=9834yt908008]")));

    assertTrue(myVariantSelected
            .evaluate(new MockVisible("NOT data/variants OR data/variants[VARIANT=9834yt908008]")));

}

From source file:org.onexus.website.api.widgets.tableviewer.TableViewer.java

public TableViewer(String componentId, IModel<TableViewerStatus> status) {
    super(componentId, status);

    onEventFireUpdate(EventQueryUpdate.class, EventAddFilter.class, EventRemoveFilter.class);

    if (status.getObject() == null) {
        status.setObject(getStatus());/*from ww  w . j a  va  2 s .co  m*/
    }

    Integer sessionRowsPerPage = getSession().getMetaData(DEFAULT_ROWS_PER_PAGE);
    final Integer rowsPerPage = sessionRowsPerPage == null ? 20 : sessionRowsPerPage;

    this.dataProvider = new EntitiesRowProvider(status, rowsPerPage) {

        @Override
        protected Query getQuery() {
            return TableViewer.this.getQuery();
        }

        @Override
        protected void addTaskStatus(Progress progressStatus) {
            //TODO
        }

    };

    // Create the columns from the config
    int ccs = getStatus().getCurrentColumnSet();
    List<IColumnConfig> columnsConfig = getConfig().getColumnSets().get(ccs).getColumns();
    final List<IColumn<IEntityTable, String>> columns = new ArrayList<IColumn<IEntityTable, String>>();

    ORI parentURI = getQuery().getOn();

    List<IColumnConfig> visibleColumnsConfig = new ArrayList<IColumnConfig>(columnsConfig.size());
    BrowserPageStatus pageStatus = findParentStatus(BrowserPageStatus.class);

    Predicate sortablePredicate;
    if (pageStatus != null) {
        sortablePredicate = new VisiblePredicate(getPageBaseOri(), pageStatus.getEntitySelections());
        Predicate filter = new VisiblePredicate(getPageBaseOri(), pageStatus.getEntitySelections());
        CollectionUtils.select(columnsConfig, filter, visibleColumnsConfig);
    } else {
        sortablePredicate = new VisiblePredicate(getPageBaseOri(), Collections.EMPTY_LIST);
        visibleColumnsConfig = columnsConfig;
    }

    boolean tableSort = sortablePredicate.evaluate(getConfig().getSortable());
    for (IColumnConfig columnConfig : visibleColumnsConfig) {
        String columnSortStr = columnConfig.getSortable();
        boolean columnSort = sortablePredicate.evaluate(columnSortStr);
        columnConfig.addColumns(columns, parentURI, Strings.isEmpty(columnSortStr) ? tableSort : columnSort);
    }

    // Disable default status order if the table is not sortable.
    if (!tableSort) {
        getStatus().setOrder(null);
    }

    add(new OnDomReadyPanel("datatable") {
        @Override
        protected Panel onDomReadyPanel(String componentId) {

            Boolean forceCount = getConfig().getForceCount();
            if (forceCount != null && forceCount.booleanValue()) {
                dataProvider.forceCount();
            }

            return new DataTablePanel("datatable", columns, dataProvider, rowsPerPage);
        }
    });

}

From source file:org.openconcerto.sql.PropsConfiguration.java

/**
 * Apply <code>cl</code> for each property that matches <code>filter</code>.
 * /*from  ww w. j a  v  a  2  s . c om*/
 * @param cl what to do for each found property.
 * @param filter which property to use.
 */
public final void propIterate(final IClosure<String> cl, final Predicate filter) {
    for (final String propName : this.props.stringPropertyNames()) {
        if (filter.evaluate(propName)) {
            cl.executeChecked(propName);
        }
    }
}

From source file:org.openfaces.component.filter.PredicateBuilder.java

private static Predicate convertToPredicate(final ExpressionFilterCriterion expressionFilterCriterion) {
    final FilterCondition condition = expressionFilterCriterion.getCondition();

    final Object parameter = expressionFilterCriterion.getArg1();
    if (parameter == null && condition != FilterCondition.EMPTY)
        return TruePredicate.getInstance();

    final Predicate predicateFunctor = condition.process(new FilterConditionProcessor<Predicate>() {
        public Predicate processEmpty() {
            return new Predicate() {
                public boolean evaluate(Object o) {
                    return o == null || o.equals("");
                }/*w w w  .j  ava 2  s  .  co  m*/
            };
        }

        public Predicate processEquals() {
            Comparator comparator = getComparatorForParameter(parameter);
            if (parameter instanceof Date) {
                TimeZone timeZone = (TimeZone) expressionFilterCriterion.getParameters().get("timeZone");
                Date dayStart = ParametersInterpreter.dayStart((Date) parameter, timeZone);
                Predicate preficateForBefore = new ComparePredicate(dayStart, FilterCondition.GREATER_OR_EQUAL,
                        comparator);
                Date dayEnd = ParametersInterpreter.dayEnd((Date) parameter, timeZone);
                Predicate preficateForAfter = new ComparePredicate(dayEnd, FilterCondition.LESS_OR_EQUAL,
                        comparator);
                return new AllPredicate(new Predicate[] { preficateForBefore, preficateForAfter });
            } else if (parameter instanceof String) {
                boolean caseSensitive = expressionFilterCriterion.isCaseSensitive();
                return new AbstractStringPredicate(parameter.toString(), caseSensitive) {
                    public boolean evaluate(String parameter, String value) {
                        return value.equals(parameter);
                    }
                };
            } else {
                return new ComparePredicate(parameter, condition, comparator);
            }
        }

        public Predicate processContains() {
            boolean caseSensitive = expressionFilterCriterion.isCaseSensitive();
            return new AbstractStringPredicate(parameter.toString(), caseSensitive) {
                public boolean evaluate(String parameter, String value) {
                    return value.contains(parameter);
                }
            };
        }

        public Predicate processBegins() {
            boolean caseSensitive = expressionFilterCriterion.isCaseSensitive();
            return new AbstractStringPredicate(parameter.toString(), caseSensitive) {
                public boolean evaluate(String parameter, String value) {
                    return value.startsWith(parameter);
                }
            };
        }

        public Predicate processEnds() {
            boolean caseSensitive = expressionFilterCriterion.isCaseSensitive();
            return new AbstractStringPredicate(parameter.toString(), caseSensitive) {
                public boolean evaluate(String parameter, String value) {
                    return value.endsWith(parameter);
                }
            };
        }

        public Predicate processLess() {
            Comparator comparator = getComparatorForParameter(parameter);
            Object correctedParameter = parameter;
            if (parameter instanceof Date) {
                TimeZone timeZone = (TimeZone) expressionFilterCriterion.getParameters().get("timeZone");
                correctedParameter = ParametersInterpreter.dayStart((Date) parameter, timeZone);
            }
            return new ComparePredicate(correctedParameter, condition, comparator);
        }

        public Predicate processGreater() {
            Comparator comparator = getComparatorForParameter(parameter);
            Object correctedParameter = parameter;
            if (parameter instanceof Date) {
                TimeZone timeZone = (TimeZone) expressionFilterCriterion.getParameters().get("timeZone");
                correctedParameter = ParametersInterpreter.dayEnd((Date) parameter, timeZone);
            }
            return new ComparePredicate(correctedParameter, condition, comparator);
        }

        public Predicate processLessOrEqual() {
            Comparator comparator = getComparatorForParameter(parameter);
            Object correctedParameter = parameter;
            if (parameter instanceof Date) {
                TimeZone timeZone = (TimeZone) expressionFilterCriterion.getParameters().get("timeZone");
                correctedParameter = ParametersInterpreter.dayEnd((Date) parameter, timeZone);
            }
            return new ComparePredicate(correctedParameter, condition, comparator);
        }

        public Predicate processGreaterOrEqual() {
            Comparator comparator = getComparatorForParameter(parameter);
            Object correctedParameter = parameter;
            if (parameter instanceof Date) {
                TimeZone timeZone = (TimeZone) expressionFilterCriterion.getParameters().get("timeZone");
                correctedParameter = ParametersInterpreter.dayStart((Date) parameter, timeZone);
            }
            return new ComparePredicate(correctedParameter, condition, comparator);
        }

        public Predicate processBetween() {
            Comparator comparator = getComparatorForParameter(parameter);
            Object parameter1 = parameter;
            Object parameter2 = expressionFilterCriterion.getArg2();
            if (parameter2 == null)
                return TruePredicate.getInstance();
            if (parameter1 instanceof Date && parameter2 instanceof Date) {
                TimeZone timeZone = (TimeZone) expressionFilterCriterion.getParameters().get("timeZone");
                parameter1 = ParametersInterpreter.dayStart((Date) parameter1, timeZone);
                parameter2 = ParametersInterpreter.dayEnd((Date) parameter1, timeZone);
            }
            Predicate preficateForBefore = new ComparePredicate(parameter1, FilterCondition.GREATER_OR_EQUAL,
                    comparator);
            Predicate preficateForAfter = new ComparePredicate(parameter2, FilterCondition.LESS_OR_EQUAL,
                    comparator);
            return new AllPredicate(new Predicate[] { preficateForBefore, preficateForAfter });
        }
    });

    final PropertyLocator propertyLocator = expressionFilterCriterion.getPropertyLocator();
    Predicate predicate = new Predicate() {
        public boolean evaluate(Object o) {
            return predicateFunctor.evaluate(propertyLocator.getPropertyValue(o));
        }
    };

    return (expressionFilterCriterion.isInverse()) ? new NotPredicate(predicate) : predicate;
}

From source file:org.openfaces.component.table.impl.TableDataModel.java

public static boolean filterRow(List<Filter> filters, Object rowObj, boolean[] flagsArray) {
    Object data = (rowObj instanceof RowInfo) ? ((RowInfo) rowObj).getRowData() // RowInfo for DataTable (for storing original row indexes)
            : rowObj; // row data object for TreeTable (for there's no notion of index in TreeTable)
    boolean rowAccepted = true;
    for (int filterIndex = 0, filterCount = filters.size(); filterIndex < filterCount; filterIndex++) {
        Filter filter = filters.get(filterIndex);
        FilterCriterion filterValue = (FilterCriterion) filter.getValue();

        Predicate predicate = filterValue != null ? PredicateBuilder.build(filterValue) : null;
        boolean filterAcceptsData = predicate == null || predicate.evaluate(data);
        if (!filterAcceptsData)
            rowAccepted = false;/*from   w ww.  j  a  v  a  2s.  com*/
        flagsArray[filterIndex] = filterAcceptsData;
    }

    return rowAccepted;
}

From source file:org.openvpms.component.business.service.archetype.helper.IMObjectBean.java

/**
 * Returns the first value of a collection node that matches the supplied predicate.
 *
 * @param name      the node name//from w  w w .  j av a  2s  .c o m
 * @param predicate the predicate
 * @return the first object matching the predicate, or {@code null} if none is found
 * @throws IMObjectBeanException if the node doesn't exist
 */
public IMObject getValue(String name, Predicate predicate) {
    for (IMObject object : getValues(name)) {
        if (predicate.evaluate(object)) {
            return object;
        }
    }
    return null;
}

From source file:org.openvpms.component.business.service.archetype.helper.IMObjectBean.java

/**
 * Returns the source or target from the first relationship matching the specified criteria.
 * <p/>/*from   ww w.jav  a 2s  . c o  m*/
 * If active is {@code true} the object must be active in order to be returned.
 * <p/>
 * If active is {@code false}, then an active object will be returned in preference to an inactive one.
 *
 * @param relationships the relationships
 * @param predicate     the predicate
 * @param accessor      the relationship reference accessor
 * @param active        determines if the object must be active or not
 * @return the first object matching the criteria or {@code null} if none
 *         is found
 * @throws ArchetypeServiceException for any archetype service error
 */
protected <R extends IMObjectRelationship> IMObject getRelatedObject(Collection<R> relationships,
        Predicate predicate, RelationshipRef accessor, boolean active) {
    IMObject inactive = null;
    for (R relationship : relationships) {
        if (predicate.evaluate(relationship)) {
            IMObjectReference ref = accessor.transform(relationship);
            IMObject object = resolve(ref);
            if (object != null) {
                if (object.isActive()) {
                    // found a match, so return it
                    return object;
                } else if (!active) {
                    // can return inactive, but keep looking for an active
                    // match
                    inactive = object;
                }
            }
        }
    }
    // no active match found
    return (!active && inactive != null) ? inactive : null;
}

From source file:org.openvpms.component.business.service.archetype.helper.IMObjectBean.java

/**
 * Returns the first object reference from the supplied relationship that matches the specified criteria.
 *
 * @param relationships the relationships
 * @param predicate     the criteria. May be {@code null}
 * @param accessor      the relationship reference accessor
 * @return the matching reference, or {@code null}
 *///from  w  ww .j ava 2  s  . c om
protected <R extends IMObjectRelationship> IMObjectReference getRelatedRef(Collection<R> relationships,
        Predicate predicate, RelationshipRef accessor) {
    for (R relationship : relationships) {
        if (predicate == null || predicate.evaluate(relationship)) {
            IMObjectReference reference = accessor.transform(relationship);
            if (reference != null) {
                return reference;
            }
        }
    }
    return null;
}

From source file:org.openvpms.component.business.service.archetype.helper.IMObjectBean.java

/**
 * Selects all objects matching a predicate.
 *
 * @param objects   the objects to match
 * @param predicate the predicate/*  w  ww  .  j  av  a2  s .  c o m*/
 * @return the objects matching the predicate
 */
protected <T> List<T> select(Collection<T> objects, Predicate predicate) {
    List<T> result = new ArrayList<T>();
    for (T object : objects) {
        if (predicate.evaluate(object)) {
            result.add(object);
        }
    }
    return result;
}

From source file:org.openvpms.component.business.service.archetype.helper.IMObjectBean.java

/**
 * Selects the first objects matching a predicate.
 *
 * @param objects   the objects to match
 * @param predicate the predicate// ww w. ja v  a2s  . c o  m
 * @return the first object matching the predicate or {@code null} if none is found
 */
protected <T> T selectFirst(Collection<T> objects, Predicate predicate) {
    for (T object : objects) {
        if (predicate.evaluate(object)) {
            return object;
        }
    }
    return null;
}