List of usage examples for org.apache.commons.collections Predicate evaluate
public boolean evaluate(T object);
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; }