/** * Creates a new instance without any data quanta. */ public static <T> CollectionSource<T> singleton(T value, Class<T> typeClass) { final CollectionSource<T> instance = new CollectionSource<>(Collections.singleton(value), typeClass); instance.setName("{" + value + "}"); return instance; } }
/** * Copies an instance (exclusive of broadcasts). * * @param that that should be copied */ public CollectionSource(CollectionSource that) { super(that); this.collection = that.getCollection(); }
private SubplanPattern createSubplanPattern() { final OperatorPattern operatorPattern = new OperatorPattern( "source", new CollectionSource(Collections.emptyList(), DataSetType.none()), false ); return SubplanPattern.createSingleton(operatorPattern); }
@Override public Optional<CardinalityEstimator> createCardinalityEstimator( final int outputIndex, final Configuration configuration) { Validate.inclusiveBetween(0, this.getNumOutputs() - 1, outputIndex); return Optional.of(new DefaultCardinalityEstimator(1d, this.getNumInputs(), this.isSupportingBroadcastInputs(), inputCards -> this.collection.size())); }
final CollectionSource<Integer> incSource = CollectionSource.singleton(0, Integer.class); incSource.setName(String.format("%s (init)", repeatOperator.getName())); increment.setName(String.format("%s (inc)", repeatOperator.getName())); incSource.connectTo(0, loopOperator, LoopOperator.INITIAL_CONVERGENCE_INPUT_INDEX); loopOperator.connectTo(LoopOperator.ITERATION_CONVERGENCE_OUTPUT_INDEX, increment, 0); increment.connectTo(0, loopOperator, LoopOperator.ITERATION_CONVERGENCE_INPUT_INDEX);
private SubplanPattern createSubplanPattern() { final OperatorPattern operatorPattern = new OperatorPattern( "source", new CollectionSource(Collections.emptyList(), DataSetType.none()), false ); return SubplanPattern.createSingleton(operatorPattern); }
/** * Creates a new instance without any data quanta. */ public static <T> CollectionSource<T> empty(Class<T> typeClass) { final CollectionSource<T> instance = new CollectionSource<>(Collections.emptyList(), typeClass); instance.setName("{}"); return instance; }