package hydrograph.engine.transformation.userfunctions.groupcombine; import hydrograph.engine.transformation.schema.DataType; import hydrograph.engine.transformation.schema.Field; import hydrograph.engine.transformation.schema.Schema; import hydrograph.engine.transformation.userfunctions.base.GroupCombineTransformBase; import hydrograph.engine.transformation.userfunctions.base.ReusableRow; /** * The Class Max. * * @author Bitwise * */ public class Max implements GroupCombineTransformBase { @Override public Schema initBufferSchema(Schema inputSchema, Schema outputSchema) { DataType type = inputSchema.getSchema().values().iterator().next().getFieldType(); Field max = new Field.Builder("max", type).build(); Schema schema = new Schema(); schema.addField(max); return schema; } @Override public void initialize(ReusableRow bufferRow) { bufferRow.setField(0, null); } @Override public void update(ReusableRow bufferRow, ReusableRow inputRow) { if (bufferRow.getField(0)==null){ bufferRow.setField(0,inputRow.getField(0)); }else{ if (bufferRow.getField(0).compareTo(inputRow.getField(0)) <0){ bufferRow.setField(0,inputRow.getField(0)); } } } @Override public void merge(ReusableRow bufferRow1, ReusableRow bufferRow2) { if (bufferRow1.getField(0)==null){ bufferRow1.setField(0,bufferRow2.getField(0)); }else if (bufferRow2.getField(0)==null) { }else{ if (bufferRow1.getField(0).compareTo(bufferRow2.getField(0)) <0){ bufferRow1.setField(0,bufferRow2.getField(0)); } } } @Override public void evaluate(ReusableRow bufferRow, ReusableRow outRow) { outRow.setField(0, bufferRow.getField(0)); } }