1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.giraph.block_app.framework.block;
19
20 import java.util.Arrays;
21 import java.util.Iterator;
22 import java.util.List;
23
24 import org.apache.giraph.block_app.framework.piece.AbstractPiece;
25 import org.apache.giraph.function.Consumer;
26
27 import com.google.common.collect.Iterables;
28
29
30
31
32 @SuppressWarnings("rawtypes")
33 public final class SequenceBlock implements Block {
34 private final Block[] blocks;
35
36 public SequenceBlock(Block... blocks) {
37 this.blocks = blocks.clone();
38 }
39
40 public SequenceBlock(List<? extends Block> blocks) {
41 this.blocks = blocks.toArray(new Block[blocks.size()]);
42 }
43
44 @Override
45 public Iterator<AbstractPiece> iterator() {
46 return Iterables.concat(Arrays.asList(blocks)).iterator();
47 }
48
49 @Override
50 public void forAllPossiblePieces(Consumer<AbstractPiece> consumer) {
51 for (Block block : blocks) {
52 block.forAllPossiblePieces(consumer);
53 }
54 }
55
56 @Override
57 public PieceCount getPieceCount() {
58 PieceCount ret = new PieceCount(0);
59 for (Block block : blocks) {
60 ret.add(block.getPieceCount());
61 }
62 return ret;
63 }
64
65 @Override
66 public String toString() {
67 return "SequenceBlock" + Arrays.toString(blocks);
68 }
69 }