[
https://issues.apache.org/jira/browse/QUARKS-18?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15195483#comment-15195483
]
ASF GitHub Bot commented on QUARKS-18:
--------------------------------------
Github user ddebrunner commented on a diff in the pull request:
https://github.com/apache/incubator-quarks/pull/11#discussion_r56183501
--- Diff:
spi/topology/src/main/java/quarks/topology/spi/graph/ConnectorStream.java ---
@@ -96,6 +89,35 @@ protected Graph graph() {
}
@Override
+ public <E extends Enum<E>> EnumMap<E,TStream<T>> split(Class<E>
enumClass, Function<T, E> splitter) {
+
+ E[] es = enumClass.getEnumConstants();
+
+/*
+ List<TStream<T>> outputs = split(es.length, e ->
IntStream.range(0, es.length).filter(i-> es[i].equals(splitter.apply(e)))
+ .mapToObj(i -> es[i].ordinal()).findAny().orElse(-1));
+*/
+
+ List<TStream<T>> outputs = split(es.length, new ToIntFunction<T>()
{
--- End diff --
The function is incorrect as it can call the splitter function multiple
times, I think it can be simplified to something like:
```
t -> {E split = spitter.apply(t); return split != null ? split.ordinal() :
-1;}
```
which also implies that when the splitter returns null that the tuple is
discard which should be documented in the api method's javadoc.
> Split function based upon an enumeration.
> -----------------------------------------
>
> Key: QUARKS-18
> URL: https://issues.apache.org/jira/browse/QUARKS-18
> Project: Quarks
> Issue Type: Improvement
> Components: API
> Reporter: Daniel John Debrunner
> Priority: Minor
> Labels: newbie
> Attachments: SplitWithEnum_Screenshot.png
>
>
> An enum based split would be useful.
> Something like:
> <E> List<TStream<T>> split(Class<E> enumClass, Function<T,E> splitter)
> So the stream is split by the enum value with the returned streams in ordinal
> order.
> This may have the benefit of being self-maintaining, so that if an enum value
> is added, the returned number of streams changes automatically, but only if
> given an enum class one can figure out the number of enums.
> Based upon looking at the sample code in QUARKS-16
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)