package org.nuunframework.universalvisitor.core; import org.nuunframework.universalvisitor.api.Job; import org.nuunframework.universalvisitor.api.MapReduce; import org.nuunframework.universalvisitor.api.Reducer; public class JobDefault<R> implements Job<R>{ private MapReduce<?>[] mapReduces; private Reducer<Object, R> resultReducer; @SuppressWarnings("rawtypes") public JobDefault(MapReduce ...mapReduces ) { this.mapReduces = mapReduces; } @SuppressWarnings("rawtypes") public JobDefault(Reducer<Object, R> resultReducer , MapReduce ...mapReduces ) { this.resultReducer = resultReducer; this.mapReduces = mapReduces; } @Override public MapReduce<?>[] mapReduces() { return mapReduces; } @Override public R result() { for (MapReduce<?> mapReduce : mapReduces) { resultReducer.collect( mapReduce.aggregate() ); } return resultReducer.reduce(); } }