package hydrograph.engine.testing.utils; import hydrograph.engine.transformation.userfunctions.base.AggregateTransformBase; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.Properties; /** * The Class TestAggregateOperationWrapper. * * @author Bitwise */ public class TestAggregateOperationWrapper { public static Object[] callAggregateOperation(AggregateTransformBase aggr, Properties props, ArrayList<String> inputFieldsName, ArrayList<String> outputFieldsName, ArrayList<String> keyFieldsName, Object[][] inputGroup) { List<TestReusableRow> inputReusableRowList = new ArrayList<>(); for(Object[] data:inputGroup){ TestReusableRow reusableRow=new TestReusableRow(new LinkedHashSet<>(inputFieldsName)); reusableRow.setRow(data); inputReusableRowList.add(reusableRow); } TestReusableRow outputReusableRow=new TestReusableRow(new LinkedHashSet<>(outputFieldsName)); outputReusableRow.setRow(new Object[outputFieldsName.size()]); aggr.prepare(props, inputFieldsName, outputFieldsName, keyFieldsName); aggregate(aggr, inputReusableRowList, outputReusableRow); aggr.cleanup(); Object[] outputDataRow=new Object[outputFieldsName.size()]; for(int i=0;i<outputFieldsName.size();i++){ outputDataRow[i]=outputReusableRow.getField(i); } return outputDataRow; } private static void aggregate(AggregateTransformBase aggr, List<TestReusableRow> inputReusableRowList, TestReusableRow outputReusableRow) { for(int i=0;i<inputReusableRowList.size();i++){ aggr.aggregate(inputReusableRowList.get(i)); } aggr.onCompleteGroup(outputReusableRow); } }