2019-05-23 17:03:44 +02:00
|
|
|
package eu.eudat.queryable.collector;
|
|
|
|
|
2021-09-30 17:02:53 +02:00
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
2019-05-23 17:03:44 +02:00
|
|
|
import javax.persistence.Tuple;
|
2021-09-30 17:02:53 +02:00
|
|
|
import java.util.HashMap;
|
2019-05-23 17:03:44 +02:00
|
|
|
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) {
|
2021-09-30 17:02:53 +02:00
|
|
|
return results.stream().map(tuple -> {
|
|
|
|
Map<String, Object> parsedResult = new HashMap<>();
|
|
|
|
tuple.getElements().forEach(tupleElement -> parsedResult.put(tupleElement.getAlias(), tuple.get(tupleElement.getAlias())));
|
|
|
|
return parsedResult;
|
|
|
|
}).collect(Collectors.toList());/*groupedResults.keySet().stream()
|
2019-05-23 17:03:44 +02:00
|
|
|
.map(x -> buildOne(groupedResults.get(x), fields, key))
|
2021-09-30 17:02:53 +02:00
|
|
|
.collect(Collectors.toList());*/
|
2019-05-23 17:03:44 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|