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 MultiplyOperator extends Operator {
27
28 public MultiplyOperator() {
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
44
45 @Override
46 public List<Iterator<Tuple<String>>> execute(List<Iterator<Tuple<String>>> input) {
47 ArrayList<Tuple<String>> output = new ArrayList<Tuple<String>>();
48 if (input == null || input.size() == 0) {
49 return singleSetToIter(output);
50 }
51 while (true) {
52 Tuple<String> rowProduct = null;
53 for (Iterator<Tuple<String>> it : input) {
54 if (!it.hasNext()) {
55 return singleSetToIter(output);
56 }
57 rowProduct = multiplyTuples(rowProduct, it.next());
58 }
59 output.add(rowProduct);
60 }
61 }
62
63 }