1 package org.apache.helix.alerts;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.ArrayList;
23 import java.util.Iterator;
24 import java.util.List;
25
26 public class SumOperator extends Operator {
27
28 public SumOperator() {
29 minInputTupleLists = 1;
30 maxInputTupleLists = Integer.MAX_VALUE;
31 inputOutputTupleListsCountsEqual = false;
32 numOutputTupleLists = 1;
33 }
34
35
36 public List<Iterator<Tuple<String>>> singleSetToIter(ArrayList<Tuple<String>> input)
37 {
38 List out = new ArrayList();
39 out.add(input.iterator());
40 return out;
41 }
42
43 @Override
44 public List<Iterator<Tuple<String>>> execute(List<Iterator<Tuple<String>>> input) {
45 ArrayList<Tuple<String>> output = new ArrayList<Tuple<String>>();
46 if (input == null || input.size() == 0) {
47 return singleSetToIter(output);
48 }
49 while (true) {
50 Tuple<String> rowSum = null;
51 for (Iterator<Tuple<String>> it : input) {
52 if (!it.hasNext()) {
53 return singleSetToIter(output);
54 }
55 rowSum = sumTuples(rowSum, it.next());
56 }
57 output.add(rowSum);
58 }
59 }
60 }