package eu.stratosphere.sopremo.base.join;
import eu.stratosphere.sopremo.pact.JsonCollector;
import eu.stratosphere.sopremo.pact.SopremoCoGroup;
import eu.stratosphere.sopremo.type.ArrayNode;
import eu.stratosphere.sopremo.type.IArrayNode;
import eu.stratosphere.sopremo.type.IJsonNode;
import eu.stratosphere.sopremo.type.NullNode;
public class SemiJoin extends TwoSourceJoinBase<SemiJoin> {
private static final long serialVersionUID = -7624313431291367616L;
/**
* Initializes SemiJoin.
*/
public SemiJoin() {
this.setKeyExpressions(0, ALL_KEYS);
this.setKeyExpressions(1, ALL_KEYS);
}
public static class Implementation extends SopremoCoGroup {
private IArrayNode result = new ArrayNode(NullNode.getInstance());
@Override
protected void coGroup(IArrayNode values1, IArrayNode values2, JsonCollector out) {
if (!values2.isEmpty())
for (final IJsonNode value : values1) {
this.result.set(0, value);
out.collect(this.result);
}
}
}
}