/** * Organizes the given list of items in (hierarchy of) groups based on the given grouping conditions * @param conditions The conditions that define how the items have to be grouped * @return The items grouped by the given conditions */ public LambdaGroup<T> group(GroupCondition<?>... conditions) { return new LambdaGroup(Lambda.group(innerIterable, conditions)); }
private List<Message> optimize(List<Message> messages){ long t = System.currentTimeMillis(); List<Message> result = new ArrayList<>(); Group<Message> groups = group(messages, by(on(Message.class).getId())); for (Group<Message> group :groups.subgroups()){ result.addAll(group.first().shrink(group.findAll())); } if (logger.isDebugEnabled()) logger.debug("bulk optimization result: " + messages.size() + " -> " + result.size() + " in " + (System.currentTimeMillis()-t) + " ms"); return result; }
private List<Message> optimize(List<Message> messages){ long t = System.currentTimeMillis(); List<Message> result = new ArrayList<>(); Group<Message> groups = group(messages, by(on(Message.class).getId())); for (Group<Message> group :groups.subgroups()){ result.addAll(group.first().shrink(group.findAll())); } if (logger.isDebugEnabled()) logger.debug("bulk optimization result: " + messages.size() + " -> " + result.size() + " in " + (System.currentTimeMillis()-t) + " ms"); return result; }
public Map<String, List<StepData>> aggregate() { Map<String, List<StepData>> branchesDataByPath = new HashMap<>(); Group<LanguageEventData> groups = group(getEvents(), by(on(LanguageEventData.class).getPath())); for (Group<LanguageEventData> subGroup : groups.subgroups()) { List<StepData> branchesData = buildBranchesData(subGroup.findAll()); branchesDataByPath.put(branchesData.get(0).getPath(), branchesData); } return branchesDataByPath; }
public Map<String, StepData> aggregate() { Map<String, StepData> joinDataByPath = new HashMap<>(); Group<LanguageEventData> groups = group(getEvents(), by(on(LanguageEventData.class).getPath())); for (Group<LanguageEventData> subGroup : groups.subgroups()) { StepData joinData = buildPublishAggregateData(subGroup.first()); joinDataByPath.put(joinData.getPath(), joinData); } return joinDataByPath; }
public Map<String, StepData> aggregate() { Map<String, StepData> stepsData = new HashMap<>(); Group<LanguageEventData> groups = group(getEvents(), by(on(LanguageEventData.class).getPath())); for (Group<LanguageEventData> subGroup : groups.subgroups()) { StepData stepData = buildStepData(subGroup.findAll()); stepsData.put(stepData.getPath(), stepData); } return stepsData; }