Initial import into git.
[galago.git] / java / pig-galago / src / com / yahoo / pig / impl / eval / window / TupleWindowSpec.java
blobd34db5937ed3fbe935a6aa954fe1f56e8d3d232a
1 /*
2 * Copyright (c) 2007 Yahoo! Inc. All rights reserved.
3 * See accompanying LICENSE file.
4 */
5 package com.yahoo.pig.impl.eval.window;
7 import java.io.IOException;
8 import java.util.*;
10 import com.yahoo.pig.data.*;
12 public class TupleWindowSpec extends WindowSpec {
13 int numTuples;
14 List<Tuple> window;
16 public TupleWindowSpec(windowType type, int numTuples){
17 super(type);
18 this.numTuples = numTuples;
19 window = new LinkedList<Tuple>();
22 @Override
23 public DataCollector collector(final DataCollector output) {
24 return new DataCollector() {
26 public void add(Tuple t) throws IOException {
27 if (t!=null){
29 if (t instanceof TimestampedTuple){
30 if (((TimestampedTuple) t).isHeartbeat) return;
33 window.add(t);
34 while (window.size() > numTuples) {
35 window.remove(0);
41 // emit entire window content to output collector
42 for (Iterator<Tuple> it = window.iterator(); it.hasNext(); ) {
43 output.add(it.next());
46 output.add(null);