/* * * * Copyright (c) 2011-2015 EPFL DATA Laboratory * * Copyright (c) 2014-2015 The Squall Collaboration (see NOTICE) * * * * All rights reserved. * * * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * * limitations under the License. * */ package ch.epfl.data.squall.operators; import java.util.List; public interface AggregateStream { /** * <p> * Process input tuple and output the update tuples as a result * If the withMultiplicty flag is enabled, the update tuples must contain the multiplicity field. * Otherwise, the update tuple's value is the delta change. * </p> * <p> * Example: * Current tuple in the storage: (4, 5, 2) with groupByColumns: (0, 1). * When there is a new incoming tuple and after processing, the map becomes (4, 5, 5). * The output is: * <ul> * <li> * withMultiplicity: (4, 5, 2, -1), (4, 5, 5, 1) * </li> * <li> * without multiplicity: (4, 5, 3) * </li> * </ul> * </p> * @param tuple * @param withMultiplicity * @return */ public List<List<String>> updateStream(List<String> tuple, boolean withMultiplicity); }