List of usage examples for org.apache.commons.collections4 Predicate evaluate
boolean evaluate(T object);
From source file:com.feilong.core.util.AggregateUtil.java
/** * <code>objectCollection</code>,?? <code>includePredicate</code>, <code>propertyName</code>. * /*from w w w . j av a 2 s . c o m*/ * <p> * {@link LinkedHashMap},key<code>propertyName</code>,value;<br> * ? objectCollection <code>propertyName</code>? * </p> * * <h3>:</h3> * * <blockquote> * * <pre class="code"> * * List{@code <User>} list = new ArrayList{@code <User>}(); * list.add(new User("", 20)); * list.add(new User("", 30)); * list.add(new User("", 40)); * list.add(new User("", 50)); * * Map{@code <String, Integer>} map = AggregateUtil.groupCount(list, "name", new Predicate{@code <User>}(){ * {@code @Override} * public boolean evaluate(User user){ * return user.getAge() {@code >} 30; * } * }); * LOGGER.debug(JsonUtil.format(map)); * * </pre> * * <b>:</b> * * <pre class="code"> * { * "": 1, * "": 1 * } * * </pre> * * </blockquote> * * @param <T> * the generic type * @param <O> * the generic type * @param objectCollection * the object collection * @param propertyName * O??,Possibly indexed and/or nested name of the property to be modified,?? * <a href="../bean/BeanUtil.html#propertyName">propertyName</a> * @param includePredicate * ? ? <code>includePredicate</code>,null ?Object * @return <code>objectCollection</code> nullempty, {@link Collections#emptyMap()}<br> * <code>propertyName</code> null, {@link NullPointerException}<br> * <code>propertyName</code> blank, {@link IllegalArgumentException} * @see org.apache.commons.collections4.CollectionUtils#getCardinalityMap(Iterable) */ public static <T, O> Map<T, Integer> groupCount(Collection<O> objectCollection, String propertyName, Predicate<O> includePredicate) { if (isNullOrEmpty(objectCollection)) { return Collections.emptyMap(); } Validate.notBlank(propertyName, "propertyName can't be null/empty!"); Map<T, Integer> map = new LinkedHashMap<T, Integer>(); for (O obj : objectCollection) { if (null != includePredicate && !includePredicate.evaluate(obj)) { continue; } MapUtil.putSumValue(map, PropertyUtil.<T>getProperty(obj, propertyName), 1); } return map; }
From source file:com.feilong.core.util.AggregateUtil.java
/** * <code>objectCollection</code>,???? <code>includePredicate</code> <code>propertyNames</code> ,. * /*w ww . j a va 2 s . co m*/ * <p> * ???null,0,? * </p> * * * <h3>:</h3> * * <blockquote> * * <pre class="code"> * User user1 = new User(10L); * user1.setName(""); * user1.setAge(50); * * User user2 = new User(20L); * user1.setName(""); * user2.setAge(50); * * User user3 = new User(100L); * user3.setName(""); * user3.setAge(100); * * List{@code <User>} list = toList(user1, user2, user3); * Map{@code <String, BigDecimal>} map = AggregateUtil.sum(list, ConvertUtil.toArray("id", "age"), new Predicate{@code <User>}(){ * * {@code @Override} * public boolean evaluate(User user){ * return !"".equals(user.getName()); * } * }); * LOGGER.debug(JsonUtil.format(map)); * * </pre> * * <b>:</b> * * <pre class="code"> * { * "id": 30, * "age": 100 * } * </pre> * * </blockquote> * * @param <O> * the generic type * @param objectCollection * the object collection * @param propertyNames * O??,Possibly indexed and/or nested name of the property to be modified,?? * <a href="../bean/BeanUtil.html#propertyName">propertyName</a> * @param includePredicate * the include predicate * @return <code>objectCollection</code> nullempty, {@link Collections#emptyMap()}<br> * <code>propertyNames</code> null {@link NullPointerException} <br> * <code>propertyNames</code> null {@link IllegalArgumentException}<br> */ public static <O> Map<String, BigDecimal> sum(Collection<O> objectCollection, String[] propertyNames, Predicate<O> includePredicate) { if (isNullOrEmpty(objectCollection)) { return Collections.emptyMap(); } Validate.noNullElements(propertyNames, "propertyNames can't be null/empty!"); Map<String, BigDecimal> sumMap = newLinkedHashMap(objectCollection.size()); for (O obj : objectCollection) { if (null != includePredicate && !includePredicate.evaluate(obj)) { continue; } for (String propertyName : propertyNames) { //???null,0 BigDecimal addValue = NumberUtil.getAddValue(ObjectUtils.defaultIfNull(sumMap.get(propertyName), 0), ObjectUtils.defaultIfNull(PropertyUtil.<Number>getProperty(obj, propertyName), 0)); sumMap.put(propertyName, addValue); } } return sumMap; }
From source file:com.link_intersystems.lang.reflect.DeclaringClassMemberPredicateTest.java
@Test public void evaluateFalse() throws SecurityException, NoSuchMethodException, NoSuchFieldException { Predicate declaringClassMemberPredicate = ReflectFacade.getDeclaringClassPredicate(JComponent.class); Method declaredMethod = Container.class.getDeclaredMethod("getPreferredSize"); boolean evaluate = declaringClassMemberPredicate.evaluate(declaredMethod); assertFalse(evaluate);/* w w w . j av a 2s . c o m*/ Constructor<Container> declaredConstructor = Container.class.getDeclaredConstructor(); evaluate = declaringClassMemberPredicate.evaluate(declaredConstructor); assertFalse(evaluate); Field declaredField = Container.class.getDeclaredField("INCLUDE_SELF"); evaluate = declaringClassMemberPredicate.evaluate(declaredField); assertFalse(evaluate); }
From source file:com.link_intersystems.lang.reflect.DeclaringClassMemberPredicateTest.java
@Test public void evaluateTrue() throws SecurityException, NoSuchMethodException, NoSuchFieldException { Predicate declaringClassMemberPredicate = ReflectFacade.getDeclaringClassPredicate(JComponent.class); Method declaredMethod = JComponent.class.getDeclaredMethod("getPreferredSize"); boolean evaluate = declaringClassMemberPredicate.evaluate(declaredMethod); assertTrue(evaluate);// w ww . j a va 2s . c o m Constructor<JComponent> declaredConstructor = JComponent.class.getDeclaredConstructor(); evaluate = declaringClassMemberPredicate.evaluate(declaredConstructor); assertTrue(evaluate); Field declaredField = JComponent.class.getDeclaredField("WHEN_FOCUSED"); evaluate = declaringClassMemberPredicate.evaluate(declaredField); assertTrue(evaluate); }
From source file:com.feilong.core.util.AggregateUtilTest.java
/** * TestStatisticsUtilTest.//from w w w . j a va2 s . com */ @Test public void testStatisticsUtilTest() { String[] planets = { "Mercury", "Venus", "Earth", "Mars" }; Comparator<String> distanceFromSun = new FixedOrderComparator<>(planets); Predicate<String> predicate = new ComparatorPredicate<String>("Venus", distanceFromSun, Criterion.GREATER); LOGGER.debug("{}", predicate.evaluate("Earth")); }
From source file:com.sunchenbin.store.feilong.core.util.CollectionsUtil.java
/** * <code>objectCollection</code>,? ? <code>includePredicate</code>, {@code propertyName}. * * @param <T>/*w w w .j a va 2 s . c o m*/ * the generic type * @param <O> * the generic type * @param objectCollection * the object collection * @param includePredicate * ? ? <code>includePredicate</code>,null ?Object * @param propertyName * the property name * @return the map< t, integer> * @since 1.2.0 */ public static <T, O> Map<T, Integer> groupCount(Collection<O> objectCollection, Predicate<O> includePredicate, String propertyName) { if (Validator.isNullOrEmpty(objectCollection)) { throw new NullPointerException("objectCollection can't be null/empty!"); } if (Validator.isNullOrEmpty(propertyName)) { throw new NullPointerException("propertyName is null or empty!"); } Map<T, Integer> map = new LinkedHashMap<T, Integer>(); for (O o : objectCollection) { if (null != includePredicate) { // boolean continueFlag = !includePredicate.evaluate(o); if (continueFlag) { continue; } } T t = PropertyUtil.getProperty(o, propertyName); Integer count = map.get(t); if (null == count) { count = 0; } count = count + 1; map.put(t, count); } return map; }
From source file:com.haulmont.cuba.core.app.cache.CacheSet.java
public Pair<Integer, Integer> countConjunction(Collection<Predicate> selectors, Predicate amplifyingSelector) { checkNotNull(selectors);//from ww w . j a v a 2 s .co m checkNotNull(amplifyingSelector); ConjunctionPredicate conjunctionPredicate = new ConjunctionPredicate(selectors); int count1 = 0; int count2 = 0; for (Object item : items) { if (conjunctionPredicate.evaluate(item)) { count1++; if (amplifyingSelector.evaluate(item)) { count2++; } } } return new Pair<>(count1, count2); }
From source file:com.link_intersystems.lang.reflect.ReflectFacade.java
public boolean evaluate(T object) { Predicate<T> predicate = serializablePredicate.get(); boolean result = predicate.evaluate(object); return result; }
From source file:com.feilong.core.util.CollectionsUtil.java
/** * <code>objectCollection</code>,?? <code>includePredicate</code>,(propertyName?,,list? putmap). * //ww w . j a va2s . c om * <p> * {@link LinkedHashMap},key <code>objectCollection</code> <code>propertyName</code>,value <code>objectCollection</code> * ; * <br> * ? <code>objectCollection</code> <code>propertyName</code>? * </p> * * <h3>:</h3> * <blockquote> * * <pre class="code"> List{@code <User>} list = new ArrayList{@code <User>}(); list.add(new User("", 10)); list.add(new User("", 28)); list.add(new User("", 32)); list.add(new User("", 30)); list.add(new User("", 10)); Map{@code <String, List<User>>} map = CollectionsUtil.group(list, "name", new Predicate{@code <User>}(){ {@code @Override} public boolean evaluate(User user){ return user.getAge() {@code >} 20; } }); LOGGER.info(JsonUtil.format(map)); * </pre> * * : * * <pre class="code"> { "": [{ "age": 28, "name": "" }], "": [{ "age": 32, "name": "" },{ "age": 30, "name": "" } ] } * </pre> * * ,?,??: * * <pre class="code"> * Predicate{@code <User>} comparatorPredicate = BeanPredicateUtil.comparatorPredicate("age", 20, Criterion.LESS); * Map{@code <String, List<User>>} map = CollectionsUtil.group(list, "name", comparatorPredicate); * </pre> * * ?? * {@link com.feilong.core.util.predicate.BeanPredicateUtil#comparatorPredicate(String, Comparable, org.apache.commons.collections4.functors.ComparatorPredicate.Criterion)} * * </blockquote> * * @param <T> * ?,T,Object,excel?String,???Integer?,?? * @param <O> * the generic type * @param objectCollection * the object list * @param propertyName * O??,Possibly indexed and/or nested name of the property to be modified,?? * <a href="../bean/BeanUtil.html#propertyName">propertyName</a> * @param includePredicate * the include predicate * @return <code>objectCollection</code> nullempty, {@link Collections#emptyMap()}<br> * <code>propertyName</code> null, {@link NullPointerException}<br> * <code>propertyName</code> blank, {@link IllegalArgumentException}<br> * element match <code>includePredicate</code>, empty {@link LinkedHashMap}<br> * <code>includePredicate</code> null, * @see PropertyUtil#getProperty(Object, String) * @see #groupOne(Collection, String) * @since 1.5.5 */ public static <T, O> Map<T, List<O>> group(Collection<O> objectCollection, String propertyName, Predicate<O> includePredicate) { if (isNullOrEmpty(objectCollection)) { return Collections.emptyMap(); } Validate.notBlank(propertyName, "propertyName can't be null/empty!"); Map<T, List<O>> map = newLinkedHashMap(objectCollection.size()); for (O obj : objectCollection) { if (null != includePredicate && !includePredicate.evaluate(obj)) { continue; } MapUtil.putMultiValue(map, PropertyUtil.<T>getProperty(obj, propertyName), obj); } return map; }
From source file:org.apache.nifi.controller.FlowController.java
/** * Returns the status for the components in the specified group with the * specified report. The results will be filtered by executing the specified * predicate./*from w ww .ja v a 2s.c o m*/ * * @param group group id * @param statusReport report * @param isAuthorized is authorized check * @return the component status */ public ProcessGroupStatus getGroupStatus(final ProcessGroup group, final RepositoryStatusReport statusReport, final Predicate<Authorizable> isAuthorized) { if (group == null) { return null; } final ProcessGroupStatus status = new ProcessGroupStatus(); status.setId(group.getIdentifier()); status.setName(isAuthorized.evaluate(group) ? group.getName() : group.getIdentifier()); int activeGroupThreads = 0; long bytesRead = 0L; long bytesWritten = 0L; int queuedCount = 0; long queuedContentSize = 0L; int flowFilesIn = 0; long bytesIn = 0L; int flowFilesOut = 0; long bytesOut = 0L; int flowFilesReceived = 0; long bytesReceived = 0L; int flowFilesSent = 0; long bytesSent = 0L; int flowFilesTransferred = 0; long bytesTransferred = 0; // set status for processors final Collection<ProcessorStatus> processorStatusCollection = new ArrayList<>(); status.setProcessorStatus(processorStatusCollection); for (final ProcessorNode procNode : group.getProcessors()) { final ProcessorStatus procStat = getProcessorStatus(statusReport, procNode, isAuthorized); processorStatusCollection.add(procStat); activeGroupThreads += procStat.getActiveThreadCount(); bytesRead += procStat.getBytesRead(); bytesWritten += procStat.getBytesWritten(); flowFilesReceived += procStat.getFlowFilesReceived(); bytesReceived += procStat.getBytesReceived(); flowFilesSent += procStat.getFlowFilesSent(); bytesSent += procStat.getBytesSent(); } // set status for local child groups final Collection<ProcessGroupStatus> localChildGroupStatusCollection = new ArrayList<>(); status.setProcessGroupStatus(localChildGroupStatusCollection); for (final ProcessGroup childGroup : group.getProcessGroups()) { final ProcessGroupStatus childGroupStatus = getGroupStatus(childGroup, statusReport, isAuthorized); localChildGroupStatusCollection.add(childGroupStatus); activeGroupThreads += childGroupStatus.getActiveThreadCount(); bytesRead += childGroupStatus.getBytesRead(); bytesWritten += childGroupStatus.getBytesWritten(); queuedCount += childGroupStatus.getQueuedCount(); queuedContentSize += childGroupStatus.getQueuedContentSize(); flowFilesReceived += childGroupStatus.getFlowFilesReceived(); bytesReceived += childGroupStatus.getBytesReceived(); flowFilesSent += childGroupStatus.getFlowFilesSent(); bytesSent += childGroupStatus.getBytesSent(); flowFilesTransferred += childGroupStatus.getFlowFilesTransferred(); bytesTransferred += childGroupStatus.getBytesTransferred(); } // set status for remote child groups final Collection<RemoteProcessGroupStatus> remoteProcessGroupStatusCollection = new ArrayList<>(); status.setRemoteProcessGroupStatus(remoteProcessGroupStatusCollection); for (final RemoteProcessGroup remoteGroup : group.getRemoteProcessGroups()) { final RemoteProcessGroupStatus remoteStatus = createRemoteGroupStatus(remoteGroup, statusReport, isAuthorized); if (remoteStatus != null) { remoteProcessGroupStatusCollection.add(remoteStatus); flowFilesReceived += remoteStatus.getReceivedCount(); bytesReceived += remoteStatus.getReceivedContentSize(); flowFilesSent += remoteStatus.getSentCount(); bytesSent += remoteStatus.getSentContentSize(); } } // connection status final Collection<ConnectionStatus> connectionStatusCollection = new ArrayList<>(); status.setConnectionStatus(connectionStatusCollection); // get the connection and remote port status for (final Connection conn : group.getConnections()) { final boolean isConnectionAuthorized = isAuthorized.evaluate(conn); final boolean isSourceAuthorized = isAuthorized.evaluate(conn.getSource()); final boolean isDestinationAuthorized = isAuthorized.evaluate(conn.getDestination()); final ConnectionStatus connStatus = new ConnectionStatus(); connStatus.setId(conn.getIdentifier()); connStatus.setGroupId(conn.getProcessGroup().getIdentifier()); connStatus.setSourceId(conn.getSource().getIdentifier()); connStatus.setSourceName( isSourceAuthorized ? conn.getSource().getName() : conn.getSource().getIdentifier()); connStatus.setDestinationId(conn.getDestination().getIdentifier()); connStatus.setDestinationName(isDestinationAuthorized ? conn.getDestination().getName() : conn.getDestination().getIdentifier()); connStatus.setBackPressureDataSizeThreshold(conn.getFlowFileQueue().getBackPressureDataSizeThreshold()); connStatus.setBackPressureObjectThreshold(conn.getFlowFileQueue().getBackPressureObjectThreshold()); final FlowFileEvent connectionStatusReport = statusReport.getReportEntry(conn.getIdentifier()); if (connectionStatusReport != null) { connStatus.setInputBytes(connectionStatusReport.getContentSizeIn()); connStatus.setInputCount(connectionStatusReport.getFlowFilesIn()); connStatus.setOutputBytes(connectionStatusReport.getContentSizeOut()); connStatus.setOutputCount(connectionStatusReport.getFlowFilesOut()); flowFilesTransferred += connectionStatusReport.getFlowFilesIn() + connectionStatusReport.getFlowFilesOut(); bytesTransferred += connectionStatusReport.getContentSizeIn() + connectionStatusReport.getContentSizeOut(); } if (isConnectionAuthorized) { if (StringUtils.isNotBlank(conn.getName())) { connStatus.setName(conn.getName()); } else if (conn.getRelationships() != null && !conn.getRelationships().isEmpty()) { final Collection<String> relationships = new ArrayList<>(conn.getRelationships().size()); for (final Relationship relationship : conn.getRelationships()) { relationships.add(relationship.getName()); } connStatus.setName(StringUtils.join(relationships, ", ")); } } else { connStatus.setName(conn.getIdentifier()); } final QueueSize queueSize = conn.getFlowFileQueue().size(); final int connectionQueuedCount = queueSize.getObjectCount(); final long connectionQueuedBytes = queueSize.getByteCount(); if (connectionQueuedCount > 0) { connStatus.setQueuedBytes(connectionQueuedBytes); connStatus.setQueuedCount(connectionQueuedCount); } connectionStatusCollection.add(connStatus); queuedCount += connectionQueuedCount; queuedContentSize += connectionQueuedBytes; final Connectable source = conn.getSource(); if (ConnectableType.REMOTE_OUTPUT_PORT.equals(source.getConnectableType())) { final RemoteGroupPort remoteOutputPort = (RemoteGroupPort) source; activeGroupThreads += processScheduler.getActiveThreadCount(remoteOutputPort); } final Connectable destination = conn.getDestination(); if (ConnectableType.REMOTE_INPUT_PORT.equals(destination.getConnectableType())) { final RemoteGroupPort remoteInputPort = (RemoteGroupPort) destination; activeGroupThreads += processScheduler.getActiveThreadCount(remoteInputPort); } } // status for input ports final Collection<PortStatus> inputPortStatusCollection = new ArrayList<>(); status.setInputPortStatus(inputPortStatusCollection); final Set<Port> inputPorts = group.getInputPorts(); for (final Port port : inputPorts) { final boolean isInputPortAuthorized = isAuthorized.evaluate(port); final PortStatus portStatus = new PortStatus(); portStatus.setId(port.getIdentifier()); portStatus.setGroupId(port.getProcessGroup().getIdentifier()); portStatus.setName(isInputPortAuthorized ? port.getName() : port.getIdentifier()); portStatus.setActiveThreadCount(processScheduler.getActiveThreadCount(port)); // determine the run status if (ScheduledState.RUNNING.equals(port.getScheduledState())) { portStatus.setRunStatus(RunStatus.Running); } else if (ScheduledState.DISABLED.equals(port.getScheduledState())) { portStatus.setRunStatus(RunStatus.Disabled); } else if (!port.isValid()) { portStatus.setRunStatus(RunStatus.Invalid); } else { portStatus.setRunStatus(RunStatus.Stopped); } // special handling for root group ports if (port instanceof RootGroupPort) { final RootGroupPort rootGroupPort = (RootGroupPort) port; portStatus.setTransmitting(rootGroupPort.isTransmitting()); } final FlowFileEvent entry = statusReport.getReportEntries().get(port.getIdentifier()); if (entry == null) { portStatus.setInputBytes(0L); portStatus.setInputCount(0); portStatus.setOutputBytes(0L); portStatus.setOutputCount(0); } else { final int processedCount = entry.getFlowFilesOut(); final long numProcessedBytes = entry.getContentSizeOut(); portStatus.setOutputBytes(numProcessedBytes); portStatus.setOutputCount(processedCount); final int inputCount = entry.getFlowFilesIn(); final long inputBytes = entry.getContentSizeIn(); portStatus.setInputBytes(inputBytes); portStatus.setInputCount(inputCount); flowFilesIn += inputCount; bytesIn += inputBytes; bytesWritten += entry.getBytesWritten(); flowFilesReceived += entry.getFlowFilesReceived(); bytesReceived += entry.getBytesReceived(); } inputPortStatusCollection.add(portStatus); activeGroupThreads += portStatus.getActiveThreadCount(); } // status for output ports final Collection<PortStatus> outputPortStatusCollection = new ArrayList<>(); status.setOutputPortStatus(outputPortStatusCollection); final Set<Port> outputPorts = group.getOutputPorts(); for (final Port port : outputPorts) { final boolean isOutputPortAuthorized = isAuthorized.evaluate(port); final PortStatus portStatus = new PortStatus(); portStatus.setId(port.getIdentifier()); portStatus.setGroupId(port.getProcessGroup().getIdentifier()); portStatus.setName(isOutputPortAuthorized ? port.getName() : port.getIdentifier()); portStatus.setActiveThreadCount(processScheduler.getActiveThreadCount(port)); // determine the run status if (ScheduledState.RUNNING.equals(port.getScheduledState())) { portStatus.setRunStatus(RunStatus.Running); } else if (ScheduledState.DISABLED.equals(port.getScheduledState())) { portStatus.setRunStatus(RunStatus.Disabled); } else if (!port.isValid()) { portStatus.setRunStatus(RunStatus.Invalid); } else { portStatus.setRunStatus(RunStatus.Stopped); } // special handling for root group ports if (port instanceof RootGroupPort) { final RootGroupPort rootGroupPort = (RootGroupPort) port; portStatus.setTransmitting(rootGroupPort.isTransmitting()); } final FlowFileEvent entry = statusReport.getReportEntries().get(port.getIdentifier()); if (entry == null) { portStatus.setInputBytes(0L); portStatus.setInputCount(0); portStatus.setOutputBytes(0L); portStatus.setOutputCount(0); } else { final int processedCount = entry.getFlowFilesOut(); final long numProcessedBytes = entry.getContentSizeOut(); portStatus.setOutputBytes(numProcessedBytes); portStatus.setOutputCount(processedCount); final int inputCount = entry.getFlowFilesIn(); final long inputBytes = entry.getContentSizeIn(); portStatus.setInputBytes(inputBytes); portStatus.setInputCount(inputCount); bytesRead += entry.getBytesRead(); flowFilesOut += entry.getFlowFilesOut(); bytesOut += entry.getContentSizeOut(); flowFilesSent = entry.getFlowFilesSent(); bytesSent += entry.getBytesSent(); } outputPortStatusCollection.add(portStatus); activeGroupThreads += portStatus.getActiveThreadCount(); } for (final Funnel funnel : group.getFunnels()) { activeGroupThreads += processScheduler.getActiveThreadCount(funnel); } status.setActiveThreadCount(activeGroupThreads); status.setBytesRead(bytesRead); status.setBytesWritten(bytesWritten); status.setQueuedCount(queuedCount); status.setQueuedContentSize(queuedContentSize); status.setInputContentSize(bytesIn); status.setInputCount(flowFilesIn); status.setOutputContentSize(bytesOut); status.setOutputCount(flowFilesOut); status.setFlowFilesReceived(flowFilesReceived); status.setBytesReceived(bytesReceived); status.setFlowFilesSent(flowFilesSent); status.setBytesSent(bytesSent); status.setFlowFilesTransferred(flowFilesTransferred); status.setBytesTransferred(bytesTransferred); return status; }