package hydrograph.engine.testing.utils; import hydrograph.engine.transformation.userfunctions.base.NormalizeTransformBase; import hydrograph.engine.transformation.userfunctions.base.OutputDispatcher; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.Properties; /** * The Class TestNormalizeOperationWrapper. * * @author Bitwise */ public class TestNormalizeOperationWrapper { public static Object[][] callNormalizeOperation(NormalizeTransformBase norm, Properties props, ArrayList<String> inputFieldsName, ArrayList<String> outputFieldsName, Object[][] inputData) { List<TestReusableRow> inputReusableRowList = new ArrayList<>(); for(Object[] data:inputData){ 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()]); norm.prepare(props); List<TestReusableRow> outputReusableRowList = normalize(norm, inputReusableRowList, outputReusableRow, outputFieldsName); Object[][] outputData=new Object[outputReusableRowList.size()][outputFieldsName.size()]; for(int j=0; j<outputReusableRowList.size();j++ ) for(int i=0;i<outputFieldsName.size();i++){ outputData[j][i]=outputReusableRowList.get(j).getField(i); } return outputData; } private static List<TestReusableRow> normalize(NormalizeTransformBase norm, List<TestReusableRow> inputReusableRowList, TestReusableRow outputReusableRow, ArrayList<String> outputFieldsName) { List<TestReusableRow> outputList = new ArrayList<TestReusableRow>(); NormalizeOutputCollector outputDispatcher = new NormalizeOutputCollector(outputReusableRow, outputFieldsName); for(int i=0;i<inputReusableRowList.size();i++){ outputDispatcher.initialize(); norm.Normalize(inputReusableRowList.get(i), outputReusableRow, outputDispatcher); outputList.addAll(outputDispatcher.getOutRows()); } norm.cleanup(); return outputList; } } class NormalizeOutputCollector implements OutputDispatcher { List<TestReusableRow> outputReusableRowList;// = new ArrayList<TestReusableRow>(); TestReusableRow outputReusableRow; ArrayList<String> outputFieldsName; NormalizeOutputCollector(TestReusableRow x,ArrayList<String> y) { outputReusableRow = x; outputFieldsName=y; } public void initialize() { outputReusableRowList = new ArrayList<TestReusableRow>(); } public List<TestReusableRow> getOutRows() { return outputReusableRowList; } public void sendOutput() { /* for(int i=0; i<outputReusableRowList.size();i++) { System.out.println("1-->" + outputReusableRowList.get(i)); System.out.println("2-->" + outputReusableRowList.get(i).hashCode()); } System.out.println("3-->" + outputReusableRow.hashCode()); */ TestReusableRow temp = new TestReusableRow(outputReusableRow); // System.out.println("4-->" + temp.hashCode()); outputReusableRowList.add(temp); /* for(int i=0; i<outputReusableRowList.size();i++) { System.out.println("5-->" + outputReusableRowList.get(i)); System.out.println("6-->" + outputReusableRowList.get(i).hashCode()); } System.out.println("");*/ } }