argos/dmp-backend/queryable/src/main/java/eu/eudat/queryable/collector/Collector.java

30 lines
1011 B
Java

package eu.eudat.queryable.collector;
import javax.persistence.Tuple;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Collector {
public List<Map> buildFromTuple(List<Tuple> results, Map<Object, List<Tuple>> groupedResults, List<String> fields, String key) {
return groupedResults.keySet().stream()
.map(x -> buildOne(groupedResults.get(x), fields, key))
.collect(Collectors.toList());
}
private Map buildOne(List<Tuple> tuples, List<String> fields, String key) {
Map tupleValues = new LinkedHashMap();
List<ProjectionField> projectionFields = fields.stream()
.map(x -> x.split("\\."))
.collect(Collectors.groupingBy(x -> x[0]))
.values()
.stream()
.map(field -> new ProjectionField(field.stream().map(x -> String.join(".", x)).collect(Collectors.toList()), null))
.collect(Collectors.toList());
projectionFields.forEach(x -> x.collect(tupleValues, tuples));
return tupleValues;
}
}